XSIMesh.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:          XSIMesh.h
00019 * Creation date: January 17, 2005
00020 * Purpose:       Declaration of class 'CSLXSIMesh'
00021 *
00022 \******************************************************************************/
00023 #ifndef _XSIMESH_H
00024 #define _XSIMESH_H
00025 
00026 #include "XSIGeometry.h"
00027 
00028 class CSLXSIVertexList;
00029 class CSLXSIPolygonList;
00030 class CSLXSITriangleList;
00031 class CSLXSITriangleStripList;
00032 class CSLXSIShape;
00033 
00034 
00042 class XSIEXPORT CSLXSIMesh
00043     : public CSLXSIGeometry
00044 {
00045 public:
00046     CSLXSIMesh(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate);
00047     virtual ~CSLXSIMesh();
00048 
00052     SI_Error                        ClearXSIPolygonLists();
00053 
00057     SI_Error                        ClearXSITriangleLists();
00058 
00062     SI_Error                        ClearXSITriangleStripLists();
00063 
00067     SI_Int                          GetXSIPolygonListCount();
00068 
00072     SI_Int                          GetXSITriangleListCount();
00073 
00077     SI_Int                          GetXSITriangleStripListCount();
00078 
00082     CSLXSIPolygonList**             XSIPolygonLists();
00083 
00087     CSLXSITriangleList**            XSITriangleLists();
00088 
00092     CSLXSITriangleStripList**       XSITriangleStripLists();
00093 
00097     virtual CSLXSIPolygonList*              AddXSIPolygonList();
00098 
00102     virtual CSLXSITriangleList*             AddXSITriangleList();
00103 
00107     CSLXSITriangleStripList*        AddXSITriangleStripList();
00108 
00113     SI_Error                        RemoveXSIPolygonList(SI_Int l_nIndex);
00114 
00119     SI_Error                        RemoveXSITriangleList(SI_Int l_nIndex);
00120 
00125     SI_Error                        RemoveXSITriangleStripList(SI_Int l_nIndex);
00126 
00131     SI_Error                        RemoveXSIPolygonList(CSLXSIPolygonList* in_pObject);
00132 
00137     SI_Error                        RemoveXSITriangleList(CSLXSITriangleList* in_pObject);
00138 
00143     SI_Error                        RemoveXSITriangleStripList(CSLXSITriangleStripList* in_pObject);
00144 
00148     CSLXSIShape*                    XSIShape() { return m_pXSIShape; };
00149 
00153     CSLXSIVertexList*               XSIVertexList() { return m_pXSIVertexList; };
00154 
00159     CSLXSIShape*                    ConnectXSIShape(CSLXSIShape*);
00160 
00165     CSLXSIVertexList*               ConnectXSIVertexList(CSLXSIVertexList*);
00166 
00171     CSLXSIPolygonList*              ConnectXSIPolygonList(CSLXSIPolygonList*);
00172 
00177     CSLXSITriangleList*             ConnectXSITriangleList(CSLXSITriangleList*);
00178 
00183     CSLXSITriangleStripList*        ConnectXSITriangleStripList(CSLXSITriangleStripList*);
00184 
00188     virtual SI_Error                Synchronize();
00189 
00193     virtual ETemplateType           Type() { return XSI_MESH; };
00194 
00195     virtual SI_Error                Fix();
00196     virtual CSLAnimatableType*      ParameterFromName(SI_Char *in_szName);
00197 
00198 protected:
00199     CSLXSIShape* m_pXSIShape;
00200     CSLXSIVertexList *m_pXSIVertexList;
00201     CSIBCArray<CSLXSIPolygonList *> m_XSIPolygonLists;
00202     CSIBCArray<CSLXSITriangleList *> m_XSITriangleLists;
00203     CSIBCArray<CSLXSITriangleStripList *> m_XSITriangleStripLists;
00204 
00205     void *m_pReserved;  // reserved for future extension
00206 };
00207 
00208 #endif