v4.0
Returns or sets whether the custom operator is always evaluated
on each request for data as a Boolean (true to always evaluate). This
property is off by default, which means that Softimage will not
consider the custom operator as needing a new evaluation unless the
operator's input or parameters change. However this optimization is
not suitable for some simulation-style operators, in which case
this property should be set to true.
Note: Because of the "lazy-evaluation" pull model of Softimage this
property does not guarantee that the operator will actual evaluate
at each frame - it is still necessary for the UI, a script,
rendering or some dependent object to request the operator's
output.
The recommended callback for setting this property in a
Self-Installed Custom Operator is in the _Define callback.
Note: You can read this property from within the update function of
a custom operator but setting this property is blocked.
// get accessor Boolean rtn = CustomOperator.AlwaysEvaluate; // set accessor CustomOperator.AlwaysEvaluate = Boolean; |
NewScene( null, false ); var null1 = GetPrim("null"); SetExpr( null1.posx, "10"); var sop = null1.posx.AddScriptedOp( MyExpr_Update.toString(), null,"MyExpr", "JScript" ); SetValue( "PlayControl.Current", 3, null ); sop.AlwaysEvaluate = true; val = GetValue( "null.kine.local.posx" ); Application.LogMessage( val ); SetValue( "PlayControl.Current", 4, null ); val = GetValue( "null.kine.local.posx" ); Application.LogMessage( val ); // Force scene to reevaluate sop.AlwaysEvaluate = false; Refresh(); SetValue( "PlayControl.Current", 5, null ); val = GetValue( "null.kine.local.posx" ); Application.LogMessage( val ); // Scripted operator's update function function MyExpr_Update(ctx,out) { Application.LogMessage( "MyExpr_Update: " + out.name ); out.Value = ctx.CurrentFrame; } // Expected results: //INFO : MyExpr_Update: Outposx //INFO : 3 //INFO : MyExpr_Update: Outposx //INFO : 4 //INFO : MyExpr_Update: Outposx //INFO : 4 |