eng::BSP::Node Class Reference

BSP node. More...

List of all members.

Public Types

typedef list< shptr
< Object > > 
ObjectList
typedef NodePtr

Public Member Functions

 Node (const BoxVolume &boxVolume)
 ~Node ()
bool IfInside (const WorldVertex &viewpoint) const
bool IfInside (const Volume &volume) const
bool IfInside (const BoxVolume &boxVolume) const
eAttached Attach (SharedPtr< Object > object)
eAttached Detach (SharedPtr< Object > object)
void Draw (const BSP::Viewpoint &viewpoint)
void ForEachObject (BSP::ForEachObjectFunctor &functor)
ObjectListGetOrNewObjectList (void)

Public Attributes

BoxVolume mBoxVolume
 in world space
Node::Ptr mLeft
 left partition (left/right are metaphorical)
Node::Ptr mRight
 right partition (left/right are metaphorical)

Private Member Functions

void DrawVisit (void)

Private Attributes

ObjectListmObjectList
 lazy-allocated, probably most partitions will be empty
Bits mBits
CLASS_CONST uint NODE_OBJECT_LIMIT = 0x7fff

Classes

struct  Bits
 < minimize Node More...


Detailed Description

BSP node.

Node defines a partition and its volume. Node may have 0 or more Objects. Node may point to 0 or 2 Nodes.


Member Typedef Documentation

typedef list< shptr<Object> > eng::BSP::Node::ObjectList

typedef Node* eng::BSP::Node::Ptr


Constructor & Destructor Documentation

eng::BSP::Node::Node ( const BoxVolume boxVolume  ) 

ctor/dtor.

eng::BSP::Node::~Node (  ) 


Member Function Documentation

bool eng::BSP::Node::IfInside ( const WorldVertex &  viewpoint  )  const [inline]

bool eng::BSP::Node::IfInside ( const Volume volume  )  const [inline]

bool eng::BSP::Node::IfInside ( const BoxVolume boxVolume  )  const [inline]

eAttached eng::BSP::Node::Attach ( SharedPtr< Object object  ) 

eAttached eng::BSP::Node::Detach ( SharedPtr< Object object  ) 

void eng::BSP::Node::Draw ( const BSP::Viewpoint viewpoint  ) 

Recursively draw visible Objects in BSP nodes. Traverses the BSP tree in back-to-front order relative to a viewpoint. The first Object visited will be the most distant from the viewpoint.

void eng::BSP::Node::ForEachObject ( BSP::ForEachObjectFunctor functor  ) 

For each Object.

ObjectList* eng::BSP::Node::GetOrNewObjectList ( void   )  [inline]

void eng::BSP::Node::DrawVisit ( void   )  [private]

Draw all Objects in this partition.


Member Data Documentation

BoxVolume eng::BSP::Node::mBoxVolume

in world space

Node::Ptr eng::BSP::Node::mLeft

left partition (left/right are metaphorical)

Node::Ptr eng::BSP::Node::mRight

right partition (left/right are metaphorical)

ObjectList* eng::BSP::Node::mObjectList [private]

lazy-allocated, probably most partitions will be empty

Bits eng::BSP::Node::mBits [private]

CLASS_CONST uint eng::BSP::Node::NODE_OBJECT_LIMIT = 0x7fff [private]


The documentation for this class was generated from the following files: Palomino 3D Engine documents generated by doxygen 1.5.3 on Fri Nov 23 11:26:21 2007