XSIMesh.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 /******************************************************************************\
00013 *
00014 * File:          XSIMesh.h
00015 * Creation date: January 17, 2005
00016 * Purpose:       Declaration of class 'CSLXSIMesh'
00017 *
00018 \******************************************************************************/
00019 #ifndef _XSIMESH_H
00020 #define _XSIMESH_H
00021 
00022 #include "XSIGeometry.h"
00023 
00024 class CSLXSIVertexList;
00025 class CSLXSIPolygonList;
00026 class CSLXSITriangleList;
00027 class CSLXSITriangleStripList;
00028 class CSLXSIShape;
00029 
00030 
00034 class XSIEXPORT CSLXSIMesh
00035     : public CSLXSIGeometry
00036 {
00037 public:
00038     CSLXSIMesh(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate);
00039     virtual ~CSLXSIMesh();
00040 
00044     SI_Error                        ClearXSIPolygonLists();
00045 
00049     SI_Error                        ClearXSITriangleLists();
00050 
00054     SI_Error                        ClearXSITriangleStripLists();
00055 
00059     SI_Int                          GetXSIPolygonListCount();
00060 
00064     SI_Int                          GetXSITriangleListCount();
00065 
00069     SI_Int                          GetXSITriangleStripListCount();
00070 
00074     CSLXSIPolygonList**             XSIPolygonLists();
00075 
00079     CSLXSITriangleList**            XSITriangleLists();
00080 
00084     CSLXSITriangleStripList**       XSITriangleStripLists();
00085 
00089     virtual CSLXSIPolygonList*              AddXSIPolygonList();
00090 
00094     virtual CSLXSITriangleList*             AddXSITriangleList();
00095 
00099     CSLXSITriangleStripList*        AddXSITriangleStripList();
00100 
00105     SI_Error                        RemoveXSIPolygonList(SI_Int l_nIndex);
00106 
00111     SI_Error                        RemoveXSITriangleList(SI_Int l_nIndex);
00112 
00117     SI_Error                        RemoveXSITriangleStripList(SI_Int l_nIndex);
00118 
00123     SI_Error                        RemoveXSIPolygonList(CSLXSIPolygonList* in_pObject);
00124 
00129     SI_Error                        RemoveXSITriangleList(CSLXSITriangleList* in_pObject);
00130 
00135     SI_Error                        RemoveXSITriangleStripList(CSLXSITriangleStripList* in_pObject);
00136 
00140     CSLXSIShape*                    XSIShape() { return m_pXSIShape; };
00141 
00145     CSLXSIVertexList*               XSIVertexList() { return m_pXSIVertexList; };
00146 
00151     CSLXSIShape*                    ConnectXSIShape(CSLXSIShape*);
00152 
00157     CSLXSIVertexList*               ConnectXSIVertexList(CSLXSIVertexList*);
00158 
00163     CSLXSIPolygonList*              ConnectXSIPolygonList(CSLXSIPolygonList*);
00164 
00169     CSLXSITriangleList*             ConnectXSITriangleList(CSLXSITriangleList*);
00170 
00175     CSLXSITriangleStripList*        ConnectXSITriangleStripList(CSLXSITriangleStripList*);
00176 
00180     virtual SI_Error                Synchronize();
00181 
00185     virtual ETemplateType           Type() { return XSI_MESH; };
00186 
00187     virtual SI_Error                Fix();
00188     virtual CSLAnimatableType*      ParameterFromName(SI_Char *in_szName);
00189 
00190 protected:
00191     CSLXSIShape* m_pXSIShape;
00192     CSLXSIVertexList *m_pXSIVertexList;
00193     CSIBCArray<CSLXSIPolygonList *> m_XSIPolygonLists;
00194     CSIBCArray<CSLXSITriangleList *> m_XSITriangleLists;
00195     CSIBCArray<CSLXSITriangleStripList *> m_XSITriangleStripLists;
00196 
00197     void *m_pReserved;  // reserved for future extension
00198 };
00199 
00200 #endif