00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #pragma once
00013
00015 #include "nvsgcommon.h"
00016
00017 #include <set>
00018 #include "nvsg/Group.h"
00019
00020 namespace nvsg
00021 {
00023
00026 class Switch : public Group
00027 {
00028 public:
00030
00031 NVSG_API static const Switch * create( void );
00032
00034
00035 NVSG_API static const Switch * createFromBase( const Group &rhs );
00036
00038
00039 NVSG_API virtual const Switch * clone( void ) const;
00040
00042 NVSG_API void setActive( void );
00043
00045
00046 NVSG_API void setActive( size_t index
00047 );
00048
00050 NVSG_API void setInactive( void );
00051
00053
00054 NVSG_API void setInactive( size_t index
00055 );
00056
00058
00059 NVSG_API size_t getNumberOfActive( void ) const;
00060
00062
00067 NVSG_API size_t getActive( std::vector<size_t>& indices ) const;
00068
00070
00072 NVSG_API bool isActive( void ) const;
00073
00075
00077 NVSG_API bool isActive( size_t index
00078 ) const;
00079
00080 NVSG_API virtual bool isDataShared( void ) const;
00081 NVSG_API virtual DataID getDataID( void ) const;
00082
00083 protected:
00085 NVSG_API Switch( void );
00086
00088 NVSG_API Switch( const Group &rhs );
00089
00091 NVSG_API Switch( const Switch &rhs );
00092
00094 NVSG_API virtual ~Switch( void );
00095
00097
00102 NVSG_API virtual bool calcBoundingSphere( void ) const;
00103
00104 private:
00106 std::set<size_t> m_activeChildren;
00107 };
00108
00109 }