NL3D::CVegetableClipBlock Class Reference

#include <vegetable_clip_block.h>

Inheritance diagram for NL3D::CVegetableClipBlock:

NL3D::CTessNodeList

Detailed Description

A block of vegetable instance groups (via sortBlocks) which are clipped in frustum together Internal to VegetableManager. Just an Handle for public.
Author:
Lionel Berenguier

Nevrax France

Date:
2001

Definition at line 52 of file vegetable_clip_block.h.

Fast clipping.

bool clip (const std::vector< CPlane > &pyramid)
void extendBBoxOnly (const CVector &vec)
void extendSphere (const CVector &vec)
void updateSphere ()
NLMISC::CAABBox _BBox
NLMISC::CBSphere _BSphere
bool _Empty

Public Member Functions

 CVegetableClipBlock ()
 Constructor.


Data Fields

CTessNodeListNext
CTessNodeListPrec

Private Attributes

uint _NumIgs
CVegetableClipBlock_RenderNext
CTessList< CVegetableSortBlock_SortBlockList

Friends

class CVegetableManager


Constructor & Destructor Documentation

NL3D::CVegetableClipBlock::CVegetableClipBlock  ) 
 

Constructor.

Definition at line 36 of file vegetable_clip_block.cpp.

References _NumIgs, and _RenderNext.

00037 {
00038         _Empty= true;
00039         _RenderNext= NULL;
00040         _NumIgs= 0;
00041 }


Member Function Documentation

bool NL3D::CVegetableClipBlock::clip const std::vector< CPlane > &  pyramid  )  [private]
 

Definition at line 82 of file vegetable_clip_block.cpp.

References _BSphere, NLMISC::CBSphere::clipBack(), and uint.

Referenced by NL3D::CVegetableManager::render().

00083 {
00084         if(_Empty) 
00085                 return false;
00086 
00087         for(uint i=0;i<pyramid.size();i++)
00088         {
00089                 // If entirely out.
00090                 if(!_BSphere.clipBack( pyramid[i] ))
00091                 {
00092                         return false;
00093                 }
00094         }
00095 
00096         return true;
00097 }

void NL3D::CVegetableClipBlock::extendBBoxOnly const CVector vec  )  [private]
 

Definition at line 45 of file vegetable_clip_block.cpp.

References NLMISC::CAABBox::extend(), and NLMISC::CAABBox::include().

Referenced by NL3D::CVegetableManager::addInstance(), and extendSphere().

00046 {
00047         if( !_BBox.include(vec) )
00048         {
00049                 _BBox.extend(vec);
00050         }
00051 }

void NL3D::CVegetableClipBlock::extendSphere const CVector vec  )  [private]
 

Definition at line 62 of file vegetable_clip_block.cpp.

References _BSphere, NLMISC::CBSphere::Center, extendBBoxOnly(), NLMISC::CBSphere::Radius, NLMISC::CAABBox::setCenter(), NLMISC::CAABBox::setHalfSize(), and updateSphere().

Referenced by NL3D::CVegetableManager::addInstance().

00063 {
00064         if(_Empty)
00065         {
00066                 _Empty= false;
00067                 _BBox.setCenter(vec);
00068                 _BBox.setHalfSize(CVector::Null);
00069                 _BSphere.Center= vec;
00070                 _BSphere.Radius= 0;
00071         }
00072         else
00073         {
00074                 extendBBoxOnly(vec);
00075                 updateSphere();
00076         }
00077 
00078 }

void NL3D::CVegetableClipBlock::updateSphere  )  [private]
 

Definition at line 55 of file vegetable_clip_block.cpp.

References _BSphere, NLMISC::CBSphere::Center, NLMISC::CAABBox::getCenter(), NLMISC::CAABBox::getRadius(), and NLMISC::CBSphere::Radius.

Referenced by NL3D::CVegetableManager::addInstance(), and extendSphere().

00056 {
00057         _BSphere.Center= _BBox.getCenter();
00058         _BSphere.Radius= _BBox.getRadius();
00059 }


Friends And Related Function Documentation

friend class CVegetableManager [friend]
 

Definition at line 62 of file vegetable_clip_block.h.


Field Documentation

NLMISC::CAABBox NL3D::CVegetableClipBlock::_BBox [private]
 

Definition at line 68 of file vegetable_clip_block.h.

NLMISC::CBSphere NL3D::CVegetableClipBlock::_BSphere [private]
 

Definition at line 69 of file vegetable_clip_block.h.

Referenced by clip(), extendSphere(), and updateSphere().

bool NL3D::CVegetableClipBlock::_Empty [private]
 

Definition at line 67 of file vegetable_clip_block.h.

uint NL3D::CVegetableClipBlock::_NumIgs [private]
 

Definition at line 89 of file vegetable_clip_block.h.

Referenced by NL3D::CVegetableManager::createIg(), CVegetableClipBlock(), and NL3D::CVegetableManager::deleteIg().

CVegetableClipBlock* NL3D::CVegetableClipBlock::_RenderNext [private]
 

Definition at line 92 of file vegetable_clip_block.h.

Referenced by CVegetableClipBlock(), and NL3D::CVegetableManager::render().

CTessList<CVegetableSortBlock> NL3D::CVegetableClipBlock::_SortBlockList [private]
 

Definition at line 86 of file vegetable_clip_block.h.

Referenced by NL3D::CVegetableManager::createSortBlock(), NL3D::CVegetableManager::deleteClipBlock(), NL3D::CVegetableManager::deleteSortBlock(), and NL3D::CVegetableManager::render().

CTessNodeList* NL3D::CTessNodeList::Next [inherited]
 

Definition at line 44 of file tess_list.h.

Referenced by NL3D::CVegetableManager::addInstance(), NL3D::CLandscape::computeDynamicLighting(), NL3D::CPatch::computeGeomorphAlphaFar1VertexListVB(), NL3D::CPatch::computeGeomorphFar0VertexListVB(), NL3D::CPatch::computeGeomorphTileVertexListVB(), NL3D::CPatch::computeGeomorphVertexList(), NL3D::CPatch::debugAllocationMarkIndicesFarList(), NL3D::CPatch::debugAllocationMarkIndicesNearList(), NL3D::CPatch::fillFar0DLMUvOnlyVertexListVB(), NL3D::CPatch::fillFar0VertexListVB(), NL3D::CPatch::fillFar1DLMUvOnlyVertexListVB(), NL3D::CPatch::fillFar1VertexListVB(), NL3D::CPatch::fillTileVertexListVB(), NL3D::CLandscape::getDynamicLightingMemoryLoad(), NL3D::CTessBlock::refillFaceVectorFar0(), NL3D::CTessBlock::refillFaceVectorFar1(), NL3D::CTessBlock::refillFaceVectorTile(), NL3D::CLandscape::refine(), NL3D::CVegetableManager::render(), NL3D::CLandscape::render(), NL3D::CPatch::updateFar0VBAlloc(), NL3D::CPatch::updateFar1VBAlloc(), NL3D::CVegetableSortBlock::updateSortBlock(), and NL3D::CPatch::updateTileVBAlloc().

CTessNodeList* NL3D::CTessNodeList::Prec [inherited]
 

Definition at line 43 of file tess_list.h.

Referenced by NL3D::CTessNodeList::CTessNodeList().


The documentation for this class was generated from the following files:
Generated on Tue Mar 16 08:21:08 2004 for NeL by doxygen 1.3.6