SDK には、Evaluate 関数から入力ポート データにアクセスするために、ICENode 登録中に定義された入力ポートと出力ポートのタイプに一致するクラスのセットが用意されています。
複雑なデータタイプにアクセスするために、以下のクラスが用意されています。
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 など)。