Public Member Functions
ICENodeDef Class Reference

## Detailed Description

ICENodeDef objects are used for describing a unique custom ICENode object. Instances of this object are used to register custom ICENode objects with PluginRegistrar::RegisterICENode.

See also:
  ICENode, PluginRegistrar::RegisterICENode, cb_icenodes ICENode Callbacks

Since:
  7.0

`#include <xsi_icenodedef.h>`

Inheritance diagram for ICENodeDef:
[legend]

List of all members.

## Public Member Functions
| ICENodeDef ()
| ~ICENodeDef ()
| ICENodeDef (const CRef &in_ref)
| ICENodeDef (const ICENodeDef &in_obj)
bool | IsA (siClassID in_ClassID) const
siClassID | GetClassID () const
ICENodeDef & | operator= (const ICENodeDef &in_obj)
ICENodeDef & | operator= (const CRef &in_ref)
CStatus | PutThreadingModel (siICENodeThreadingModel in_nModel)
siICENodeThreadingModel | GetThreadingModel () const
CStatus | DefineCustomType (const CString &in_strCustomType, const CString &in_strDisplayName, const CString &in_strDescription, unsigned char in_red, unsigned char in_green, unsigned char in_blue)
CStatus | AddPortGroup (ULONG in_uniqueGroupId, ULONG in_nMin=1, ULONG in_nMax=1, const CString in_strGroupName=CString())
CStatus | AddInputPort (ULONG in_uniquePortId, ULONG in_uniqueGroupId, ULONG in_nDataType, ULONG in_nStructType, ULONG in_nContextType, const CString &in_strName, const CString &in_strScriptName, const CValue &in_defaultVal=CValue(), ULONG in_typeMapId=UINT_MAX, ULONG in_structMapId=UINT_MAX, ULONG in_contextMapId=UINT_MAX)
CStatus | AddInputPort (ULONG in_uniquePortId, ULONG in_uniqueGroupId, ULONG in_nDataType, ULONG in_nStructType, ULONG in_nContextType, const CString &in_strName, const CString &in_strScriptName, const CValue &in_defaultVal, const CValue &in_minVal, const CValue &in_maxVal, ULONG in_typeMapId, ULONG in_structMapId, ULONG in_contextMapId)
CStatus | AddInputPort (ULONG in_uniquePortId, ULONG in_uniqueGroupId, const CStringArray &in_strCustomDataTypes, ULONG in_nStructType, ULONG in_nContextType, const CString &in_strName, const CString &in_strScriptName, ULONG in_typeMapId, ULONG in_structMapId, ULONG in_contextMapId)
CStatus | AddOutputPort (ULONG in_uniquePortId, ULONG in_nDataType, ULONG in_nStructType, ULONG in_nContextType, const CString &in_strName, const CString &in_strScriptName, ULONG in_typeMapId=UINT_MAX, ULONG in_structMapId=UINT_MAX, ULONG in_contextMapId=UINT_MAX)
CStatus | AddOutputPort (ULONG in_uniquePortId, const CStringArray &in_strCustomDataTypes, ULONG in_nStructType, ULONG in_nContextType, const CString &in_strName, const CString &in_strScriptName, ULONG in_typeMapId=UINT_MAX, ULONG in_structMapId=UINT_MAX, ULONG in_contextMapId=UINT_MAX)
CStatus | AddOutputPort (ULONG in_uniquePortId, ULONG in_uniqueGroupId, ULONG in_nDataType, ULONG in_nStructType, ULONG in_nContextType, const CString &in_strName, const CString &in_strScriptName, ULONG in_typeMapId=UINT_MAX, ULONG in_structMapId=UINT_MAX, ULONG in_contextMapId=UINT_MAX)
CStatus | PutColor (unsigned char in_red, unsigned char in_green, unsigned char in_blue)

## Constructor & Destructor Documentation

ICENodeDef | ( |  | ) |

Default constructor.

~ICENodeDef | ( |  | ) |

Default destructor.

ICENodeDef | ( | const CRef & | in_ref | ) |

Constructor.

Parameters:

  in_ref | constant reference object.

ICENodeDef | ( | const ICENodeDef & | 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 CBase.

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

Returns the type of the API class.

Returns:
  The class type.

Implements CBase.

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

Creates an object from another object.

Parameters:

  in_obj | constant class object.

Returns:
  The new ICENodeDef object.

ICENodeDef& 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 ICENodeDef object.

CStatus PutThreadingModel | ( | siICENodeThreadingModel | in_nModel | ) |

Sets this ICENode threading model, possible values are: single-thread, multi-thread and multi-phase. By default, ICENode objects are evaluated in a multi-threading process where the data is processed by the custom node in several passes. Single thread processing on the other hand performs data processing in one single pass which allows the node to get all the input data in one single chunk. The multi-phase model allows for a more flexible processing model where specific ports can be pulled and other ignored during the evaluation phases.

Parameters:

  in_nModel | Threading model value.

Returns:
  CStatus::OK Success.
  CStatus::Fail Operation failed.

See also:
  ICENodeDef::GetThreadingModel

siICENodeThreadingModel GetThreadingModel | ( |  | ) | const

Returns the threading model for this ICENode.

Returns:
  ICENode threading model.

See also:
  ICENodeDef::PutThreadingModel

CStatus DefineCustomType | ( | const CString & | in_strCustomType,
|  | const CString & | in_strDisplayName,
|  | const CString & | in_strDescription,
|  | unsigned char | in_red,
|  | unsigned char | in_green,
|  | unsigned char | in_blue
| ) |  |

Defines a custom data type to be used as a data type when defining a custom node port. Custom types are typically used in ICE for propagating user-defined (binary) data through the graph as a regular data type. A custom type is identified with a global identifier (string name), a fundamental data type (siICENodeDataCustomType) and a port connection handle color.

Parameters:

  in_strCustomType | The custom type global string identifier. Softimage doesn't enforce any string format for defining the identifier, but it is recommended to use names that somewhat describe what the data type refers to. Naming your custom type appropriately is important because it is used throughout the system as a unique identifier to your type.
  in_strDisplayName | The name of the custom type to display in the ICE graph.
  in_strDescription | A short description of the custom type used for showing in the ICE graph.
  in_red | Defines the value of red for the UI port connection handle of this custom type.
  in_green | Defines the value of green for the UI port connection handle of this custom type.
  in_blue | Defines the value of blue for the UI port connection handle of this custom type.

Returns:
  CStatus::OK success.
  CStatus::Fail Type couldn't be registered.

Since:
  8.0 (2010)

CStatus AddPortGroup | ( | ULONG | in_uniqueGroupId,
|  | ULONG | in_nMin = `1`,
|  | ULONG | in_nMax = `1`,
|  | const CString | in_strGroupName = `CString()`
| ) |  |

Adds a port group to this ICENode definition. Port groups must be defined with a unique identifier.

Note:
  AddPortGroup is restricted to input port groups only. You can still use this API to define output port groups but you have to make sure the maximum number of connections (`in_nMax`) is set to `UINT_MAX`. If `in_nMAx` is not set properly, multiple output port connections will not be allowed.

Parameters:

  in_uniqueGroupId | The port group unique identifier.
  in_nMin | Minimum number of objects required for a connection. Cannot be used for output port groups.
  in_nMax | Maximum number of objects allowed to be connected. Cannot be used for output port groups.
  in_strGroupName | Port group name.

Returns:
  The returned status code (CStatus::OK for success).

CStatus AddInputPort | ( | ULONG | in_uniquePortId,
|  | ULONG | in_uniqueGroupId,
|  | ULONG | in_nDataType,
|  | ULONG | in_nStructType,
|  | ULONG | in_nContextType,
|  | const CString & | in_strName,
|  | const CString & | in_strScriptName,
|  | const CValue & | in_defaultVal = `CValue()`,
|  | ULONG | in_typeMapId = `UINT_MAX`,
|  | ULONG | in_structMapId = `UINT_MAX`,
|  | ULONG | in_contextMapId = `UINT_MAX`
| ) |  |

Adds an input port to this ICENode definition using a unique identifier. This API can be used for port types other than siICENodeDataCustomType. The minimum and maximum UI range values for the new port is set to 1..10 by default (applicable to port types other than siICENodeDataCustomType, siICENodeDataGeometry and ::siICENodeDataShape).

Parameters:

  in_uniquePortId | The port unique identifier.
  in_uniqueGroupId | The port group unique identifier.
  in_nDataType | The port data type (see siICENodeDataType).
  in_nStructType | The structure type of the port data (see siICENodeStructureType).
  in_nContextType | The context type of the port data (see siICENodeContextType).
  in_strName | The port name.
  in_strScriptName | The port scripting name.
  in_defaultVal | The port default value.
  in_typeMapId | The type map id for this port.
  in_structMapId | The struct map id for this port.
  in_contextMapId | The context map id for this port.

Returns:
  The returned status code (CStatus::OK for success).

CStatus AddInputPort | ( | ULONG | in_uniquePortId,
|  | ULONG | in_uniqueGroupId,
|  | ULONG | in_nDataType,
|  | ULONG | in_nStructType,
|  | ULONG | in_nContextType,
|  | const CString & | in_strName,
|  | const CString & | in_strScriptName,
|  | const CValue & | in_defaultVal,
|  | const CValue & | in_minVal,
|  | const CValue & | in_maxVal,
|  | ULONG | in_typeMapId,
|  | ULONG | in_structMapId,
|  | ULONG | in_contextMapId
| ) |  |

Adds an input port to this ICENode definition using a unique identifier. This method is used for port types other than siICENodeDataCustomType and allows the minimum and maximum UI range values to be specified (applicable to port types other than siICENodeDataCustomType, siICENodeDataGeometry and ::siICENodeDataShape).

Parameters:

  in_uniquePortId | The port unique identifier.
  in_uniqueGroupId | The port group unique identifier.
  in_nDataType | The port data type (see siICENodeDataType).
  in_nStructType | The structure type of the port data (see siICENodeStructureType).
  in_nContextType | The context type of the port data (see siICENodeContextType).
  in_strName | The port name.
  in_strScriptName | The port scripting name.
  in_defaultVal | The port default value.
  in_minVal | This port minimum value for configuring the range of the UI control. The minimum value defaults to 1 if in_minVal is not specified (i.e. empty).
  in_maxVal | The port maximum value for configuring the range of the UI control. If in_maxVal is not specified (i.e. empty), the maximum value defaults to 10 or twice the default value if it exceeds 10.
  in_typeMapId | The type map id for this port.
  in_structMapId | The struct map id for this port.
  in_contextMapId | The context map id for this port.

Returns:
  The returned status code (CStatus::OK for success).

CStatus AddInputPort | ( | ULONG | in_uniquePortId,
|  | ULONG | in_uniqueGroupId,
|  | const CStringArray & | in_strCustomDataTypes,
|  | ULONG | in_nStructType,
|  | ULONG | in_nContextType,
|  | const CString & | in_strName,
|  | const CString & | in_strScriptName,
|  | ULONG | in_typeMapId,
|  | ULONG | in_structMapId,
|  | ULONG | in_contextMapId
| ) |  |

Adds an input port of type siICENodeDataCustomType to this ICENode definition.

Parameters:

  in_uniquePortId | The port unique identifier.
  in_uniqueGroupId | The port group unique identifier.
  in_strCustomDataTypes | Array of custom type global identifier(s) to use.
  in_nStructType | The structure type of the port data (see siICENodeStructureType).
  in_nContextType | The context type of the port data (see siICENodeContextType).
  in_strName | The port name.
  in_strScriptName | The port scripting name.
  in_typeMapId | The type map id for this port.
  in_structMapId | The struct map id for this port.
  in_contextMapId | The context map id for this port.

Returns:
  The returned status code (CStatus::OK for success).

Since:
  8.0 (2010)

CStatus AddOutputPort | ( | ULONG | in_uniquePortId,
|  | ULONG | in_nDataType,
|  | ULONG | in_nStructType,
|  | ULONG | in_nContextType,
|  | const CString & | in_strName,
|  | const CString & | in_strScriptName,
|  | ULONG | in_typeMapId = `UINT_MAX`,
|  | ULONG | in_structMapId = `UINT_MAX`,
|  | ULONG | in_contextMapId = `UINT_MAX`
| ) |  |

Adds an output port to this ICENode definition. Note that siICENodeDataGeometry is not a supported output port type. If an output port shares the same type map constraint as an input port, set both port types to siICENodeOutputDataAny. Otherwise the type map will not be successful.

Parameters:

  in_uniquePortId | The port unique identifier.
  in_nDataType | The port data type (see siICENodeDataType).
  in_nStructType | The structure type of the port data (see siICENodeStructureType).
  in_nContextType | The context type of the port data (see siICENodeContextType).
  in_strName | The port name.
  in_strScriptName | The port scripting name.
  in_typeMapId | The type map id for this port.
  in_structMapId | The struct map id for this port.
  in_contextMapId | The context map id for this port.

Returns:
  The returned status code (CStatus::OK for success).

CStatus AddOutputPort | ( | ULONG | in_uniquePortId,
|  | const CStringArray & | in_strCustomDataTypes,
|  | ULONG | in_nStructType,
|  | ULONG | in_nContextType,
|  | const CString & | in_strName,
|  | const CString & | in_strScriptName,
|  | ULONG | in_typeMapId = `UINT_MAX`,
|  | ULONG | in_structMapId = `UINT_MAX`,
|  | ULONG | in_contextMapId = `UINT_MAX`
| ) |  |

Adds an output port of type siICENodeDataCustomType to this ICENode definition.

Parameters:

  in_uniquePortId | The port unique identifier.
  in_strCustomDataTypes | Array of custom type global identifier(s) to use.
  in_nStructType | The structure type of the port data (see siICENodeStructureType).
  in_nContextType | The context type of the port data (see siICENodeContextType).
  in_strName | The port name.
  in_strScriptName | The port scripting name.
  in_typeMapId | The type map id for this port.
  in_structMapId | The struct map id for this port.
  in_contextMapId | The context map id for this port.

Returns:
  The returned status code (CStatus::OK for success).

Since:
  8.0 (2010)

CStatus AddOutputPort | ( | ULONG | in_uniquePortId,
|  | ULONG | in_uniqueGroupId,
|  | ULONG | in_nDataType,
|  | ULONG | in_nStructType,
|  | ULONG | in_nContextType,
|  | const CString & | in_strName,
|  | const CString & | in_strScriptName,
|  | ULONG | in_typeMapId = `UINT_MAX`,
|  | ULONG | in_structMapId = `UINT_MAX`,
|  | ULONG | in_contextMapId = `UINT_MAX`
| ) |  |

Deprecated:
  8.0 (2010). This API doesn't support multiple connections and should not be used, use the other API signature instead which takes no group identifier and supports multiple connections.

Parameters:

  in_uniquePortId | The port unique identifier.
  in_uniqueGroupId | The port group unique identifier.
  in_nDataType | The port data type (see siICENodeDataType).
  in_nStructType | The structure type of the port data (see siICENodeStructureType).
  in_nContextType | The context type of the port data (see siICENodeContextType).
  in_strName | The port name.
  in_strScriptName | The port scripting name.
  in_typeMapId | The type map id for this port.
  in_structMapId | The struct map id for this port.
  in_contextMapId | The context map id for this port.

Returns:
  The returned status code (CStatus::OK for success).

CStatus PutColor | ( | unsigned char | in_red,
|  | unsigned char | in_green,
|  | unsigned char | in_blue
| ) |  |

Sets the UI color of the ICENode that is being defined by this ICENodeDef object.

Parameters:

  in_red | Defines the value of red for the UI color of this ICENode.
  in_green | Defines the value of green for the UI color of this ICENode.
  in_blue | Defines the value of blue for the UI color of this ICENode.

Returns:
  CStatus::OK success.
  CStatus::Fail failure.

Since:
  8.0 (2010)

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

- xsi_icenodedef.h