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__