XSIPolygonList.h

00001 //***************************************************************************************
00002 //
00003 // File supervisor: Crosswalk team
00004 //
00005 // Copyright 2008 Autodesk, Inc.  All rights reserved.
00006 // Use of this software is subject to the terms of the Autodesk license agreement
00007 // provided at the time of installation or download, or which otherwise accompanies
00008 // this software in either electronic or hard copy form.
00009 //
00010 //***************************************************************************************
00011 
00012 #ifndef _XSIPOLYGONLIST_H
00013 #define _XSIPOLYGONLIST_H
00014 
00015 #include "XSISubComponentList.h"
00016 #include "Material.h"
00017 #include "Scene.h"
00018 #include "Model.h"
00019 #include "XSIIndexList.h"
00020 
00031 class XSIEXPORT CSLXSIPolygonList
00032     : public CSLXSISubComponentList
00033 {
00034 public:
00038     typedef CSLArrayProxy<SI_Int, SI_Int, 1> CSLIntArray;
00039 
00046     CSLXSIPolygonList(CSLScene *in_pScene, CSLModel *in_pModel, CdotXSITemplate *in_pTemplate);
00047 
00050     virtual ~CSLXSIPolygonList();
00051 
00055     virtual ETemplateType           Type() { return XSI_POLYGON_LIST; }
00056 
00060     CSLBaseMaterial*                GetMaterial() { return m_pMaterial; }
00061 
00065     CSIBCString                     GetMaterialName();
00066 
00071     SI_Void                         SetMaterial(CSLBaseMaterial *in_pNewMaterial);
00072 
00077     SI_Void                         SetMaterialName(const CSIBCString& in_szNewMaterialName);
00078 
00082     SI_Int                          GetPolygonCount();
00083 
00087     CSLIntArray*                    GetPolygonNodeCountArray();
00088 
00092     CSLIntArray*                    GetVertexIndices();
00093 
00097     SI_Error Synchronize();
00098 
00102     virtual SI_Error                    SetCount(SI_Int);
00103 
00104     //**********************************************************************************
00105     // Index position helper (always only one index position list)
00106     //**********************************************************************************
00107 
00111     CSLXSIIndexList*    ConnectIndexList( CSLXSIIndexList* in_pNewXSIIndexList );
00112 
00116     virtual CSLXSIIndexList*    AddIndexList();
00117 
00121     CSLXSIIndexList*    GetIndexList();
00122 
00126     SI_Error                            RemoveIndexList();
00127 
00128 private:
00129     CSLIntArray                     m_PolygonNodeCountArray;
00130 
00131     CSLIntArray                     m_VertexIndices;
00132 
00133     CSLBaseMaterial*                m_pMaterial;
00134 
00135     CSIBCString                     m_szMaterialName;
00136 
00137     CSLXSIIndexList *               m_IndexList;
00138 
00139     void *m_pReserved;  // reserved for future extension
00140 };
00141 
00142 #endif