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 __XSIICEGEOMETRY_H__
00018 #define __XSIICEGEOMETRY_H__
00019
00020 namespace XSI {
00021
00022 class MATH::CMatrix4f;
00023 class CLongArray;
00024 class CDoubleArray;
00025 class ICENodeContext;
00026
00027
00271
00272
00273 class SICPPSDKDECL CICEGeometry
00274 {
00275 public:
00276 friend class ICENodeContext;
00277
00280 enum Type
00281 {
00282 siNoneType =0,
00283 siGroupType =1,
00284 siMeshSurfaceType =2,
00285 siNurbsSurfaceType =3,
00286 siNurbsCurveType =4,
00287 siPointCloudType =5
00288 };
00289
00292 enum DirtyState
00293 {
00294 siGeometryTypeDirtyState = 1<<0,
00296 siTransformationDirtyState = 1<<1,
00298 siPointPositionDirtyState = 1<<2,
00299 siTopologyDirtyState = 1<<3,
00302 siAnyDirtyState = siGeometryTypeDirtyState|
00303 siTransformationDirtyState|
00304 siPointPositionDirtyState|
00305 siTopologyDirtyState
00306 };
00307
00313 CICEGeometry( ICENodeContext& in_ctxt, ULONG in_nInputPortID, ULONG in_nInstanceIndex=0 ) ;
00314
00317 CICEGeometry( const CICEGeometry& in_geom );
00318
00321 CICEGeometry( );
00322
00325 ~CICEGeometry();
00326
00338 bool IsValid() const;
00339
00343 Type GetGeometryType() const;
00344
00350 bool operator == (const CICEGeometry& in_geom) const;
00351
00357 bool operator != (const CICEGeometry& in_geom) const;
00358
00364 CICEGeometry& operator = (const CICEGeometry& in_geom) ;
00365
00369 ULONG GetSubGeometryCount() const;
00370
00375 CICEGeometry GetSubGeometry( ULONG in_index ) const;
00376
00380 ULONG GetPointPositionCount() const;
00381
00419 CStatus GetPointPositions( CDoubleArray& out_points ) const;
00420
00424 ULONG GetTriangleCount() const;
00425
00464 CStatus GetTrianglePointIndices( CLongArray& out_indices ) const;
00465
00469 ULONG GetPolygonCount() const;
00470
00508 CStatus GetPolygonIndices( CLongArray& out_sizes, CLongArray& out_indices ) const;
00509
00514 ULONG GetSegmentCount() const;
00515
00553 CStatus GetSegmentIndices( CLongArray& out_indices ) const;
00554
00563 CStatus GetTransformation( XSI::MATH::CMatrix4f& out_mat44 ) const;
00564
00573 bool IsDirty( unsigned short in_flag=siAnyDirtyState ) const;
00574
00579 void ClearState( );
00580
00581 private:
00582 CStatus Init( const ICENodeContext& in_ctxt, ULONG in_nInputPortID, ULONG in_nInstanceIndex );
00583
00584 Type m_geomType;
00585 ULONG m_nInputPortID;
00586 ULONG m_nID;
00587 void* m_pParent;
00588 void* m_pGeom;
00589 void* m_pCtxt;
00590 };
00591
00592 };
00593
00594 #endif // __XSIICEGEOMETRY_H__