VR-Forces Development_Version Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members | Public Types | Public Member Functions
DtSpatialVrfObjectManagerInterface Class Reference

Abstract interface for a spatial object manager. More...

Inheritance diagram for DtSpatialVrfObjectManagerInterface:
Inheritance graph
[legend]

Public Types

typedef boost::unordered_set
< DtVrfObject * > 
DtVrfObjectUniqueContainer
 Set of functions used to get the relevant DtVrfObjects from the object manager.
typedef boost::unordered_set
< const DtVrfObject * > 
DtVrfConstObjectUniqueContainer
typedef std::list< DtVrfObject * > DtVrfObjectContainer

Public Member Functions

virtual ~DtSpatialVrfObjectManagerInterface ()
virtual void addVrfObjects (const DtManagedObjectListConstPtr &vrfObjects)=0
 Spatially sorts the vrfObjects associated in the vrfObjects.
virtual void removeVrfObject (DtVrfObject *vrfObject)=0
 Removes vrfObject from the set of vrfObjects we are maintaining.
virtual bool setResolutions (unsigned int xRes, unsigned int yRes, unsigned int zRes)=0
 Deprecated – doesn't apply to octree manager.
virtual void clearVrfObjects ()=0
 Clears all managed objects from the manager.
virtual void reset (const DtManagedObjectListConstPtr &vrfObjects)=0
 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, DtVrfObjectUniqueContainer &objects)=0
virtual bool getVrfObjects (const DtExtent &extent, DtVrfConstObjectUniqueContainer &objects) const =0
virtual bool getVrfObjects (DtVrfObjectPredicate &predicate, const DtExtent &extent, DtVrfObjectUniqueContainer &objects)=0
virtual bool getVrfObjects (DtVrfObjectPredicate &predicate, const DtExtent &extent, DtVrfConstObjectUniqueContainer &objects) const =0
virtual bool getVrfObjects (DtChord &chord, std::list< DtVrfObject * > &objects)=0
virtual bool getVrfObjects (DtChord &chord, std::list< const DtVrfObject * > &objects) const =0
virtual bool getVrfObjects (DtVrfObjectPredicate &predicate, DtChord &chord, std::list< DtVrfObject * > &objects)=0
virtual bool getVrfObjects (DtVrfObjectPredicate &predicate, DtChord &chord, std::list< const DtVrfObject * > &objects) const =0
virtual void visitVrfObjects (const DtExtent &extent, DtSpatialSelectionFunctor &callback) const =0
 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 =0

Detailed Description

Abstract interface for a spatial object manager.

Constructor & Destructor Documentation

virtual DtSpatialVrfObjectManagerInterface::~DtSpatialVrfObjectManagerInterface ( )
inlinevirtual

Member Function Documentation

virtual void DtSpatialVrfObjectManagerInterface::addVrfObjects ( const DtManagedObjectListConstPtr vrfObjects)
pure virtual

Spatially sorts the vrfObjects associated in the vrfObjects.

Implemented in DtSpatialVrfObjectManager, and DtSpatialVrfObjectManagerOctree.

virtual void DtSpatialVrfObjectManagerInterface::removeVrfObject ( DtVrfObject vrfObject)
pure virtual

Removes vrfObject from the set of vrfObjects we are maintaining.

Parameters
vrfObjectPointer to the object to be removed.

Implemented in DtSpatialVrfObjectManager, and DtSpatialVrfObjectManagerOctree.

virtual bool DtSpatialVrfObjectManagerInterface::setResolutions ( unsigned int  xRes,
unsigned int  yRes,
unsigned int  zRes 
)
pure virtual

Deprecated – doesn't apply to octree manager.

Still necessary for DtSpatialVrfObjectManager. TODO need to push this all into the manager class, instead of having the DtPhysicalWorld assume that things are uniformly subdivided.

Implemented in DtSpatialVrfObjectManager, and DtSpatialVrfObjectManagerOctree.

virtual void DtSpatialVrfObjectManagerInterface::clearVrfObjects ( )
pure virtual

Clears all managed objects from the manager.

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

Implemented in DtSpatialVrfObjectManager, and DtSpatialVrfObjectManagerOctree.

virtual void DtSpatialVrfObjectManagerInterface::reset ( const DtManagedObjectListConstPtr vrfObjects)
pure 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.

Implemented in DtSpatialVrfObjectManager, and DtSpatialVrfObjectManagerOctree.

virtual void DtSpatialVrfObjectManagerInterface::visitVrfObjects ( const DtExtent extent,
DtSpatialSelectionFunctor callback 
) const
pure 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.

Implemented in DtSpatialVrfObjectManager, and DtSpatialVrfObjectManagerOctree.

virtual void DtSpatialVrfObjectManagerInterface::visitVrfObjects ( const DtChord chord,
DtSpatialSelectionFunctor callback 
) const
pure virtual

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

Document ID: Generated on Tue Mar 8 22:13:38 EST 2016 from SVN revision 162938
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)