xsi_meshbuilder.h Source File
 
 
 
xsi_meshbuilder.h
Go to the documentation of this file.
00001 //*****************************************************************************
00011 //*****************************************************************************
00012 
00013 #if (_MSC_VER > 1000) || defined(SGI_COMPILER)
00014 #pragma once
00015 #endif
00016 
00017 #ifndef __XSIMESHBUILDER_H__
00018 #define __XSIMESHBUILDER_H__
00019 
00020 #include <xsi_base.h>
00021 #include <xsi_value.h>
00022 #include <xsi_status.h>
00023 #include <xsi_longarray.h>
00024 
00025 #ifdef _MSC_VER
00026 #pragma warning(disable:4251)
00027 #endif
00028 
00029 namespace XSI {
00030 
00031 //*****************************************************************************
00113 //*****************************************************************************
00114 
00115 class SICPPSDKDECL CMeshBuilder : public CBase
00116 {
00117 public:
00118 
00119         //*************************************************************************
00127         //*************************************************************************
00128 
00129         class SICPPSDKDECL CErrorDescriptor : public CStatus
00130         {
00131                 public:
00132 
00136                 CErrorDescriptor(CStatus::Code in_code);
00137 
00140                 ~CErrorDescriptor();
00141 
00145                 CLongArray m_polygonIndices;
00146 
00150                 CLongArray m_vertexIndices;
00151 
00155                 CLongArray m_edgeIndices;
00156 
00160                 CLongArray m_nodeIndices;
00161         };
00162 
00164         CMeshBuilder();
00165 
00167         ~CMeshBuilder();
00168 
00172         CMeshBuilder(const CRef& in_ref);
00173 
00177         CMeshBuilder(const CMeshBuilder& in_obj);
00178 
00183         bool IsA( siClassID in_ClassID) const;
00184 
00188         siClassID GetClassID() const;
00189 
00195         CMeshBuilder& operator=(const CMeshBuilder& in_obj);
00196 
00202         CMeshBuilder& operator=(const CRef& in_ref);
00203 
00214         CStatus AddVertices( LONG in_nVertices, const double* in_pPos=0 );
00215 
00288         CStatus SetVertexPositions( LONG in_nVertices, const double* in_pPos, LONG in_nOffset=0 );
00289 
00303         CStatus AddPolygons(
00304                 LONG in_nPolygons,
00305                 const LONG* in_pPolyVertexCounts,
00306                 const LONG* in_pVtxIndices );
00307 
00317         CStatus AddTriangles( LONG in_nTriangles, const LONG* in_pVtxIndices );
00318 
00326         CStatus SetEdgeCreaseValue( LONG in_nPolyID, LONG in_nPolyEdgeIndex, float in_value );
00327 
00335         CStatus SetHardEdge( LONG in_nPolyID, LONG in_nPolyEdgeIndex, bool in_bFlag=true );
00336 
00342         CStatus SetVertexCreaseValue( LONG in_nVtxID, float in_value );
00343 
00455         CStatus SetPolygonsMaterial(
00456                 const CRef&     in_refMat,
00457                 LONG            in_nSize,
00458                 const LONG* in_pPolyIndices );
00459 
00493         CStatus SetPolygonsMaterial(
00494                 const CRef& in_refMat,
00495                 LONG in_nSize,
00496                 const LONG* in_pPolyIndices,
00497                 CString& io_clsName );
00498 
00515         CErrorDescriptor Build(bool in_bUndoRequired);
00516 
00517         private:
00518         CMeshBuilder * operator&() const;
00519         CMeshBuilder * operator&();
00520 };
00521 
00522 };
00523 
00524 #endif // __XSIMESHBUILDER_H__