00001 /**************************************************************************************** 00002 THIS CODE IS PUBLISHED AS A SAMPLE ONLY AND IS PROVIDED "AS IS". 00003 IN NO EVENT SHALL SOFTIMAGE, AVID TECHNOLOGY, INC. AND/OR THEIR RESPECTIVE 00004 SUPPLIERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY 00005 DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 00006 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 00007 CONNECTION WITH THE USE OR PERFORMANCE OF THIS CODE . 00008 00009 COPYRIGHT NOTICE. Copyright © 1999-2002 Avid Technology Inc. . All rights reserved. 00010 00011 SOFTIMAGE is a registered trademark of Avid Technology Inc. or its subsidiaries 00012 or divisions. Windows NT is a registered trademark of Microsoft Corp. All other 00013 trademarks contained herein are the property of their respective owners. 00014 ****************************************************************************************/ 00015 00016 /******************************************************************************\ 00017 * 00018 * File: TriangleList.h 00019 * Creation date: January 15, 2002 00020 * Purpose: Declaration of class 'CSLTriangleList' 00021 * 00022 \******************************************************************************/ 00023 #ifndef _TRIANGLELIST_H 00024 #define _TRIANGLELIST_H 00025 00026 #include "Template.h" 00027 00028 class CSLBaseMaterial; 00029 00030 struct SLTriangle 00031 { 00032 SI_Int m_iVtx1; 00033 SI_Int m_iVtx2; 00034 SI_Int m_iVtx3; 00035 }; 00036 00050 class XSIEXPORT CSLTriangleList 00051 : public CSLTemplate 00052 { 00053 public: 00057 typedef CSLArrayProxy<SLTriangle, SI_Int, 3> CSLTriangleArray; 00058 00059 CSLTriangleList(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate); 00060 virtual ~CSLTriangleList(); 00061 00065 SI_Int GetTriangleCount() { return m_VertexIndices.GetUsed(); }; 00066 00070 SI_Int* GetVertexIndicesPtr() { return (SI_Int *) m_VertexIndices.ArrayPtr(); } 00071 00075 CSLTriangleArray* GetVertexIndices() { return &m_VertexIndices; } 00076 00080 CSLTriangleArray* CreateNormalIndices(); 00081 00085 CSLTriangleArray* GetNormalIndices() { return m_NormalIndices; } 00086 00090 SI_Int* GetNormalIndicesPtr(); 00091 00095 SI_Error DestroyNormalIndices(); 00096 00100 CSLTriangleArray* CreateColorIndices(); 00101 00105 CSLTriangleArray* GetColorIndices() { return m_ColorIndices; } 00106 00110 SI_Int* GetColorIndicesPtr(); 00111 00115 SI_Error DestroyColorIndices(); 00116 00120 CSLTriangleArray* AddUVArray(); 00121 00125 SI_Int GetUVArrayCount(); 00126 00130 SI_Int* GetUVIndicesPtr(SI_Int in_nId); 00131 00136 CSLTriangleArray* GetUVIndices(SI_Int in_nId); 00137 00141 SI_Error RemoveUVArray(); 00142 00146 SI_Error ClearUVArrays(); 00147 00151 CSLBaseMaterial* GetMaterial() { return m_pMaterial; } 00152 00157 SI_Void SetMaterial(CSLBaseMaterial *in_pNewMaterial) { m_pMaterial = in_pNewMaterial; } 00158 00159 virtual ETemplateType Type() { return SI_TRIANGLE_LIST; } 00160 virtual SI_Error Synchronize(); 00161 virtual CSLAnimatableType* ParameterFromName(SI_Char *in_szName); 00162 00163 private: 00164 CSLBaseMaterial* m_pMaterial; 00165 CSLTriangleArray m_VertexIndices; 00166 00167 CSLTriangleArray* m_NormalIndices; 00168 CSIBCArray<CSLTriangleArray* > m_UVIndices; 00169 CSLTriangleArray* m_ColorIndices; 00170 00171 SI_Bool m_bSingleUV; 00172 SI_Int m_iArrayCount; 00173 00174 void *m_pReserved; // reserved for future extension 00175 }; 00176 00177 #endif