## CustomOperator.AddParameter

### Introduced

v4.0

### Description

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.

### C# Syntax

    Parameter CustomOperator.AddParameter( ParamDef in_ParamDef );

### Scripting Syntax

    oReturn = CustomOperator.AddParameter( ParamDef );

### Return Value

The newly created Parameter object.

### Parameters

Parameter | Type | Description
--- | --- | ---
ParamDef | ParamDef | This argument specifies the parameter definition.

### Examples

#### JScript Example

    /*

    	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;

    }

### See Also

CustomOperator.RemoveParameter XSIFactory.CreateParamDef Parameter ProjectItem.Parameters UpdateContext.Operator