Mesh.h

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