AtlasInstanceGeomTOC Class Reference [Atlas Runtime]

#include <atlasInstanceGeomTOC.h>

Inheritance diagram for AtlasInstanceGeomTOC:

Inheritance graph
[legend]
List of all members.

Detailed Description

Atlas instance TOC for geometry.

Most of our rendering and LOD implementation for Atlas lives in this class.


Public Member Functions

 AtlasInstanceGeomTOC ()
 ~AtlasInstanceGeomTOC ()
void clear (const F32 deltaT)
void processLOD (SceneState *s)
void renderBounds (S32 debugMode)
void batchGeometry (AtlasClipMapBatcher *cmb)
virtual void requestLoad (AtlasInstanceGeomStub *stub, U32 reason, F32 priority)
virtual void cancelLoadRequest (AtlasInstanceGeomStub *stub, U32 reason)
void loadCollisionLeafChunks ()
 Load leaf chunks to fulfill collision requests.
bool castRay (const Point3F &start, const Point3F &end, RayInfo *info, bool emptyCollide)
 Cast a ray. (Done in file space).
bool buildCollisionInfo (const Box3F &box, Convex *c, AbstractPolyList *poly, AtlasInstance *object)
 This is a unified internal collision interface for Atlas.
void initCuller (SceneState *state)

Private Types

typedef AtlasInstanceTOC<
AtlasInstanceGeomStub, AtlasResourceGeomTOC
Parent

Private Member Functions

void doSplit (StubType *s)
bool attemptSplit (StubType *s)
void warmUpData (StubType *s, F32 priority)
U16 computeLod (const Box3F &bounds) const
void updateBounds (AtlasInstanceGeomStub *stub, U32 i, S32 x, S32 y)
 Callback to allow subclasses to update stub data when we initialize.

Private Attributes

bool mLeafCollisionMode
FrustrumCuller mCuller
 Used to perform frustrum clipping.

Classes

struct  StackNode


Member Typedef Documentation


Constructor & Destructor Documentation

AtlasInstanceGeomTOC::AtlasInstanceGeomTOC (  )  [inline]

AtlasInstanceGeomTOC::~AtlasInstanceGeomTOC (  )  [inline]


Member Function Documentation

void AtlasInstanceGeomTOC::doSplit ( StubType s  )  [private]

bool AtlasInstanceGeomTOC::attemptSplit ( StubType s  )  [private]

void AtlasInstanceGeomTOC::warmUpData ( StubType s,
F32  priority 
) [private]

U16 AtlasInstanceGeomTOC::computeLod ( const Box3F bounds  )  const [inline, private]

void AtlasInstanceGeomTOC::updateBounds ( AtlasInstanceGeomStub stub,
U32  i,
S32  x,
S32  y 
) [inline, private, virtual]

Callback to allow subclasses to update stub data when we initialize.

Reimplemented from AtlasInstanceTOC< AtlasInstanceGeomStub, AtlasResourceGeomTOC >.

void AtlasInstanceGeomTOC::clear ( const F32  deltaT  ) 

void AtlasInstanceGeomTOC::processLOD ( SceneState s  ) 

void AtlasInstanceGeomTOC::renderBounds ( S32  debugMode  ) 

void AtlasInstanceGeomTOC::batchGeometry ( AtlasClipMapBatcher cmb  ) 

virtual void AtlasInstanceGeomTOC::requestLoad ( AtlasInstanceGeomStub stub,
U32  reason,
F32  priority 
) [virtual]

virtual void AtlasInstanceGeomTOC::cancelLoadRequest ( AtlasInstanceGeomStub stub,
U32  reason 
) [virtual]

void AtlasInstanceGeomTOC::loadCollisionLeafChunks (  ) 

Load leaf chunks to fulfill collision requests.

This also jiggers our load semantics so we don't unload them inadvertently.

bool AtlasInstanceGeomTOC::castRay ( const Point3F start,
const Point3F end,
RayInfo info,
bool  emptyCollide 
)

Cast a ray. (Done in file space).

bool AtlasInstanceGeomTOC::buildCollisionInfo ( const Box3F box,
Convex c,
AbstractPolyList poly,
AtlasInstance object 
)

This is a unified internal collision interface for Atlas.

We end up recursing by bounding box down into the chunks, so it makes more sense to have one set of functions that take different terminal actions rather than having to live with two sets of code. AtlasInstance2::buildConvex() and AtlasInstance2::buildPolyList() methods simply wrap this, and it fills in what is appropriate. If you were super-clever you'd go and do your poly and convex queries simultaneously.

Parameters:
localMat is used to transform everything from objectspace to worldspace.

void AtlasInstanceGeomTOC::initCuller ( SceneState state  )  [inline]


Member Data Documentation

Used to perform frustrum clipping.