TriangleStripList.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 _TRIANGLESTRIPLIST_H
00013 #define _TRIANGLESTRIPLIST_H
00014 
00015 #include "Template.h"
00016 
00017 class CSLTriangleStrip;
00018 class CSLBaseMaterial;
00019 
00020 
00027 class XSIEXPORT CSLTriangleStripList
00028     : public CSLTemplate
00029 {
00030 public:
00031     CSLTriangleStripList(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate);
00032     virtual ~CSLTriangleStripList();
00033 
00037     CSLTriangleStrip*               AddTriangleStrip();
00038 
00042     SI_Int                          GetTriangleStripCount();
00043 
00047     CSLTriangleStrip**              TriangleStrips();
00048 
00053     SI_Error                        RemoveTriangleStrip(SI_Int in_nIndex);
00054 
00059     SI_Error                        RemoveTriangleStrip(CSLTriangleStrip *in_pTriangleStrip);
00060 
00064     SI_Error                        ClearTriangleStrips();
00065 
00069     CSLBaseMaterial*                GetMaterial() { return m_pMaterial; }
00070 
00075     SI_Void                         SetMaterial(CSLBaseMaterial *in_pNewMaterial) { m_pMaterial = in_pNewMaterial; }
00076 
00077     // Connection functions
00078     CSLTriangleStrip*               ConnectTriangleStrip(CSLTriangleStrip* in_pNewTriStrip);
00079 
00080     virtual ETemplateType           Type() { return SI_TRIANGLE_STRIP_LIST; }
00081     virtual SI_Error                Synchronize();
00082     virtual CSLAnimatableType*      ParameterFromName(SI_Char *in_szName);
00083 
00084 private:
00085     CSIBCArray<CSLTriangleStrip* >  m_TriangleStrips;
00086     CSLBaseMaterial*                m_pMaterial;
00087 
00088     void *m_pReserved;  // reserved for future extension
00089 };
00090 
00091 #endif