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