xsi_cluster.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 __XSICLUSTER_H__
00018 #define __XSICLUSTER_H__
00019 
00020 #include <xsi_sceneitem.h>
00021 #include <xsi_status.h>
00022 #include <xsi_longarray.h>
00023 
00024 namespace XSI {
00025 
00026 class X3DObject;
00027 class SubComponent;
00028 class CClusterElementArray;
00029 class CBitArray;
00030 
00031 //*****************************************************************************
00085 //*****************************************************************************
00086 class SICPPSDKDECL Cluster : public SceneItem
00087 {
00088 public:
00090     Cluster();
00091 
00093     ~Cluster();
00094 
00098     Cluster(const CRef& in_ref);
00099 
00103     Cluster(const Cluster& in_obj);
00104 
00109     bool IsA( siClassID in_ClassID) const;
00110 
00114     siClassID GetClassID() const;
00115 
00121     Cluster& operator=(const Cluster& in_obj);
00122 
00128     Cluster& operator=(const CRef& in_ref);
00129 
00133     CClusterElementArray GetElements() const;
00134 
00138     X3DObject GetCenterReference() const;
00139 
00145     CStatus PutCenterReference(const X3DObject& in_centerObj);
00146 
00150     bool HasStaticKinematicState() const;
00151 
00155     CRefArray GetStaticKinematicStates() const;
00156 
00160     SubComponent CreateSubComponent();
00161 
00169     CStatus FindIndex
00170     (
00171         LONG in_geometryIndex,
00172         LONG& out_clusterIndex
00173     ) const;
00174 
00217     CStatus FindIndices
00218     (
00219         const CLongArray& in_geometryIndices,
00220         CLongArray& out_clusterIndices
00221     ) const;
00222 
00228     bool IsAlwaysComplete() const;
00229 
00311     CStatus GetGeometryElementFlags( CBitArray& out_flags ) const;
00312 
00313     private:
00314     Cluster * operator&() const;
00315     Cluster * operator&();
00316 
00317 };
00318 
00319 //*************************************************************************
00364 //*************************************************************************
00365 class SICPPSDKDECL CClusterElementArray
00366 {
00367     public:
00369     CClusterElementArray();
00370 
00374     CClusterElementArray(const CClusterElementArray& in_array);
00375 
00377     virtual ~CClusterElementArray();
00378 
00383     CClusterElementArray& operator=(const CClusterElementArray& in_array);
00384 
00388     CLongArray GetArray() const;
00389 
00393     LONG GetCount() const;
00394 
00399     LONG GetItem( LONG in_index ) const;
00400 
00405     CLongArray GetItemsByIndex( const CLongArray& in_indices ) const;
00406 
00411     LONG FindIndex( LONG in_element ) const;
00412 
00413     private:
00414     void* m_ptr;
00415 };
00416 
00417 };
00418 
00419 #endif // __XSICLUSTER_H__