VR-Forces 4.0.4 Class Documentation
Public Member Functions | Protected Attributes
DtSpatialVrfObjectManagerOctree Class Reference

Spatial object manager which uses an octree. More...

Inheritance diagram for DtSpatialVrfObjectManagerOctree:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 DtSpatialVrfObjectManagerOctree (const DtManagedObjectListConstPtr &vrfObjList)
virtual ~DtSpatialVrfObjectManagerOctree ()
virtual void addVrfObjects (const DtManagedObjectListConstPtr &vrfObjects)
 Spatially sorts the vrfObjects associated in the vrfObjects.
virtual void removeVrfObject (DtVrfObject *vrfObject)
 Removes vrfObject from the set of vrfObjects we are maintaining.
virtual bool setResolutions (unsigned int xRes, unsigned int yRes, unsigned int zRes)
 Doesn't do anything. Only here for interface compatibility.
virtual void clearVrfObjects ()
 Clears all managed objects from the manager.
virtual void reset (const DtManagedObjectListConstPtr &vrfObjects)
 Clears out the current subdivision, sets it to have the minimum extent, that contains all of the DtVrfObjects specified, and adds the specified DtVrfObjects.
virtual bool getVrfObjects (const DtExtent &extent, std::set< DtVrfObject * > &objects)
 Set of functions used to get the relevant DtVrfObjects from the object manager.
virtual bool getVrfObjects (const DtExtent &extent, std::set< const DtVrfObject * > &objects) const
virtual bool getVrfObjects (DtVrfObjectPredicate &predicate, const DtExtent &extent, std::set< DtVrfObject * > &objects)
virtual bool getVrfObjects (DtVrfObjectPredicate &predicate, const DtExtent &extent, std::set< const DtVrfObject * > &objects) const
virtual bool getVrfObjects (DtChord &chord, std::list< DtVrfObject * > &objects)
virtual bool getVrfObjects (DtChord &chord, std::list< const DtVrfObject * > &objects) const
virtual bool getVrfObjects (DtVrfObjectPredicate &predicate, DtChord &chord, std::list< DtVrfObject * > &objects)
virtual bool getVrfObjects (DtVrfObjectPredicate &predicate, DtChord &chord, std::list< const DtVrfObject * > &objects) const
virtual void visitVrfObjects (const DtExtent &extent, DtSpatialSelectionFunctor &callback) const
 Functions that call the specified functor for every object intersecting the requested region (whether chord or extent).
virtual void visitVrfObjects (const DtChord &chord, DtSpatialSelectionFunctor &callback) const

Protected Attributes

DtExtent myRootExtent
 The extent of the octree.
DtOctree< DtVrfObject > * myOctree
 The octree being used to store the objects.

Private Member Functions

 DtSpatialVrfObjectManagerOctree ()
 Not implemented.
 DtSpatialVrfObjectManagerOctree (const DtSpatialVrfObjectManagerOctree &orig)
 Not implemented.
DtSpatialVrfObjectManagerOctreeoperator= (const DtSpatialVrfObjectManagerOctree &orig)
 Not implemented.

Detailed Description

Spatial object manager which uses an octree.

This manager behaves better than the spatial subdivision-based manager for scenarios which have uneven distribution of their entities across the available terrain.


Constructor & Destructor Documentation

Not implemented.

Not implemented.


Member Function Documentation

DtSpatialVrfObjectManagerOctree& DtSpatialVrfObjectManagerOctree::operator= ( const DtSpatialVrfObjectManagerOctree orig) [private]

Not implemented.

virtual void DtSpatialVrfObjectManagerOctree::addVrfObjects ( const DtManagedObjectListConstPtr vrfObjects) [virtual]

Spatially sorts the vrfObjects associated in the vrfObjects.

Implements DtSpatialVrfObjectManagerInterface.

virtual void DtSpatialVrfObjectManagerOctree::removeVrfObject ( DtVrfObject vrfObject) [virtual]

Removes vrfObject from the set of vrfObjects we are maintaining.

Parameters:
vrfObjectPointer to the object to be removed.

Implements DtSpatialVrfObjectManagerInterface.

virtual bool DtSpatialVrfObjectManagerOctree::setResolutions ( unsigned int  xRes,
unsigned int  yRes,
unsigned int  zRes 
) [virtual]

Doesn't do anything. Only here for interface compatibility.

Implements DtSpatialVrfObjectManagerInterface.

Clears all managed objects from the manager.

Does not affect the spatial container, other than to empty its cells of any elements.

Implements DtSpatialVrfObjectManagerInterface.

virtual void DtSpatialVrfObjectManagerOctree::reset ( const DtManagedObjectListConstPtr vrfObjects) [virtual]

Clears out the current subdivision, sets it to have the minimum extent, that contains all of the DtVrfObjects specified, and adds the specified DtVrfObjects.

Note:
This is provided as a memory optimization. Deleting and reallocating the spatial subdivision every tick was inefficient. So the spatial container is just cleared and resized to adjust for entities moving, being created destroyed, etc. This has the benefit of not causing a large memory reallocation, but at the disadvantage of not allowing the spatial subdivision to change its resolution.

Implements DtSpatialVrfObjectManagerInterface.

virtual void DtSpatialVrfObjectManagerOctree::visitVrfObjects ( const DtExtent extent,
DtSpatialSelectionFunctor callback 
) const [virtual]

Functions that call the specified functor for every object intersecting the requested region (whether chord or extent).

The functor should return false while additional processing should be done, and true if processing is complete and visitVrfObjects() should return. Note that processing is not guaranteed to stop immediately when the functor returns true; it is only a recommendation that processing can stop at any time.

Note:
The functor may, and probably will, be called for additional DtVrfObjects when a primitive is supplied. We are only guaranteed not to miss any that do intersect.

Implements DtSpatialVrfObjectManagerInterface.

virtual void DtSpatialVrfObjectManagerOctree::visitVrfObjects ( const DtChord chord,
DtSpatialSelectionFunctor callback 
) const [virtual]

Member Data Documentation

The extent of the octree.

The octree being used to store the objects.


The documentation for this class was generated from the following file:

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)