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: Mesh.h 00019 * Creation date: January 15, 2002 00020 * Purpose: Declaration of class 'CSLMesh' 00021 * 00022 \******************************************************************************/ 00023 #ifndef _MESH_H 00024 #define _MESH_H 00025 00026 #include "Geometry.h" 00027 00028 class CSLPolygonList; 00029 class CSLTriangleList; 00030 class CSLTriangleStripList; 00031 class CSLBaseShape; 00032 00033 00041 class XSIEXPORT CSLMesh 00042 : public CSLGeometry 00043 { 00044 public: 00045 CSLMesh(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate); 00046 virtual ~CSLMesh(); 00047 00051 SI_Error ClearPolygonLists(); 00052 00056 SI_Error ClearTriangleLists(); 00057 00061 SI_Error ClearTriangleStripLists(); 00062 00066 SI_Int GetPolygonListCount(); 00067 00071 SI_Int GetTriangleListCount(); 00072 00076 SI_Int GetTriangleStripListCount(); 00077 00083 CSLPolygonList** PolygonLists(); 00084 00088 CSLTriangleList** TriangleLists(); 00089 00093 CSLTriangleStripList** TriangleStripLists(); 00094 00098 CSLPolygonList* AddPolygonList(); 00099 00103 CSLTriangleList* AddTriangleList(); 00104 00108 CSLTriangleStripList* AddTriangleStripList(); 00109 00114 SI_Error RemovePolygonList(SI_Int l_nIndex); 00115 00120 SI_Error RemoveTriangleList(SI_Int l_nIndex); 00121 00126 SI_Error RemoveTriangleStripList(SI_Int l_nIndex); 00127 00132 SI_Error RemovePolygonList(CSLPolygonList* in_pObject); 00133 00138 SI_Error RemoveTriangleList(CSLTriangleList* in_pObject); 00139 00144 SI_Error RemoveTriangleStripList(CSLTriangleStripList* in_pObject); 00145 00149 CSLBaseShape* Shape() { return m_pShape; }; 00150 00151 // Connection functions 00152 CSLBaseShape* ConnectShape(CSLBaseShape*); 00153 CSLPolygonList* ConnectPolygonList(CSLPolygonList*); 00154 CSLTriangleList* ConnectTriangleList(CSLTriangleList*); 00155 CSLTriangleStripList* ConnectTriangleStripList(CSLTriangleStripList*); 00156 00157 virtual SI_Error Synchronize(); 00158 virtual SI_Error Fix(); 00159 virtual ETemplateType Type() { return SI_MESH; }; 00160 virtual CSLAnimatableType* ParameterFromName(SI_Char *in_szName); 00161 00162 private: 00163 CSLBaseShape* m_pShape; 00164 CSIBCArray<CSLPolygonList *> m_PolygonLists; 00165 CSIBCArray<CSLTriangleList *> m_TriangleLists; 00166 CSIBCArray<CSLTriangleStripList *> m_TriangleStripLists; 00167 00168 void *m_pReserved; // reserved for future extension 00169 }; 00170 00171 #endif