00001 //*************************************************************************************** 00002 // File supervisor: Crosswalk team 00012 //*************************************************************************************** 00013 00014 #ifndef _ENVELOPE_H 00015 #define _ENVELOPE_H 00016 00017 #include "Template.h" 00018 00019 00020 00022 struct SLVertexWeight 00023 { 00024 SI_Float m_fVertexIndex; 00025 SI_Float m_fWeight; 00026 }; 00027 00028 #ifndef _SL_VERTEX_WEIGHT_ARRAY_PROXY_EXPORT_ 00029 #define _SL_VERTEX_WEIGHT_ARRAY_PROXY_EXPORT_ 00030 00031 //XSITEMPLATEEXP template class XSIEXPORT CSLArrayProxy<SLVertexWeight, SI_Float, 2>; 00032 00033 #endif // _SL_VERTEX_WEIGHT_ARRAY_PROXY_EXPORT_ 00034 00035 00036 00042 class XSIEXPORT CSLEnvelope 00043 : public CSLTemplate 00044 { 00045 public: 00048 typedef CSLArrayProxy<SLVertexWeight, SI_Float, 2> CSLVertexWeightArray; 00049 00056 CSLEnvelope(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate); 00057 00060 virtual ~CSLEnvelope(); 00061 00065 CSLModel* GetDeformer(); 00066 00070 SI_Void SetDeformer(CSLModel* in_pNewDeformer); 00071 00075 CSLModel* GetEnvelope(); 00076 00080 SI_Void SetEnvelope(CSLModel* in_pNewEnvelope); 00081 00085 SI_Int GetVertexWeightCount(); 00086 00090 CSLVertexWeightArray* GetVertexWeightList(); 00091 00095 SLVertexWeight* GetVertexWeightListPtr(); 00096 00100 virtual SI_Error Synchronize(); 00101 00105 virtual ETemplateType Type() { return SI_ENVELOPE; } 00106 00107 private: 00108 CSLModel* m_pEnvelope; 00109 CSLModel* m_pDeformer; 00110 CSLVertexWeightArray m_VertexWeights; 00111 00112 void *m_pReserved; // reserved for future extension 00113 }; 00114 00115 #endif 00116