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 #pragma warning(disable:4251)
00026
00027 namespace XSI {
00028
00029
00111
00112
00113 class SICPPSDKDECL CMeshBuilder : public CBase
00114 {
00115 public:
00116
00117
00125
00126
00127 class SICPPSDKDECL CErrorDescriptor : public CStatus
00128 {
00129 public:
00130
00134 CErrorDescriptor(CStatus::Code in_code);
00135
00138 ~CErrorDescriptor();
00139
00143 CLongArray m_polygonIndices;
00144
00148 CLongArray m_vertexIndices;
00149
00153 CLongArray m_edgeIndices;
00154
00158 CLongArray m_nodeIndices;
00159 };
00160
00162 CMeshBuilder();
00163
00165 ~CMeshBuilder();
00166
00170 CMeshBuilder(const CRef& in_ref);
00171
00175 CMeshBuilder(const CMeshBuilder& in_obj);
00176
00181 bool IsA( siClassID in_ClassID) const;
00182
00186 siClassID GetClassID() const;
00187
00193 CMeshBuilder& operator=(const CMeshBuilder& in_obj);
00194
00200 CMeshBuilder& operator=(const CRef& in_ref);
00201
00212 CStatus AddVertices( LONG in_nVertices, const double* in_pPos=0 );
00213
00286 CStatus SetVertexPositions( LONG in_nVertices, const double* in_pPos, LONG in_nOffset=0 );
00287
00301 CStatus AddPolygons(
00302 LONG in_nPolygons,
00303 const LONG* in_pPolyVertexCounts,
00304 const LONG* in_pVtxIndices );
00305
00315 CStatus AddTriangles( LONG in_nTriangles, const LONG* in_pVtxIndices );
00316
00324 CStatus SetEdgeCreaseValue( LONG in_nPolyID, LONG in_nPolyEdgeIndex, float in_value );
00325
00333 CStatus SetHardEdge( LONG in_nPolyID, LONG in_nPolyEdgeIndex, bool in_bFlag=true );
00334
00340 CStatus SetVertexCreaseValue( LONG in_nVtxID, float in_value );
00341
00453 CStatus SetPolygonsMaterial(
00454 const CRef& in_refMat,
00455 LONG in_nSize,
00456 const LONG* in_pPolyIndices );
00457
00491 CStatus SetPolygonsMaterial(
00492 const CRef& in_refMat,
00493 LONG in_nSize,
00494 const LONG* in_pPolyIndices,
00495 CString& io_clsName );
00496
00513 CErrorDescriptor Build(bool in_bUndoRequired);
00514
00515 private:
00516 CMeshBuilder * operator&() const;
00517 CMeshBuilder * operator&();
00518 };
00519
00520 };
00521
00522 #endif // __XSIMESHBUILDER_H__