Public Member Functions
Factory Class Reference

## Detailed Description

This class represents a Factory class and is used to create certain types of objects.

See also:
  CustomOperator, Application::GetFactory

Since:
  4.0

Example:

            using namespace XSI;
            Application app;
            Factory factory = app.GetFactory();

            CString strCode = L"function MyOperator_Update( ctx, Out, InPosY ) { Out.Value = InPosY.Value; }";

            CustomOperator op = factory.CreateScriptedOp( L"MyOperator", strCode, L"JScript" );

            Model root = app.GetActiveSceneRoot();

            CStatus st;
            Null null1; st = root.AddNull(L"MyNull1", null1);
            Null null2; st = root.AddNull(L"MyNull2", null2);

            op.AddOutputPort(null1.GetParameter( L"PosX" ));
            op.AddInputPort(null2.GetParameter( L"PosY" ));

            op.Connect();

`#include <xsi_factory.h>`

Inheritance diagram for Factory:
[legend]

List of all members.

## Public Member Functions
| Factory ()
| ~Factory ()
| Factory (const CRef &in_ref)
| Factory (const Factory &in_obj)
bool | IsA (siClassID in_ClassID) const
siClassID | GetClassID () const
Factory & | operator= (const Factory &in_obj)
Factory & | operator= (const CRef &in_ref)
CRef | CreateObject (const CString &name, CStatus *pst=0)
CRef | CreateObjectFromPreset (const CString &presetname, const CString &family=L"", CStatus *pst=0)
CRef | CreateObjectFromFile (const CString &in_filename, CStatus *out_st=0)
CRef | CreateScriptedOp (const CString &name=L"", const CString &code=L"", const CString &language=L"", CStatus *pst=0)
CRef | CreateScriptedOpFromFile (const CString &name, const CString &filename, const CString &language=L"", CStatus *pst=0)
CRef | CreateParamDef (const CString &in_scriptname, CValue::DataType in_type, INT in_capabilities, const CString &in_name, const CString &in_description, const CValue &in_default, const CValue &in_min, const CValue &in_max, const CValue &in_suggestedmin, const CValue &in_suggestedmax, CStatus *pst=0)
CRef | CreateParamDef (const CString &in_scriptname, CValue::DataType in_type, const CValue &in_default, const CValue &in_min, const CValue &in_max, CStatus *pst=0)
CRef | CreateParamDef (const CString &in_scriptname, CValue::DataType in_type, const CValue &in_default, CStatus *pst=0)
CRef | CreateFCurveParamDef (const CString &in_scriptname, CStatus *pst=0)
CRef | CreateGridParamDef (const CString &in_scriptname, CStatus *pst=0)
CRef | CreateTimeTransport (CStatus *pst=0)
CRef | CreateICENodeDef (const CString &in_name, const CString &in_description=CString(), CStatus *pst=0)
CRef | CreateShaderDef (const CString &in_parserName, const CString &in_className, ULONG in_major, ULONG in_minor)
CStatus | RemoveShaderDef (const CRef &in_shaderdef)
CRef | CreateShaderParamDefOptions ()

## Constructor & Destructor Documentation

Factory | ( |  | ) |

Default constructor.

~Factory | ( |  | ) |

Default destructor.

Factory | ( | const CRef & | in_ref | ) |

Constructor.

Parameters:

  in_ref | constant reference object.

Factory | ( | const Factory & | in_obj | ) |

Copy constructor.

Parameters:

  in_obj | constant class object.

## Member Function Documentation

bool IsA | ( | siClassID | in_ClassID | ) | const `[virtual]`

Returns true if a given class type is compatible with this API class.

Parameters:

  in_ClassID | class type.

Returns:
  true if the class is compatible, false otherwise.

Reimplemented from SIObject.

siClassID GetClassID | ( |  | ) | const `[virtual]`

Returns the type of the API class.

Returns:
  The class type.

Reimplemented from SIObject.

Factory& operator= | ( | const Factory & | in_obj | ) |

Creates an object from another object. The newly created object is set to empty if the input object is not compatible.

Parameters:

  in_obj | constant class object.

Returns:
  The new Factory object.

Factory& operator= | ( | const CRef & | in_ref | ) |

Creates an object from a reference object. The newly created object is set to empty if the input reference object is not compatible.

Parameters:

  in_ref | constant class object.

Returns:
  The new Factory object.

Reimplemented from SIObject.

CRef CreateObject | ( | const CString & | name,
|  | CStatus * | pst = `0`
| ) |  |

Creates an XSI object from a type name. This function can be used to create a temporary CustomProperty that is not connected to the scene. It can also be used to instantiated a new instance of a Self-Installed CustomOperator.

Parameters:

  name | Type name. In the case of a Self-Installed CustomProperty or CustomOperator this is the name as provided in PluginRegistrar::RegisterProperty and PluginRegistrar::RegisterOperator.

Return values:

  pst | The return status (optional).

Returns:
  A reference to the new object, for example a CustomOperator or CustomProperty.

See also:
  ProjectItem::CreateCustomOp, PluginRegistrar::RegisterOperator, PluginRegistrar::RegisterProperty

CRef CreateObjectFromPreset | ( | const CString & | presetname,
|  | const CString & | family = `L""`,
|  | CStatus * | pst = `0`
| ) |  |

Creates an object from a preset and optional preset family name.

Parameters:

  presetname | Preset name.
  family | Preset family name.

Return values:

  pst | The return status (optional).

Returns:
  A reference to the new Factory object.

CRef CreateObjectFromFile | ( | const CString & | in_filename,
|  | CStatus * | out_st = `0`
| ) |  |

Creates an object from a preset file. The preset filename can be relative or partially complete for example you can find the Shear operator by specifying `Operators\Shear`. If the preset is not found in the users folder then the users addon, workgroup, workgroup addon and factory locations will be searched in that order.

Parameters:

  in_filename | The filename of the preset.

Return values:

  out_st | The return status (optional).

Returns:
  A reference to the new object.
  Empty reference if the function failed.

CRef CreateScriptedOp | ( | const CString & | name = `L""`,
|  | const CString & | code = `L""`,
|  | const CString & | language = `L""`,
|  | CStatus * | pst = `0`
| ) |  |

Creates a scripted version of a CustomOperator object with the code specified (a runtime scripted operator). To create a Self-Installed Custom Operator use Factory::CreateObject instead.

Parameters:

  name | The name of the operator.
  code | The implementation code.
  language | The implementation language.

Return values:

  pst | The return status (optional).

Returns:
  A reference to the new object.
  Empty reference if the function failed.

CRef CreateScriptedOpFromFile | ( | const CString & | name,
|  | const CString & | filename,
|  | const CString & | language = `L""`,
|  | CStatus * | pst = `0`
| ) |  |

Creates a scripted version of a CustomOperator object with the logic in an associated script file.

Parameters:

  name | The name of the operator.
  filename | The file where the operator is implementated.
  language | The implementation language.

Return values:

  pst | The return status (optional).

Returns:
  A reference to the new object.
  Empty reference if the function failed.

CRef CreateParamDef | ( | const CString & | in_scriptname,
|  | CValue::DataType | in_type,
|  | INT | in_capabilities,
|  | const CString & | in_name,
|  | const CString & | in_description,
|  | const CValue & | in_default,
|  | const CValue & | in_min,
|  | const CValue & | in_max,
|  | const CValue & | in_suggestedmin,
|  | const CValue & | in_suggestedmax,
|  | CStatus * | pst = `0`
| ) |  |

Creates a parameter definition (simplified API for creating parameters of type long, double, etc.).

Parameter definitions contain the definition of a parameter from which you can create new parameters on the fly for one or more property sets or operators. For example, you may want to use a double with the same min/max range and use it on multiple property sets or you may simply want a quick way to add parameters to a runtime custom operator. You can create new parameter definitions from the Factory class.

By default the parameter is persistable and animatable with the exception of string parameters which are not animatable. The recommended parameter types are: siString, siBool, siInt4, siUByte, and siDouble.

The supported types are: siString, siBool, siDouble, siFloat, siInt4, siInt2, siUInt4, siUInt2, siByte, siUByte.

Parameters:

  in_scriptname | The script name for the new Parameter object.
  in_type | The data type of the new Parameter object.
  in_capabilities | The capabilities of the parameter. This is a mask of siCapabilities values and is used to determine whether the parameter is read-only or animatable etc.
  in_name | The name of the Parameter object. This is the string that will be displayed in the scene explorer.
  in_description | Description of the custom parameter. If specified, this is a more descriptive name that will appear as the parameter label when the customer property is inspected. For example, the long name of a parameter might be a user friendly "Use Light Color as Energy" while the name is a more script friendly "use_color"
  in_default | The default value of the custom parameter. A default value is required for parameter types other than siString and siBool.
  in_min | Minimum value of the custom parameter. A value is required for parameter types other than siString and siBool.
  in_max | Maximum value of the custom parameter. A value is required for parameter types other than siString and siBool.
  in_suggestedmin | Suggested minimum value of the custom parameter. The minimum value will be used if this parameter is not specified. The suggested minimum should be equal or larger than the minimum. This value is used to configure the range of UI controls.
  in_suggestedmax | Suggested maximum value of the custom parameter. The maximum value will be used if this parameter is not specified. The suggested maximum should be equal or smaller than the Maximum. This value is used to configure the range of UI controls.

Return values:

  pst | The return status (optional).

Returns:
  A reference to the new parameter definition.

CRef CreateParamDef | ( | const CString & | in_scriptname,
|  | CValue::DataType | in_type,
|  | const CValue & | in_default,
|  | const CValue & | in_min,
|  | const CValue & | in_max,
|  | CStatus * | pst = `0`
| ) |  |

Creates a parameter definition (simplified API for creating parameters of type long, double, etc.).

Parameter definitions contain the definition of a parameter from which you can create new parameters on the fly for one or more property sets or operators. For example, you may want to use a double with the same min/max range and use it on multiple property sets or you may simply want a quick way to add parameters to a runtime custom operator. You can create new parameter definitions from the Factory class.

By default the parameter is persistable and animatable with the exception of string parameters which are not animatable. The recommended parameter types are: siString, siBool, siInt4, siUByte, and siDouble.

The supported types are: siString, siBool, siDouble, siFloat, siInt4, siInt2, siUInt4, siUInt2, siByte, siUByte

Parameters:

  in_scriptname | The script name for the new Parameter object.
  in_type | The data type of the new Parameter object.
  in_default | The default value of the custom parameter. A default value is required for parameter types other than siString and siBool.
  in_min | Minimum value of the custom parameter. A value is required for parameter types other than siString and siBool.
  in_max | Maximum value of the custom parameter. A value is required for parameter types other than siString and siBool.

Return values:

  pst | The return status (optional).

Returns:
  A reference to the new parameter definition.

CRef CreateParamDef | ( | const CString & | in_scriptname,
|  | CValue::DataType | in_type,
|  | const CValue & | in_default,
|  | CStatus * | pst = `0`
| ) |  |

Creates a parameter definition (simplified API for creating parameters of type long, double, etc.).

Parameter definitions contain the definition of a parameter from which you can create new parameters on the fly for one or more property sets or operators. For example, you may want to use a double with the same min/max range and use it on multiple property sets or you may simply want a quick way to add parameters to a runtime custom operator. You can create new parameter definitions from the Factory class.

By default the parameter is persistable and animatable with the exception of string parameters which are not animatable. The recommended parameter types are: siString, siBool, siInt4, siUByte, and siDouble.

The supported types are: siString, siBool, siDouble, siFloat, siInt4, siInt2, siUInt4, siUInt2, siByte, siUByte

Parameters:

  in_scriptname | The script name for the new Parameter object.
  in_type | The data type of the new Parameter object.
  in_default | The default value of the custom parameter. A default value is required for parameter types other than siString and siBool.

Return values:

  pst | The return status (optional).

Returns:
  A reference to the new parameter definition.

CRef CreateFCurveParamDef | ( | const CString & | in_scriptname,
|  | CStatus * | pst = `0`
| ) |  |

Creates an FCurve parameter definition for use with the CustomProperty or CustomOperator. An FCurve of this type is often called a Profile Curve because, unlike most FCurves, this curve does not animate any parameter, but instead is available for use in any fashion the plug-in developer or user wishes.

Unlike parameters that have simple types like an Integer or a String, this Parameter is an instance of an FCurve. It uses units of Frames for its X axis, but because it does not directly animate any object this axis can actually be interpreted in any fashion. An example use of an FCurve parameter can be found on the bulgeop Bulge operator .

You can access the FCurve object via Parameter::GetValue. This should not be confused with the function for retrieving an FCurve that is animating a basic parameter (Parameter::GetSource).

In order to view the FCurve on the Property Page for the CustomProperty or CustomOperator, use PPGLayout::AddFCurve.

Parameters:

  in_scriptname | The script name for the new Parameter object.

Return values:

  pst | The return status (optional).

Returns:
  A reference to the new ParamDef object.

Since:
  5.0

CRef CreateGridParamDef | ( | const CString & | in_scriptname,
|  | CStatus * | pst = `0`
| ) |  |

Creates a GridData parameter definition for use with the CustomProperty or CustomOperator. The grid is a convenient way to store 1- or 2-dimensional arrays and the user can view and edit this data via ::siControlGrid (see ::siPPGControlType enum).

To change the contents of the grid via scripting use the GridData object, which is accessible via Parameter::GetValue.

To include the GridData in the Property Page of the CustomProperty or CustomOperator, use the PPGLayout::AddItem.

Parameters:

  in_scriptname | The ICENode script name.

Return values:

  pst | The return status (optional).

Since:
  5.0

CRef CreateTimeTransport | ( | CStatus * | pst = `0` | ) |

Create a connection with time transport service. This will be initialized with the current time setting; which is normally defined by the project's play control property. Call the TimeTransport::SetTimeContext() method change the time context used by the time transport.

Since:
  6.5.x

CRef CreateICENodeDef | ( | const CString & | in_name,
|  | const CString & | in_description = `CString()`,
|  | CStatus * | pst = `0`
| ) |  |

Creates an ICENodeDef object, which defines a custom ICENode.

Parameters:

  in_name | The ICENode type name.
  in_description | The ICENode type description name. If empty, the `in_name` value is used.

Return values:

  pst | The return status (optional).

Returns:
  A reference to the new ICENodeDef object.

Since:
  7.0

CRef CreateShaderDef | ( | const CString & | in_parserName,
|  | const CString & | in_className,
|  | ULONG | in_major,
|  | ULONG | in_minor
| ) |  |

Creates a new shader definition. Softimage shader definitions can be accessed via either Application::GetShaderDefinitions or by ShaderDef::GetProgID via Application::GetShaderDef.

Note:
  Each shader definition has a unique `ProgID` which is built from the four specified components. For more information, see cus_shaders_ProgID Instantiating Shader Definitions and the ProgID

Tip:
  On-the-fly (nonpersisted) shader definitions act like parser-based shader definitions that are never parsed (ShaderDef::GetParsed always returns false) and have no definition file (ShaderDef::GetDefinitionPath is always empty). However, you must specify a parser name, and it cannot be either `"Softimage"` or the name of a parser already registered.

Parameters:

  in_parserName | Name of the parser for the new shader definition. This is basically a dummy string, since shader definitions created with this function are not defined by either plug-ins or parsers.
  in_className | Name of the shader class. If you don't specify a UI name for the shader definition, this is the name that appears on the shader node when instantiated in the render tree.
  in_major | Major version number ('2' in v2.5)
  in_minor | Minor version number ('5' in v2.5)

Returns:
  A reference to the new ShaderDef object.

See also:
  ShaderDef::GetParser, ShaderDef::GetPlugin, cus_shaders_ProgID Instantiating Shader Definitions and the ProgID

Since:
  9.0 (2011)

CStatus RemoveShaderDef | ( | const CRef & | in_shaderdef | ) |

Removes an existing shader definition.

Parameters:

  in_shaderdef | A reference to the ShaderDef to remove.

Returns:
  Success/failure

Since:
  9.0 (2011)

CRef CreateShaderParamDefOptions | ( |  | ) |

Creates a shader parameter definition options.

Returns:
  A reference to the new ShaderParamDefOptions object.

Since:
  9.0 (2011)

The documentation for this class was generated from the following file:

- xsi_factory.h