xsi_icegeometry.h Source File
 
 
 
xsi_icegeometry.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 __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__