v4.0
Adds a new custom Parameter to the
custom operator.
The Parameters of a Custom Operator are a convenient way to
configure the behavior of the Operator. The Parameters normally
appear on the PPG of the operator, making it
possible for users to control the operator by moving sliders and
other controls. Any change to the Parameter value will "dirty" the
operator so that it is re-evaluated the next time its outputs are
evaluated.
During the evaluation of a Self-Installed Custom Operator the
parameter values are available via OperatorContext.GetParameterValue.
Other types of custom operators can read the Parameter values via
the Parameters property of the Operator, which can be retrieved via UpdateContext.Operator as shown
in the example below.
oReturn = CustomOperator.AddParameter( ParamDef ); |
The newly created Parameter object.
Parameter | Type | Description |
---|---|---|
ParamDef | ParamDef | This argument specifies the parameter definition. |
/* This example illustrates how to add parameters to a custom operator */ NewScene( null, false ) var null1 = GetPrim( "null" ); // Create the operator var sop = XSIFactory.CreateScriptedOp( "MySOP", MySOP_Update.toString(), "JScript" ); // Add the ports sop.AddOutputPort( null1.posx ); // Add the parameters var param1 = sop.AddParameter( XSIFactory.CreateParamDef2("text", siString, "hello") ); var param2 = sop.AddParameter( XSIFactory.CreateParamDef2("bool", siBool, true) ); var param3 = sop.AddParameter( XSIFactory.CreateParamDef2("int", siInt4, 10, 0, 100) ); var param4 = sop.AddParameter( XSIFactory.CreateParamDef2("dbl", siDouble, 0.5, 0.0, 1.0) ); // List operator's parameters var eParams = new Enumerator( sop.Parameters ); for ( ; !eParams.atEnd(); eParams.moveNext() ) { var param = eParams.item(); Application.LogMessage( param.Name + " = " + param.Value ); } // Connect the operator sop.Connect(); // Show the PPG of the operator which includes the parameters InspectObj( sop ) ; // The operator's update function function MySOP_Update( ctx, out ) { // Normally we would do something with the parameters // but for the purpose of the demo just print the values oParams = ctx.Operator.Parameters ; Application.LogMessage( "MySOP_Update" ) ; Application.LogMessage( " Text parameter: " + oParams( "text" ).Value ) ; Application.LogMessage( " Bool parameter: " + oParams( "bool" ).Value ) ; Application.LogMessage( " int parameter: " + oParams( "int" ).Value ) ; Application.LogMessage( " double parameter: " + oParams( "dbl" ).Value ) ; out.Value = ctx.CurrentFrame; } |