00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #pragma once
00013
00015 #include "nvsgcommon.h"
00016
00017 #include "nvutil/Allocator.h"
00018
00019 namespace nvsg
00020 {
00021
00023 typedef enum
00024 {
00025 CC_OUT,
00026 CC_IN,
00027 CC_PART
00028 } CullCode;
00029
00031
00034 class CullData : public nvutil::IAllocator
00035 {
00036 public:
00038 NVSG_API CullData( CullCode cullCode );
00039
00041 NVSG_API virtual ~CullData( void );
00042
00043 public:
00045
00048 NVSG_API void balance( void );
00049
00051
00053 NVSG_API void addChild( CullData *cd
00054 );
00055
00057
00058 NVSG_API const CullData * getChild( size_t i
00059 ) const;
00060
00062
00063 NVSG_API CullCode getCullCode( void ) const;
00064
00066
00068 NVSG_API size_t getNumberOfChildren( void ) const;
00069
00070 private:
00071 CullCode m_cullCode;
00072 std::vector<CullData*> m_children;
00073 };
00074
00075
00076
00077
00078
00079 inline CullData::CullData( CullCode cullCode )
00080 : m_cullCode( cullCode )
00081 {
00082 __TRACE();
00083 }
00084
00085 inline void CullData::addChild( CullData *cd )
00086 {
00087 __TRACE();
00088 m_children.push_back( cd );
00089 }
00090
00091 inline const CullData * CullData::getChild( size_t i ) const
00092 {
00093 __TRACE();
00094 __ASSERT( i < m_children.size() );
00095 return( m_children[i] );
00096 }
00097
00098 inline CullCode CullData::getCullCode( void ) const
00099 {
00100 __TRACE();
00101 return( m_cullCode );
00102 }
00103
00104 inline size_t CullData::getNumberOfChildren( void ) const
00105 {
00106 __TRACE();
00107 return( m_children.size() );
00108 }
00109
00110 }