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.