Softimage SDK Programmer's Guide > Customizing Softimage using the SDK > Custom Operators >

# Adding Custom Parameters

You can define special parameters on your self-installed custom operator using the DefineLayout callback and tweak the property page where they appear with the DefineLayout callback.

## C++ Example: Defining custom parameters

    // Add an Alpha parameter in the Define callback
    CStatus MyOp_Define( CRef& in_ref )
    {
    	Context ctxt( in_ref );
    	CustomOperator op( ctxt.GetSource() );
    	Factory fact = Application().GetFactory();

    	// Define the parameters
    	Parameter param;
    	CRef pdef = fact.CreateParamDef( L"Alpha", siDouble, CValue(0.5), CValue(0.01), CValue(0.99) );
    	op.AddParameter( pdef, param );
    }

    // Put the Alpha parameter in its own grouping
    CStatus MyOp_DefineLayout( CRef& in_ref )
    {
    	Context ctxt( in_ref );
    	PPGLayout layout( ctxt.GetSource() );
    	layout.Clear();

    	// Add a group for the Alpha parameter
    	layout.AddGroup( L"Intensity" );
    		layout.AddItem( L"Alpha" );
    	layout.EndGroup();

    	//...
    }

## JScript Example: Defining custom parameters

    // Add an Alpha parameter in the Define callback
    function MyOp_Define( ctxt )
    {
    	var op = ctxt.Source;

    	// Define the parameters
    	var pdef = XSIFactory.CreateParamDef2( "Alpha", siDouble, 0.5, 0.01, 0.99 );
    	var param = op.AddParameter( pdef );

    	// ...
    }

    // Put the Alpha parameter in its own grouping
    function MyOp_DefineLayout( ctxt )
    {
    	var layout = ctxt.Source;
    	layout.Clear();

    	// Add a group for the Alpha parameter
    	layout.AddGroup( "Intensity" );
    		layout.AddItem( "Alpha" );
    	layout.EndGroup();

    	//...
    }

Tip

For runtime (non-Self-Installed) operators, you can use the XSIFactory.CreateParamDef or Factory::CreateParamDef method which allows you to define and create new parameters on the fly.

## What Kind of Parameters to Use

Parameters on a custom operator are very similar to parameters on a custom property. However FCurve or FCurve and GridData or GridData type parameters are not supported.

Custom operators can have an input connection from a custom property as an alternative to having its own parameters. This is useful when FCurve or GridData parameters are needed or when the custom property acts as a central control panel for one or more operators that are deeply hidden in the scene.