00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #pragma once
00013
00015 #include "nvsgcommon.h"
00016
00017 #include "nvsg/Group.h"
00018
00019
00020 namespace nvsg
00021 {
00023
00050 class LOD : public Group
00051 {
00052 public:
00054
00055 NVSG_API static const LOD * create( void );
00056
00058
00059 NVSG_API static const LOD * createFromBase( const Group &rhs
00060 );
00061
00063
00064 NVSG_API virtual const LOD * clone( void ) const;
00065
00067 NVSG_API void setRanges( const float * ranges
00068 , size_t count
00069 );
00070
00072
00073 NVSG_API const float * getRanges( void ) const;
00074
00076
00077 NVSG_API size_t getNumberOfRanges( void ) const;
00078
00080
00083 NVSG_API void setCenter( const nvmath::Vec3f & center
00084 );
00085
00087
00088 NVSG_API const nvmath::Vec3f & getCenter( void ) const;
00089
00091
00098 NVSG_API size_t getLODToUse(const nvmath::Mat44f & modelViewMatrix
00099 ) const;
00100
00101 protected:
00103 NVSG_API LOD( void );
00104
00106 NVSG_API LOD( const Group &rhs );
00107
00109 NVSG_API LOD( const LOD &rhs );
00110
00112 NVSG_API virtual ~LOD( void );
00113
00114 private:
00115 nvmath::Vec3f m_center;
00116 std::vector<float> m_ranges;
00117 };
00118
00119 }