ポートデータへのアクセス

 
 
 

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 > など)として使用します。入力データは、読み取り専用とみなされるため、変更できません。また、これらのテンプレート クラスを使用して項目を削除することもできません。

重要:

不適切なテンプレート クラスを使用して特定のポート データにアクセスすると、予期しない動作が発生する場合があります。

便宜上、配列型の数はポートのデータ タイプごとに定義されています(CDataArrayLongCDataArrayBoolCDataArrayShapeCDataArray2DVector2f など)。