VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Classes | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes
DtCollisionWorld Class Reference

This class contains a Bullet btCollisionWorld, and also maintains ownership of the collision objects that are added to this world. This is the central class that can answer intersection queries with the currently loaded data.

Classes

struct  CollisionMetric
 
class  DtFidListMonitor
 
class  DtFidListMonitorImpl
 

Public Member Functions

 DtCollisionWorld ()
 
virtual ~DtCollisionWorld ()
 
virtual void initialize ()
 
virtual unsigned collisionObjectCount ()
 
virtual unsigned collisionMeshCount ()
 
virtual unsigned int uniqueTriangleCount ()
 
virtual void addCollisionObjectToWorld (const std::shared_ptr< btCollisionObject > &object, short int objectGroup=btBroadphaseProxy::DefaultFilter)
 
virtual void addCollisionObjectsToWorld (const DtCollisionObjectList &object, short int objectGroup=btBroadphaseProxy::DefaultFilter)
 
virtual unsigned int removeCollisionObjectFromWorld (const std::shared_ptr< btCollisionObject > &collisionObject)
 
virtual unsigned int removeCollisionObjectsFromWorld (const DtCollisionObjectList &)
 
virtual void removeCollisionObjectFromWorld (const std::set< long long > &OsmFidList)
 
virtual void enableHiddenCollisionObjectInWorld ()
 
virtual void enableHiddenCollisionObjectInWorld (const std::set< long long > &OsmFidList)
 
virtual bool chordIntersect (const DtChord &chord, DtVrfChordIntersectionRecord &record, bool &dataAvailable, DtIntersectionRecord::DtIntersectionType irtFlag, short int filterMask) const
 
virtual bool allIntersectsAlongChord (const DtChord &chord, DtVrfChordIntersectRecordList &intList, bool &dataAvailable, DtIntersectionRecord::DtIntersectionType irtFlag, short int filterMask) const
 
virtual bool updateWorldTransform (btCollisionObject *obj, const btTransform &)
 
virtual void setCoordinateSystem (const Coordinate_System *cs)
 
virtual const Coordinate_SystemcoordinateSystem ()
 
virtual void processTrianglesInArea (DtBulletTriangleCallback &)
 
virtual void processTrianglesForGeometry (DtBulletTriangleCallback &calllback, DtTerrainGeometryId geometryId)
 
virtual long numberOfUnloadableTerrainTriangles () const
 
virtual void setNumberOfUnloadableTerrainTriangles (long value)
 
virtual std::shared_ptr
< DtFidListMonitor
getFidListMonitor ()
 
virtual void setFidHideFunction (std::function< bool(const long long)> fcn)
 
virtual void enableMetrics (bool value)
 
virtual void getMetrics (CollisionMetric &collisionMetrics)
 

Protected Types

typedef std::set
< std::shared_ptr
< btCollisionObject > > 
CollisionObjectSet
 
typedef
std::unordered_multimap< long
long, std::shared_ptr
< btCollisionObject > > 
FidToCollisionOjectMap
 
using Mutex = tbb::spin_rw_mutex
 

Protected Member Functions

virtual btCollisionWorld * bulletCollisionWorld ()
 
virtual void deleteInternalMemberVariables ()
 
virtual void notifyFidListMonitors ()
 
virtual bool isFidHidden (const long long fid)
 
virtual void calculateMeshAndTriangleCount ()
 
virtual void resetMetrics ()
 

Protected Attributes

CollisionObjectSet myCollisionObjects
 
const Coordinate_SystemmyCoordinateSystem
 
btCollisionWorld * myCollisionWorld
 
btCollisionConfiguration * myCollisionConfiguration
 
btBroadphaseInterface * myBroadphaseInterface
 
btCollisionDispatcher * myCollisionDispatcher
 
long myNumberOfUnloadableTerrainTriangles
 
FidToCollisionOjectMap myFidToCollisionOjectMap
 
std::list< std::weak_ptr
< DtFidListMonitorImpl > > 
myFidListMonitorList
 
Mutex myMutex
 
std::function< bool(const long
long)> 
myHiddenFidFcn
 
bool myRecordMetrics
 
unsigned int myNumCollisionShapes
 
unsigned int myNumTrianglesOfAllShapes
 
bool myNumCollisionShapesDirty
 
CollisionMetric myCollisionMetrics
 
DtCollisionShapeManager myCollisionShapeManager
 

Private Member Functions

 DtCollisionWorld (const DtCollisionWorld &)=delete
 
DtCollisionWorldoperator= (const DtCollisionWorld &)=delete
 

Member Typedef Documentation

typedef std::set< std::shared_ptr<btCollisionObject> > DtCollisionWorld::CollisionObjectSet
protected
typedef std::unordered_multimap<long long, std::shared_ptr<btCollisionObject> > DtCollisionWorld::FidToCollisionOjectMap
protected

map FID / collision object

using DtCollisionWorld::Mutex = tbb::spin_rw_mutex
protected

Constructor & Destructor Documentation

DtCollisionWorld::DtCollisionWorld ( const DtCollisionWorld )
privatedelete

Not implemented.

DtCollisionWorld::DtCollisionWorld ( )
virtual DtCollisionWorld::~DtCollisionWorld ( )
virtual

Member Function Documentation

DtCollisionWorld& DtCollisionWorld::operator= ( const DtCollisionWorld )
privatedelete

Not implemented.

virtual void DtCollisionWorld::initialize ( )
virtual
virtual unsigned DtCollisionWorld::collisionObjectCount ( )
virtual
virtual unsigned DtCollisionWorld::collisionMeshCount ( )
virtual
Returns
The count of all unique collision meshes in the world. Multiple collision objects may share the same mesh.
Note
This may be slow.
virtual unsigned int DtCollisionWorld::uniqueTriangleCount ( )
virtual
Returns
The count of all unique triangles. This is the sum of all triangles in all meshes. Multiple collision objects may share a mesh.
Note
This may be slow.
virtual void DtCollisionWorld::addCollisionObjectToWorld ( const std::shared_ptr< btCollisionObject > &  object,
short int  objectGroup = btBroadphaseProxy::DefaultFilter 
)
virtual
virtual void DtCollisionWorld::addCollisionObjectsToWorld ( const DtCollisionObjectList object,
short int  objectGroup = btBroadphaseProxy::DefaultFilter 
)
virtual
virtual unsigned int DtCollisionWorld::removeCollisionObjectFromWorld ( const std::shared_ptr< btCollisionObject > &  collisionObject)
virtual
virtual unsigned int DtCollisionWorld::removeCollisionObjectsFromWorld ( const DtCollisionObjectList )
virtual
virtual void DtCollisionWorld::removeCollisionObjectFromWorld ( const std::set< long long > &  OsmFidList)
virtual

This function will "hide" the geometries associated to the FID list provided in the bullet world.

virtual void DtCollisionWorld::enableHiddenCollisionObjectInWorld ( )
virtual

Reset all hidden geometries that have associated FID (to be used on rewind for example)

virtual void DtCollisionWorld::enableHiddenCollisionObjectInWorld ( const std::set< long long > &  OsmFidList)
virtual

Reset hidden geometries from FID list.

virtual bool DtCollisionWorld::chordIntersect ( const DtChord chord,
DtVrfChordIntersectionRecord record,
bool dataAvailable,
DtIntersectionRecord::DtIntersectionType  irtFlag,
short int  filterMask 
) const
virtual

The dataAvailable flag will be set to false if this intersection encounters some data that cannot be intersected with. (Used when the BVH is being built in a background thread and hasn't finished yet)

virtual bool DtCollisionWorld::allIntersectsAlongChord ( const DtChord chord,
DtVrfChordIntersectRecordList intList,
bool dataAvailable,
DtIntersectionRecord::DtIntersectionType  irtFlag,
short int  filterMask 
) const
virtual

The dataAvailable flag will be set to false if this intersection encounters some data that cannot be intersected with. (Used when the BVH is being built in a background thread and hasn't finished yet)

virtual bool DtCollisionWorld::updateWorldTransform ( btCollisionObject obj,
const btTransform &   
)
virtual
virtual void DtCollisionWorld::setCoordinateSystem ( const Coordinate_System cs)
virtual
virtual const Coordinate_System* DtCollisionWorld::coordinateSystem ( )
virtual
virtual void DtCollisionWorld::processTrianglesInArea ( DtBulletTriangleCallback )
virtual
virtual void DtCollisionWorld::processTrianglesForGeometry ( DtBulletTriangleCallback calllback,
DtTerrainGeometryId  geometryId 
)
virtual
virtual long DtCollisionWorld::numberOfUnloadableTerrainTriangles ( ) const
virtual

Return the number of terrain triangles that are loaded initially and are not part of the terrain pager system.

virtual void DtCollisionWorld::setNumberOfUnloadableTerrainTriangles ( long  value)
virtual

Set the number of terrain triangles that are loaded initially and are not part of the terrain pager system.

virtual std::shared_ptr<DtFidListMonitor> DtCollisionWorld::getFidListMonitor ( )
virtual

Creates and returns a new DtFidListMonitor. Deletion of this monitor (by removing all references) is sufficient to remove it from the system.

virtual void DtCollisionWorld::setFidHideFunction ( std::function< bool(const long long)>  fcn)
virtual

Set the function that collision world will use to determine if FIDs are hidden or not.

virtual void DtCollisionWorld::enableMetrics ( bool  value)
virtual

Enable or not debug metrics.

virtual void DtCollisionWorld::getMetrics ( CollisionMetric collisionMetrics)
virtual

Get metrics (will reset values each time we get them)

virtual btCollisionWorld* DtCollisionWorld::bulletCollisionWorld ( )
protectedvirtual
virtual void DtCollisionWorld::deleteInternalMemberVariables ( )
protectedvirtual

delete internal member variables

virtual void DtCollisionWorld::notifyFidListMonitors ( )
protectedvirtual

Notifies all monitors on the FID List Monitor list of a FID list change.

virtual bool DtCollisionWorld::isFidHidden ( const long long  fid)
protectedvirtual
virtual void DtCollisionWorld::calculateMeshAndTriangleCount ( )
protectedvirtual

Calculates myNumCollisionShapes and myNumTrianglesOfAllShapes if dirty. This can be slow if recalculation is needed.

virtual void DtCollisionWorld::resetMetrics ( )
protectedvirtual

reset metrics values

Member Data Documentation

CollisionObjectSet DtCollisionWorld::myCollisionObjects
protected
const Coordinate_System* DtCollisionWorld::myCoordinateSystem
protected
btCollisionWorld* DtCollisionWorld::myCollisionWorld
protected
btCollisionConfiguration* DtCollisionWorld::myCollisionConfiguration
protected
btBroadphaseInterface* DtCollisionWorld::myBroadphaseInterface
protected
btCollisionDispatcher* DtCollisionWorld::myCollisionDispatcher
protected
long DtCollisionWorld::myNumberOfUnloadableTerrainTriangles
protected
FidToCollisionOjectMap DtCollisionWorld::myFidToCollisionOjectMap
protected
std::list<std::weak_ptr<DtFidListMonitorImpl> > DtCollisionWorld::myFidListMonitorList
protected
Mutex DtCollisionWorld::myMutex
mutableprotected
std::function<bool(const long long)> DtCollisionWorld::myHiddenFidFcn
protected
bool DtCollisionWorld::myRecordMetrics
protected

Are debug metrics enable.

unsigned int DtCollisionWorld::myNumCollisionShapes
protected

The number of collision shapes (collision objects may share shapes)

unsigned int DtCollisionWorld::myNumTrianglesOfAllShapes
protected

The number of triangles of all the shapes (not individual objects) In the case of two objects sharing a shape, only triangles from one instance of the shape will be added.

bool DtCollisionWorld::myNumCollisionShapesDirty
protected

Whether the myNumCollisionShapes needs to be recalculated;.

CollisionMetric DtCollisionWorld::myCollisionMetrics
protected

Structure holding all the metric.

DtCollisionShapeManager DtCollisionWorld::myCollisionShapeManager
protected

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

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)