00001 //*************************************************************************************** 00002 // File supervisor: Crosswalk team 00012 //*************************************************************************************** 00013 00014 #ifndef _XSIPOLYGONLIST_H 00015 #define _XSIPOLYGONLIST_H 00016 00017 #include "XSISubComponentList.h" 00018 #include "Material.h" 00019 #include "Scene.h" 00020 #include "Model.h" 00021 #include "XSIIndexList.h" 00022 00035 class XSIEXPORT CSLXSIPolygonList 00036 : public CSLXSISubComponentList 00037 { 00038 public: 00041 typedef CSLArrayProxy<SI_Int, SI_Int, 1> CSLIntArray; 00042 00049 CSLXSIPolygonList(CSLScene *in_pScene, CSLModel *in_pModel, CdotXSITemplate *in_pTemplate); 00050 00053 virtual ~CSLXSIPolygonList(); 00054 00058 virtual ETemplateType Type() { return XSI_POLYGON_LIST; } 00059 00063 CSLBaseMaterial* GetMaterial() { return m_pMaterial; } 00064 00068 CSIBCString GetMaterialName(); 00069 00073 SI_Void SetMaterial(CSLBaseMaterial *in_pNewMaterial); 00074 00078 SI_Void SetMaterialName(const CSIBCString& in_szNewMaterialName); 00079 00083 SI_Int GetPolygonCount(); 00084 00088 CSLIntArray* GetPolygonNodeCountArray(); 00089 00093 CSLIntArray* GetVertexIndices(); 00094 00098 SI_Error Synchronize(); 00099 00103 virtual SI_Error SetCount(SI_Int); 00104 00105 //********************************************************************************** 00106 // Index position helper (always only one index position list) 00107 //********************************************************************************** 00108 00113 CSLXSIIndexList* ConnectIndexList( CSLXSIIndexList* in_pNewXSIIndexList ); 00114 00118 virtual CSLXSIIndexList* AddIndexList(); 00119 00123 CSLXSIIndexList* GetIndexList(); 00124 00128 SI_Error RemoveIndexList(); 00129 00130 private: 00131 CSLIntArray m_PolygonNodeCountArray; 00132 00133 CSLIntArray m_VertexIndices; 00134 00135 CSLBaseMaterial* m_pMaterial; 00136 00137 CSIBCString m_szMaterialName; 00138 00139 CSLXSIIndexList * m_IndexList; 00140 00141 void *m_pReserved; // reserved for future extension 00142 }; 00143 00144 #endif