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__