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 _TRIANGLESTRIP_H 00013 #define _TRIANGLESTRIP_H 00014 00015 #include "Template.h" 00016 00017 class CSLTriangleStripList; 00018 00019 #ifndef _SL_INT_ARRAY_PROXY_EXPORT_ 00020 #define _SL_INT_ARRAY_PROXY_EXPORT_ 00021 #endif 00022 00033 class XSIEXPORT CSLTriangleStrip 00034 : public CSLTemplate 00035 { 00036 public: 00040 typedef CSLArrayProxy<SI_Int, SI_Int, 1> CSLIntArray; 00041 00042 CSLTriangleStrip(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate, CSLTriangleStripList* in_pTriStripList); 00043 virtual ~CSLTriangleStrip(); 00044 00048 SI_Int GetVertexCount () { return m_VertexIndices.GetUsed(); } 00049 00053 CSLIntArray* GetVertexIndices() { return &m_VertexIndices; } 00054 00058 SI_Int* GetVertexIndicesPtr() { return m_VertexIndices.ArrayPtr(); } 00059 00063 CSLIntArray* CreateNormalIndices(); 00064 00068 CSLIntArray* GetNormalIndices() { return m_NormalIndices; } 00069 00073 SI_Int* GetNormalIndicesPtr(); 00074 00078 SI_Error DestroyNormalIndices(); 00079 00083 CSLIntArray* CreateColorIndices(); 00084 00088 CSLIntArray* GetColorIndices() { return m_ColorIndices; } 00089 00093 SI_Int* GetColorIndicesPtr(); 00094 00098 SI_Error DestroyColorIndices(); 00099 00103 CSLIntArray* AddUVArray(); 00104 00108 CSLIntArray* GetUVIndices(SI_Int in_nId); 00109 00114 SI_Int* GetUVIndicesPtr(SI_Int in_nId); 00115 00120 SI_Error RemoveUVArray(); 00121 00125 SI_Error ClearUVArrays(); 00126 00130 SI_Int GetUVArrayCount(); 00131 00132 virtual ETemplateType Type() { return SI_TRIANGLE_STRIP; } 00133 virtual SI_Error Synchronize(); 00134 00135 private: 00136 CSLIntArray m_VertexIndices; 00137 00138 CSLIntArray* m_NormalIndices; 00139 CSIBCArray<CSLIntArray* > m_UVIndices; 00140 CSLIntArray* m_ColorIndices; 00141 00142 SI_Bool m_bSingleUV; 00143 SI_Int m_iArrayCount; 00144 00145 void *m_pReserved; // reserved for future extension 00146 }; 00147 00148 #endif