Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

CullData.h

Go to the documentation of this file.
00001 // Copyright NVIDIA Corporation 2002-2004
00002 // TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED
00003 // *AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS
00004 // OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY
00005 // AND FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS
00006 // BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES
00007 // WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,
00008 // BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS)
00009 // ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF NVIDIA HAS
00010 // BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES 
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   // inlines
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 } //  namespace nvsg

Generated on Tue Mar 1 13:19:19 2005 for NVSGSDK by NVIDIA