Evaluate 関数から入力ポート データにアクセスするために、ICENode の登録時に定義された入力ポートと出力ポートのタイプに一致する一連のクラスが SDK で提供されています。
複雑なデータ タイプにアクセスするために、次のクラスが用意されています。
XSI::MATH::CVector2f -> siICENodeDataVector2
XSI::MATH::CVector3f -> siICENodeDataVector3
XSI::MATH::CVector4f -> siICENodeDataVector4
XSI::MATH::CQuaternionf -> siICENodeDataQuaternion
XSI::MATH::CMatrix3f -> siICENodeDataMatrix33
XSI::MATH::CMatrix4f -> siICENodeDataMatrix44
XSI::MATH::CColor4f -> siICENodeDataColor4
XSI::MATH::CRotationf -> siICENodeDataRotation
XSI::MATH::CShape -> siICENodeDataShape
CICEGeometry -> siICENodeDataGeometry
CICEGeometry は、BeginEvaluate コールバックからアクセスできますが、どのカスタム評価コールバックでも使用できます。 ただし、Singleton コンテキストでないマルチスレッド モードでは、Evaluate コールバックからは使用できません。 CICEGeometry メソッドを呼び出しても、このコンテキストにデフォルト値が返されるだけです。
カスタム ICENode に送信された入力データ バッファは、ICENode の登録時に設定されたポートの構造タイプに応じて、1D または 2D の配列に格納されます。 CDataArray および CDataArray2D テンプレート クラスを上記のクラスのいずれかと結合すると、これらの配列を処理することができます。 たとえば、ポートタイプが siICENodeDataVector3 + siICENodePortStructureSingle として定義されている場合、CDataArray<CVector3f>を使用してデータにアクセスする必要があります。 また、ポートが siICENodeDataRotation + siICENodePortStructureArray として定義されている場合は、CDataArray2D<CRotationf> を使用する必要があります。浮動小数やブールなど、単純なポート データ タイプについては、そのタイプをテンプレート パラメータ(CDataArray< float > または CDataArray2D< bool > など)として使用します。入力データは、読み取り専用とみなされるため、変更できません。また、これらのテンプレート クラスを使用して項目を削除することもできません。
便宜上、ポート データ タイプごとに多数の配列タイプが定義されています(CDataArrayLong、CDataArrayBool、CDataArrayShape、CDataArray2DVector2f など)。