00001 //***************************************************************************** 00011 //***************************************************************************** 00012 00013 #if (_MSC_VER > 1000) || defined(SGI_COMPILER) 00014 #pragma once 00015 #endif 00016 00017 #ifndef __XSIICEATTRIBUTEDATAARRAY2D_H__ 00018 #define __XSIICEATTRIBUTEDATAARRAY2D_H__ 00019 00020 #include <sicppsdk.h> 00021 #include <xsi_iceattributedataarray.h> 00022 #include <xsi_vector2f.h> 00023 #include <xsi_vector3f.h> 00024 #include <xsi_vector4f.h> 00025 #include <xsi_quaternionf.h> 00026 #include <xsi_rotationf.h> 00027 #include <xsi_matrix3f.h> 00028 #include <xsi_matrix4f.h> 00029 #include <xsi_color4f.h> 00030 00031 namespace XSI { 00032 00033 class ICEAttribute; 00034 00035 //***************************************************************************** 00182 //***************************************************************************** 00183 template<class T> 00184 class CICEAttributeDataArray2D : public CBaseICEAttributeDataArray 00185 { 00186 public: 00188 CICEAttributeDataArray2D( ) : CBaseICEAttributeDataArray( GetDefaultType( ), XSI::siICENodeStructureArray ) {} 00189 00191 ~CICEAttributeDataArray2D( ) {} 00192 00200 CStatus GetSubArray( ULONG in_index, CICEAttributeDataArray<T>& out_dataArray ) const 00201 { 00202 return GetSubDataArray( in_index, (CBaseICEAttributeDataArray&)out_dataArray ); 00203 } 00204 00205 private: 00206 static SICPPSDK_INLINE XSI::siICENodeDataType GetDefaultType( ) 00207 { 00208 return siICENodeDataCustomType; 00209 } 00210 }; 00211 00212 //***************************************************************************** 00253 //***************************************************************************** 00254 00255 class CICEAttributeDataArray2DCustomType : public CBaseICEAttributeDataArray 00256 { 00257 public: 00259 CICEAttributeDataArray2DCustomType( ) : CBaseICEAttributeDataArray( GetDefaultType( ), XSI::siICENodeStructureArray ) {} 00260 00262 ~CICEAttributeDataArray2DCustomType( ) 00263 { 00264 SetParent( NULL ); 00265 } 00266 00274 CStatus GetSubArray( ULONG in_index, CBaseICEAttributeDataArray& out_dataArray ) const 00275 { 00276 return GetSubDataArray( in_index, out_dataArray ); 00277 } 00278 00279 private: 00280 static SICPPSDK_INLINE XSI::siICENodeDataType GetDefaultType( ) 00281 { 00282 return XSI::siICENodeDataCustomType; 00283 } 00284 }; 00285 00286 //***************************************************************************** 00328 //***************************************************************************** 00329 00330 class CICEAttributeDataArray2DString : public CBaseICEAttributeDataArray 00331 { 00332 public: 00334 CICEAttributeDataArray2DString( ) : CBaseICEAttributeDataArray( GetDefaultType( ), XSI::siICENodeStructureArray ) {} 00335 00337 ~CICEAttributeDataArray2DString( ) 00338 { 00339 SetParent( NULL ); 00340 } 00341 00349 CStatus GetSubArray( ULONG in_index, CBaseICEAttributeDataArray& out_dataArray ) const 00350 { 00351 return GetSubDataArray( in_index, out_dataArray ); 00352 } 00353 00354 private: 00355 static SICPPSDK_INLINE XSI::siICENodeDataType GetDefaultType( ) 00356 { 00357 return XSI::siICENodeDataString; 00358 } 00359 }; 00360 00438 typedef XSI::CICEAttributeDataArray2D< float > CICEAttributeDataArray2DFloat; 00439 typedef XSI::CICEAttributeDataArray2D< LONG > CICEAttributeDataArray2DLong; 00440 typedef XSI::CICEAttributeDataArray2D< bool > CICEAttributeDataArray2DBool; 00441 typedef XSI::CICEAttributeDataArray2D< XSI::MATH::CVector2f > CICEAttributeDataArray2DVector2f; 00442 typedef XSI::CICEAttributeDataArray2D< XSI::MATH::CVector3f > CICEAttributeDataArray2DVector3f; 00443 typedef XSI::CICEAttributeDataArray2D< XSI::MATH::CVector4f > CICEAttributeDataArray2DVector4f; 00444 typedef XSI::CICEAttributeDataArray2D< XSI::MATH::CQuaternionf > CICEAttributeDataArray2DQuaternionf; 00445 typedef XSI::CICEAttributeDataArray2D< XSI::MATH::CRotationf > CICEAttributeDataArray2DRotationf; 00446 typedef XSI::CICEAttributeDataArray2D< XSI::MATH::CMatrix3f > CICEAttributeDataArray2DMatrix3f; 00447 typedef XSI::CICEAttributeDataArray2D< XSI::MATH::CMatrix4f > CICEAttributeDataArray2DMatrix4f; 00448 typedef XSI::CICEAttributeDataArray2D< XSI::MATH::CColor4f > CICEAttributeDataArray2DColor4f; 00449 typedef XSI::CICEAttributeDataArray2D< XSI::MATH::CShape > CICEAttributeDataArray2DShape; 00450 00451 template<> SICPPSDK_INLINE XSI::siICENodeDataType CICEAttributeDataArray2DBool::GetDefaultType( ){return siICENodeDataBool;} 00452 template<> SICPPSDK_INLINE XSI::siICENodeDataType CICEAttributeDataArray2DFloat::GetDefaultType( ){return siICENodeDataFloat;} 00453 template<> SICPPSDK_INLINE XSI::siICENodeDataType CICEAttributeDataArray2DLong::GetDefaultType( ){return siICENodeDataLong;} 00454 template<> SICPPSDK_INLINE XSI::siICENodeDataType CICEAttributeDataArray2DVector2f::GetDefaultType( ){return siICENodeDataVector2;} 00455 template<> SICPPSDK_INLINE XSI::siICENodeDataType CICEAttributeDataArray2DVector3f::GetDefaultType( ){return siICENodeDataVector3;} 00456 template<> SICPPSDK_INLINE XSI::siICENodeDataType CICEAttributeDataArray2DVector4f::GetDefaultType( ){return siICENodeDataVector4;} 00457 template<> SICPPSDK_INLINE XSI::siICENodeDataType CICEAttributeDataArray2DQuaternionf::GetDefaultType( ){return siICENodeDataQuaternion;} 00458 template<> SICPPSDK_INLINE XSI::siICENodeDataType CICEAttributeDataArray2DMatrix3f::GetDefaultType( ){return siICENodeDataMatrix33;} 00459 template<> SICPPSDK_INLINE XSI::siICENodeDataType CICEAttributeDataArray2DMatrix4f::GetDefaultType( ){return siICENodeDataMatrix44;} 00460 template<> SICPPSDK_INLINE XSI::siICENodeDataType CICEAttributeDataArray2DColor4f::GetDefaultType( ){return siICENodeDataColor4;} 00461 template<> SICPPSDK_INLINE XSI::siICENodeDataType CICEAttributeDataArray2DRotationf::GetDefaultType( ){return siICENodeDataRotation;} 00462 template<> SICPPSDK_INLINE XSI::siICENodeDataType CICEAttributeDataArray2DShape::GetDefaultType( ){return siICENodeDataShape;} 00463 00464 }; 00465 00466 #endif // __XSIICEATTRIBUTEDATAARRAY2D_H__