00001 //*************************************************************************************** 00002 // File supervisor: Crosswalk team 00012 //*************************************************************************************** 00013 00014 #ifndef _MESH_H 00015 #define _MESH_H 00016 00017 #include "Geometry.h" 00018 00019 class CSLPolygonList; 00020 class CSLTriangleList; 00021 class CSLTriangleStripList; 00022 class CSLBaseShape; 00023 00024 00029 class XSIEXPORT CSLMesh 00030 : public CSLGeometry 00031 { 00032 public: 00033 CSLMesh(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate); 00034 virtual ~CSLMesh(); 00035 00039 SI_Error ClearPolygonLists(); 00040 00044 SI_Error ClearTriangleLists(); 00045 00049 SI_Error ClearTriangleStripLists(); 00050 00054 SI_Int GetPolygonListCount(); 00055 00059 SI_Int GetTriangleListCount(); 00060 00064 SI_Int GetTriangleStripListCount(); 00065 00069 CSLPolygonList** PolygonLists(); 00070 00074 CSLTriangleList** TriangleLists(); 00075 00079 CSLTriangleStripList** TriangleStripLists(); 00080 00084 CSLPolygonList* AddPolygonList(); 00085 00089 CSLTriangleList* AddTriangleList(); 00090 00094 CSLTriangleStripList* AddTriangleStripList(); 00095 00100 SI_Error RemovePolygonList(SI_Int l_nIndex); 00101 00106 SI_Error RemoveTriangleList(SI_Int l_nIndex); 00107 00112 SI_Error RemoveTriangleStripList(SI_Int l_nIndex); 00113 00118 SI_Error RemovePolygonList(CSLPolygonList* in_pObject); 00119 00124 SI_Error RemoveTriangleList(CSLTriangleList* in_pObject); 00125 00130 SI_Error RemoveTriangleStripList(CSLTriangleStripList* in_pObject); 00131 00135 CSLBaseShape* Shape() { return m_pShape; }; 00136 00137 // Connection functions 00138 CSLBaseShape* ConnectShape(CSLBaseShape*); 00139 CSLPolygonList* ConnectPolygonList(CSLPolygonList*); 00140 CSLTriangleList* ConnectTriangleList(CSLTriangleList*); 00141 CSLTriangleStripList* ConnectTriangleStripList(CSLTriangleStripList*); 00142 00143 virtual SI_Error Synchronize(); 00144 virtual SI_Error Fix(); 00145 00149 virtual ETemplateType Type() { return SI_MESH; }; 00150 virtual CSLAnimatableType* ParameterFromName(SI_Char *in_szName); 00151 00152 private: 00153 CSLBaseShape* m_pShape; 00154 CSIBCArray<CSLPolygonList *> m_PolygonLists; 00155 CSIBCArray<CSLTriangleList *> m_TriangleLists; 00156 CSIBCArray<CSLTriangleStripList *> m_TriangleStripLists; 00157 00158 void *m_pReserved; // reserved for future extension 00159 }; 00160 00161 #endif