00001 //***************************************************************************** 00011 //***************************************************************************** 00012 00013 #if (_MSC_VER > 1000) || defined(SGI_COMPILER) 00014 #pragma once 00015 #endif 00016 00017 #ifndef __XSIGEOMACCESSOR_H__ 00018 #define __XSIGEOMACCESSOR_H__ 00019 00020 #include <xsi_siobject.h> 00021 #include <xsi_value.h> 00022 #include <xsi_status.h> 00023 #include <xsi_transformation.h> 00024 00025 #ifdef _MSC_VER 00026 #pragma warning(disable:4251) 00027 #endif 00028 00029 namespace XSI { 00030 00031 class CBitArray; 00032 class CLongArray; 00033 class CDoubleArray; 00034 class CFloatArray; 00035 class CRefArray; 00036 00037 //***************************************************************************** 00214 //***************************************************************************** 00215 00216 class SICPPSDKDECL CGeometryAccessor : public CBase 00217 { 00218 public: 00220 CGeometryAccessor(); 00221 00223 ~CGeometryAccessor(); 00224 00228 CGeometryAccessor(const CRef& in_ref); 00229 00233 CGeometryAccessor(const CGeometryAccessor& in_obj); 00234 00239 bool IsA( siClassID in_ClassID) const; 00240 00244 siClassID GetClassID() const; 00245 00251 CGeometryAccessor& operator=(const CGeometryAccessor& in_obj); 00252 00258 CGeometryAccessor& operator=(const CRef& in_ref); 00259 00263 MATH::CTransformation GetTransform() const; 00264 00268 LONG GetPolygonCount() const; 00269 00274 CStatus GetPolygonVerticesCount(CLongArray& out_array) const; 00275 00283 CStatus GetPolygonTurnInternalEdgeOffsets(CLongArray& out_array) const; 00284 00335 CStatus GetPolygonMaterialIndices(CLongArray& out_matIndices) const; 00336 00403 CStatus GetPolygonMaterialIndicesByMaterial(const CRef& in_refMat, 00404 CBitArray& out_polyIndices) const; 00405 00409 LONG GetVertexCount() const; 00410 00419 CStatus GetVertexIndices(CLongArray& out_array) const; 00420 00430 CStatus GetVertexPositions(CDoubleArray& out_array) const; 00431 00436 CStatus GetVertexCreaseValues(CFloatArray& out_array) const; 00437 00441 LONG GetEdgeCount() const; 00442 00451 CStatus GetEdgeIndices(CLongArray& out_array) const; 00452 00457 CStatus GetEdgeCreaseValues(CFloatArray& out_array) const; 00458 00463 CStatus GetHardEdges(CBitArray& out_array) const; 00464 00468 LONG GetNodeCount() const; 00469 00478 CStatus GetNodeIndices(CLongArray& out_array) const; 00479 00518 CStatus GetNodeNormals(CFloatArray& out_array) const; 00519 00523 LONG GetTriangleCount() const; 00524 00533 CStatus GetTriangleVertexIndices(CLongArray& out_array) const; 00534 00543 CStatus GetTriangleNodeIndices(CLongArray& out_array) const; 00544 00557 CStatus GetPolygonTriangleIndex( LONG in_tindex, LONG& out_pindex ) const; 00558 00573 CStatus GetPolygonTriangleIndices( CLongArray& out_array) const; 00574 00580 CRefArray GetClusterProperties( siClusterPropertyType in_type ) const; 00581 00588 CRef GetClusterProperty( siClusterPropertyType in_type, const CString& in_nName ) const; 00589 00595 CRefArray GetUVs() const; 00596 00603 CRef GetUV( const CString& in_nName ) const; 00604 00610 CRefArray GetVertexColors() const; 00611 00618 CRef GetVertexColor( const CString& in_nName ) const; 00619 00625 CRefArray GetUserNormals() const; 00626 00633 CRef GetUserNormal( const CString& in_nName ) const; 00634 00640 CRefArray GetUserMotions() const; 00641 00648 CRef GetUserMotion( const CString& in_nName ) const; 00649 00655 CRefArray GetEnvelopeWeights() const; 00656 00663 CRef GetEnvelopeWeight( const CString& in_nName ) const; 00664 00670 CRefArray GetShapeKeys() const; 00671 00678 CRef GetShapeKey( const CString& in_nName ) const; 00679 00685 CRefArray GetWeightMaps() const; 00686 00693 CRef GetWeightMap( const CString& in_nName ) const; 00694 00700 CRefArray GetUserDataMaps( siClusterType in_type ) const; 00701 00745 CRefArray GetMaterials() const; 00746 00752 CRefArray GetClusters( siClusterType in_clsType ) const; 00753 00758 CRefArray GetClusters() const; 00759 00760 private: 00761 CGeometryAccessor * operator&() const; 00762 CGeometryAccessor * operator&(); 00763 }; 00764 00765 }; 00766 #endif // __XSIGEOMACCESSOR_H__