ForestCell

Engine/source/forest/forestCell.h

More...

Public Friends

class

Protected Attributes

A vector of the current batches associated with this cell.

The combined bounding box of all the items in or children of this cell.

bool

If items have been added or removed the dirty flag is set so that the bounds can be rebuilt on the next request.

bool

Whether this cell is fully contained inside interior zones.

All the items in this cell.

The largest item in this cell.

PhysicsBody for client and server for all trees in this ForestCell, if it is a leaf cell.

The area which this cell represents in the world.

The quad tree cells below this one which may contain sub elements.

The zone overlap for this cell.

Public Static Attributes

The maximum amount of objects allowed in a cell before we repartition it.

Public Functions

bool
castRay(const Point3F & start, const Point3F & end, RayInfo * outInfo, bool rendered)
bool
findIndexByKey(ForestItemKey key, U32 * outIndex)

The find function does a binary search thru the sorted item list.

The bounds of the cell generated by combining the bounds of all the contained items or child cells.

Returns the child cell at the position.

getChildren(Vector< ForestCell * > * outCells)

Returns the child cells.

Returns the items from this one cell.

getItems(Vector< ForestItem > * outItems)

Returns the items from this cell and all its sub-cells.

Returns the 2D rectangle of quad tree bounds for this cell.

Returns a bit vector of what zones overlap this cell.

bool

Set flag so this cells bounds will be recalculated the next call to getBounds.

bool

Returns true if this cell has child cells.

bool

Returns true if this cell has no items and no child cells.

bool

Returns true if this cell does not have child cells.

bool
removeItem(ForestItemKey key, const Point3F & keyPos, bool deleteIfEmpty)
render(TSRenderState * rdata, const Frustum * culler)

Detailed Description

Public Friends

Protected Attributes

Vector< ForestCellBatch * > mBatches 

A vector of the current batches associated with this cell.

Box3F mBounds 

The combined bounding box of all the items in or children of this cell.

bool mIsDirty 

If items have been added or removed the dirty flag is set so that the bounds can be rebuilt on the next request.

bool mIsInteriorOnly 

Whether this cell is fully contained inside interior zones.

Vector< ForestItem > mItems 

All the items in this cell.

ForestItem mLargestItem 

The largest item in this cell.

PhysicsBody * mPhysicsRep [2]

PhysicsBody for client and server for all trees in this ForestCell, if it is a leaf cell.

RectF mRect 

The area which this cell represents in the world.

ForestCell * mSubCells [4]

The quad tree cells below this one which may contain sub elements.

BitVector mZoneOverlap 

The zone overlap for this cell.

note:

The bit for the outdoor zone is never set.

Public Static Attributes

const U32 MaxItems 

The maximum amount of objects allowed in a cell before we repartition it.

Protected Functions

_getSubCell(F32 x, F32 y)

_makeChildRect(U32 index)

_updateBounds()

_updateZoning(const SceneZoneSpaceManager * zoneManager)

Public Functions

ForestCell(const RectF & rect)

~ForestCell()

buildBatches()

buildPhysicsRep(Forest * forest)

castRay(const Point3F & start, const Point3F & end, RayInfo * outInfo, bool rendered)

clearPhysicsRep(Forest * forest)

findIndexByKey(ForestItemKey key, U32 * outIndex)

The find function does a binary search thru the sorted item list.

If the key is found then the index is the position of the item. If the key is not found the index is the correct insertion position for adding the new item.

Parameters:

key

The item key to search for.

outIndex

The item index or insertion index if the item was not found.

return:

Returns true if the item index is found.

freeBatches()

getBounds()

The bounds of the cell generated by combining the bounds of all the contained items or child cells.

getChildAt(const Point3F & pos)

Returns the child cell at the position.

The position is assumed to be within this cell.

getChildren(Vector< const ForestCell * > * outCells)

getChildren(Vector< ForestCell * > * outCells)

Returns the child cells.

getItems()

Returns the items from this one cell.

getItems(Vector< ForestItem > * outItems)

Returns the items from this cell and all its sub-cells.

getLargestItem()

getRect()

Returns the 2D rectangle of quad tree bounds for this cell.

It is fixed and does not change during runtime.

getZoneOverlap()

Returns a bit vector of what zones overlap this cell.

hasBatches()

insertItem(ForestItemKey key, ForestItemData * data, const MatrixF & xfm, F32 scale)

invalidateBounds()

Set flag so this cells bounds will be recalculated the next call to getBounds.

isBranch()

Returns true if this cell has child cells.

This is the same as !isLeaf() but exists for clarity.

isEmpty()

Returns true if this cell has no items and no child cells.

isLeaf()

Returns true if this cell does not have child cells.

It should directly contain items.

removeItem(ForestItemKey key, const Point3F & keyPos, bool deleteIfEmpty)

render(TSRenderState * rdata, const Frustum * culler)

renderBatches(SceneRenderState * state, Frustum * culler)