18 #include <vlutil/vlSmartPointers.h>
20 #include <tbb/spin_rw_mutex.h>
23 #include <unordered_map>
25 #include <BulletCollision/CollisionShapes/btTriangleCallback.h>
99 const std::shared_ptr<btCollisionObject>&
object,
100 short int objectGroup = btBroadphaseProxy::DefaultFilter);
104 short int objectGroup = btBroadphaseProxy::DefaultFilter);
107 const std::shared_ptr<btCollisionObject>& collisionObject);
126 short int filterMask )
const;
134 short int filterMask)
const;
175 virtual void enableMetrics(
bool value);
181 virtual btCollisionWorld* bulletCollisionWorld();
184 virtual void deleteInternalMemberVariables();
187 virtual void notifyFidListMonitors();
189 virtual bool isFidHidden(
const long long fid);
193 virtual void calculateMeshAndTriangleCount();
218 virtual void resetMetrics();
244 virtual void processTriangle(btVector3* triangle,
int partId,
int triangleIndex)
override;
245 virtual void setTransform(btTransform* transform);
248 virtual int terrainCategoryMask()
const;
251 btVector3 translatePoint(
const btVector3& v);
virtual void enableHiddenCollisionObjectInWorld()
Reset all hidden geometries that have associated FID (to be used on rewind for example) ...
virtual void setFidHideFunction(std::function< bool(const long long)> fcn)
Set the function that collision world will use to determine if FIDs are hidden or not...
This class tracks collision shapes, assigns them IDs and keeps weak pointers to the shapes so they ca...
Definition: collisionShapeManager.h:16
NOTE: This entire class is deprecated, in favor of Dt3dChord.
Definition: chord.h:40
DtTriangleOutputInterface & myOutput
Definition: collisionWorld.h:254
unsigned int myNumTrianglesOfAllShapes
The number of triangles of all the shapes (not individual objects) In the case of two objects sharing...
Definition: collisionWorld.h:227
DtVrfChordIntersectionRecord represents a list of DtChordIntersectRecords. This is useful for followi...
Definition: vrfChordIntersectRecordList.h:31
int myMetricRemoveCollisionObjectToWorld
Number of addCollisionObjectToWorld added objects since the last getMetrics call. ...
Definition: collisionWorld.h:167
virtual const Coordinate_System * coordinateSystem()
unsigned int myAllIntersectsAlongChord
allIntersectsAlongChord count
Definition: collisionWorld.h:171
Definition: collisionWorld.h:237
CollisionMetric myCollisionMetrics
Structure holding all the metric.
Definition: collisionWorld.h:232
unsigned int myChordIntersect
chordIntersect count
Definition: collisionWorld.h:169
virtual unsigned int removeCollisionObjectFromWorld(const std::shared_ptr< btCollisionObject > &collisionObject)
virtual bool allIntersectsAlongChord(const DtChord &chord, DtVrfChordIntersectRecordList &intList, bool &dataAvailable, DtIntersectionRecord::DtIntersectionType irtFlag, short int filterMask) const
The dataAvailable flag will be set to false if this intersection encounters some data that cannot be ...
A version of btTriangleMesh that also holds soil type for each polygon.
Definition: bvhTriangleMeshShape.h:28
tbb::spin_rw_mutex Mutex
Definition: collisionWorld.h:213
virtual void setCoordinateSystem(const Coordinate_System *cs)
virtual bool chordIntersect(const DtChord &chord, DtVrfChordIntersectionRecord &record, bool &dataAvailable, DtIntersectionRecord::DtIntersectionType irtFlag, short int filterMask) const
The dataAvailable flag will be set to false if this intersection encounters some data that cannot be ...
Debug Metrics.
Definition: collisionWorld.h:162
const DtTerrainProcessPolygonsBox * myBox
Definition: collisionWorld.h:256
virtual long numberOfUnloadableTerrainTriangles() const
Return the number of terrain triangles that are loaded initially and are not part of the terrain page...
virtual unsigned collisionObjectCount()
unsigned int myNumCollisionShapes
The number of collision shapes (collision objects may share shapes)
Definition: collisionWorld.h:224
btCollisionConfiguration * myCollisionConfiguration
Definition: collisionWorld.h:203
void * myVrfUsr
Definition: collisionWorld.h:259
virtual unsigned int removeCollisionObjectsFromWorld(const DtCollisionObjectList &)
virtual bool updateWorldTransform(btCollisionObject *obj, const btTransform &)
unsigned int DtTerrainGeometryId
Unique ID numbers that reference a specific geometry (or set of triangles) in the terrain...
Definition: terrainProcessPolygonsBox.h:38
virtual unsigned int uniqueTriangleCount()
virtual void processTrianglesForGeometry(DtBulletTriangleCallback &calllback, DtTerrainGeometryId geometryId)
DtTerrainCategoryMask myTerrainCategoryMask
Definition: collisionWorld.h:260
std::unordered_multimap< long long, std::shared_ptr< btCollisionObject > > FidToCollisionOjectMap
map FID / collision object
Definition: collisionWorld.h:209
virtual void addCollisionObjectsToWorld(const DtCollisionObjectList &object, short int objectGroup=btBroadphaseProxy::DefaultFilter)
virtual unsigned collisionMeshCount()
Definition: coordSystem.h:54
Mutex myMutex
Definition: collisionWorld.h:214
std::set< std::shared_ptr< btCollisionObject > > CollisionObjectSet
Definition: collisionWorld.h:197
FidToCollisionOjectMap myFidToCollisionOjectMap
Definition: collisionWorld.h:210
std::list< std::weak_ptr< DtFidListMonitorImpl > > myFidListMonitorList
Definition: collisionWorld.h:211
bool myNumCollisionShapesDirty
Whether the myNumCollisionShapes needs to be recalculated;.
Definition: collisionWorld.h:229
DtCollisionShapeManager myCollisionShapeManager
Definition: collisionWorld.h:234
bool myRecordMetrics
Are debug metrics enable.
Definition: collisionWorld.h:221
const Coordinate_System * myCoordinateSystem
Definition: collisionWorld.h:200
virtual void initialize()
Definition: bulletUtil.h:49
A monitor class returned by DtCollisionWorld that a user may use to monitor for changes to the list o...
Definition: collisionWorld.h:48
Definition: vrfChordIntersectionRecord.h:19
std::list< std::shared_ptr< btCollisionObject > > DtCollisionObjectList
Definition: bulletUtil.h:47
btTransform * myTransform
Definition: collisionWorld.h:255
unsigned int DtTerrainCategoryMask
This bitmask is made using DtTerrainCategory values.
Definition: rwTerrainCategoryMask.h:27
btCollisionDispatcher * myCollisionDispatcher
Definition: collisionWorld.h:205
std::atomic< bool > myChanged
Definition: collisionWorld.h:59
#define DT_DLL_vantageTerrainImplementation
This file is used to determine how to build.
Definition: vantageTerrainImplementationDefines.h:28
const DtCollisionObjectInterface * myCollisionObject
Definition: collisionWorld.h:257
CollisionObjectSet myCollisionObjects
Definition: collisionWorld.h:198
long myNumberOfUnloadableTerrainTriangles
Definition: collisionWorld.h:206
Interface for getting terrain triangle data out of DtTerrainInterface::trianglesInArea. This object should always be created on the stack.
Definition: terrainProcessPolygonsBox.h:134
This class contains a Bullet btCollisionWorld, and also maintains ownership of the collision objects ...
Definition: collisionWorld.h:41
virtual void processTrianglesInArea(DtBulletTriangleCallback &)
virtual ~DtCollisionWorld()
const DtTriangleMeshWithSoil * myMesh
Definition: collisionWorld.h:258
DtCollisionWorld & operator=(const DtCollisionWorld &)=delete
Not implemented.
btBroadphaseInterface * myBroadphaseInterface
Definition: collisionWorld.h:204
std::function< bool(const long long)> myHiddenFidFcn
Definition: collisionWorld.h:215
virtual void setNumberOfUnloadableTerrainTriangles(long value)
Set the number of terrain triangles that are loaded initially and are not part of the terrain pager s...
virtual std::shared_ptr< DtFidListMonitor > getFidListMonitor()
Creates and returns a new DtFidListMonitor. Deletion of this monitor (by removing all references) is ...
btCollisionWorld * myCollisionWorld
Definition: collisionWorld.h:201
int myMetricAddCollisionObjectToWorld
Number of addCollisionObjectToWorld added objects since the last getMetrics call. ...
Definition: collisionWorld.h:165
DtIntersectionType
Definition: intersectionRecord.h:41
virtual void addCollisionObjectToWorld(const std::shared_ptr< btCollisionObject > &object, short int objectGroup=btBroadphaseProxy::DefaultFilter)
Represents an area query which can be used to extract triangles from DtTerrainInterface. The box points are in local but the box is always projected against the local topo at the center point of the box.
Definition: terrainProcessPolygonsBox.h:60
Implementation of DtFidListMonitor that is accessible only to the internal calls of DtCollisionWorld...
Definition: collisionWorld.h:64