eng::World::Quadrant Class Reference

A Quadrant is a subdivision of the World. More...

#include <eng_world.hh>

List of all members.

Public Types

enum  eState { EMPTY, SHRUNK, POPULATING, POPULATED }

Public Member Functions

 Quadrant (const Int3 &triplet, const fp edge, const uint seed)
 ~Quadrant ()
FN_LOCKED void Populate (void)
FN_LOCKED uint Shrink (void)
FN_LOCKED eAttached Attach (SharedPtr< Object > object)
FN_LOCKED eAttached Detach (SharedPtr< Object > object)
FN_REENTRANT void Draw (void)
FN_LOCKED const
BoxVolume
GetBoxVolume (void)
FN_LOCKED WorldVertex GetCenter (void)
FN_LOCKED Int3 GetTriplet (void)
FN_REENTRANT eState GetState (void)
FN_LOCKED void SetState (eState state)
FN_LOCKED uint GetSeed (void)
FN_REENTRANT uint GetObjectCnt (void)

Public Attributes

SlowLock mLock
 Quadrant's thread must lock Quadrant.

Private Member Functions

BoxVolume ComputeBoxVolume (const Int3 &triplet, const fp edge)

Private Attributes

Int3 mTriplet
 tuple
eState mState
 populating, shrunk, empty
uint mSeed
 random seed
BSP mBSP
 defines the Quadrant in world space
int mObjectCnt
 how many Objects
CLASS_VAR fp msEdge
 width in World Space

Friends

void ThreadQuadrantPopulate (long quadrant)

Classes

class  ShrinkEachObjectFunctor


Detailed Description

A Quadrant is a subdivision of the World.

Quadrant must be threadable. Quadrants are populated by separate thread. A busy flag is used to prevent more than one thread populating the same Quadrant.


Member Enumeration Documentation

enum eng::World::Quadrant::eState

Enumerator:
EMPTY 
SHRUNK 
POPULATING 
POPULATED 


Constructor & Destructor Documentation

eng::World::Quadrant::Quadrant ( const Int3 triplet,
const fp  edge,
const uint  seed 
)

Construct a quadrant.

Parameters:
triplet mQuadrants[x,y,z].
edge Edge of any quadrant (world coord). Each edge is the same width.
seed Random seed used for populating this Quadrant.

eng::World::Quadrant::~Quadrant (  ) 


Member Function Documentation

void eng::World::Quadrant::Populate ( void   ) 

Populate this Quadrant with Objects. How to populate is a module-specific method. Engine defers to module via World::PopulateQuadrant().

uint eng::World::Quadrant::Shrink ( void   ) 

Shrink Quadrant. Delete reproducible Objects in this Quadrant to save memory. This occurs when a Locus moves away from a Quadrant.

NOTE: Quadrant::GetObjectCnt() will still count shrunk Objects. The reason is that they will be marked-for-deletion. That's why Shrink() returns the count of Objects that were shrunk.

FN_LOCKED eAttached eng::World::Quadrant::Attach ( SharedPtr< Object object  ) 

FN_LOCKED eAttached eng::World::Quadrant::Detach ( SharedPtr< Object object  ) 

void eng::World::Quadrant::Draw ( void   ) 

Draw Quadrant. See Engine::Draw().

const BoxVolume & eng::World::Quadrant::GetBoxVolume ( void   ) 

Quadrant methods.

WorldVertex eng::World::Quadrant::GetCenter ( void   ) 

Int3 eng::World::Quadrant::GetTriplet ( void   ) 

World::Quadrant::eState eng::World::Quadrant::GetState ( void   ) 

void eng::World::Quadrant::SetState ( eState  state  ) 

uint eng::World::Quadrant::GetSeed ( void   ) 

uint eng::World::Quadrant::GetObjectCnt ( void   ) 

BoxVolume eng::World::Quadrant::ComputeBoxVolume ( const Int3 triplet,
const fp  edge 
) [private]


Friends And Related Function Documentation

void ThreadQuadrantPopulate ( long  quadrant  )  [friend]


Member Data Documentation

SlowLock eng::World::Quadrant::mLock

Quadrant's thread must lock Quadrant.

Int3 eng::World::Quadrant::mTriplet [private]

tuple

eState eng::World::Quadrant::mState [private]

populating, shrunk, empty

uint eng::World::Quadrant::mSeed [private]

random seed

BSP eng::World::Quadrant::mBSP [private]

defines the Quadrant in world space

int eng::World::Quadrant::mObjectCnt [private]

how many Objects

fp eng::World::Quadrant::msEdge [private]

width in World Space


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:25 2007