16#include <VxMath/VxMath.h>
18#include <matrix/vlVector.h>
20#include <vrfobjcore/simObjectReference.h>
21#include <vrfobjcore/compositePredicate.h>
22#include <vrfobjcore/simObject.h>
24#include <tbb/spin_mutex.h>
Class for converting between different coordinate systems.
Definition coordConverter.h:31
DtVortexCollisionProxyGenerator(const DtVortexCollisionProxyGenerator &)=delete
DtVortexCollisionProxyGenerator()=delete
Default constructor, copy constructor, and copy assignment operator not allowed.
std::map< Vx::VxPart *, DtUUID > myVxPartToUUIDMap
Mapping from Vortex parts to VR-Forces UUIDs.
Definition vortexCollisionProxyGenerator.h:255
void removeProxyVehicleFromVortexUniverse(Vx::VxPart *VxProxyVehicle)
Removes a proxy vehicle from the Vortex universe.
bool myTerrainIsGeocentric
Flag indicating if the terrain uses geocentric coordinates.
Definition vortexCollisionProxyGenerator.h:232
virtual bool isPlayerControlled(const DtSimObject &vehicle) const
Checks if a vehicle is player controlled.
std::vector< DtEntityType > myObjectTypesToCollideWith
List of entity types that Vortex vehicles will collide with.
Definition vortexCollisionProxyGenerator.h:261
DtCoordinateConvert * myCoordConverter
Coordinate converter for geocentric/local transformations.
Definition vortexCollisionProxyGenerator.h:238
int mySearchRadius
Maximum distance in meters to search for nearby vehicles.
Definition vortexCollisionProxyGenerator.h:152
tbb::spin_mutex myMutex
Mutex for thread-safe access to data structures.
Definition vortexCollisionProxyGenerator.h:267
void updateProxyVehicleInVortexUniverse(const DtUUID &proxyVehicleUUID, const DtUUID &vortexVehicleUUID)
Updates the position of a proxy vehicle in the Vortex universe.
double myDefaultVrfVehicleMass
Default mass in kg for non-Vortex vehicles.
Definition vortexCollisionProxyGenerator.h:158
std::map< DtUUID, std::vector< DtVrfProxyVehicle > > myClosestVehicleMap
Map from Vortex vehicle UUIDs to lists of nearby proxy vehicles.
Definition vortexCollisionProxyGenerator.h:244
virtual void removeVortexVehicle(const DtUUID &uuid)
Removes a Vortex vehicle from the tracked vehicles list.
virtual void addVortexVehicle(const DtUUID &uuid)
Adds a Vortex vehicle to the tracked vehicles list.
std::vector< Vx::VxPart * > myProxyVehiclesInUniverse
List of all proxy vehicle parts in the Vortex universe.
Definition vortexCollisionProxyGenerator.h:252
DtVortexCollisionProxyGenerator(DtVortexPhysicalWorld *world, DtCgf *cgf)
Constructor.
virtual VxMath::Vector3 toVxCoords(const DtVector &vec)
Converts from VR-Forces coordinates to Vortex coordinates.
virtual void handleVortexCollision(Vx::VxPart *part0, Vx::VxPart *part1)
Handles a collision between two Vortex parts.
bool myCoordConverterIsSet
Flag indicating if the coordinate converter has been set.
Definition vortexCollisionProxyGenerator.h:235
virtual void collectNearbySimObjects(const DtVector &searchCenter, std::vector< const DtSimObject * > &results)
Collects nearby simulation objects around a search center.
DtVortexPhysicalWorld * myVortexPhysicalWorld
Pointer to the Vortex physical world.
Definition vortexCollisionProxyGenerator.h:247
DtCompositePredicate myCollideableObjectTypesPredicate
Predicate for filtering objects by their types.
Definition vortexCollisionProxyGenerator.h:264
std::vector< DtUUID > myVortexVehicles
List of UUIDs for all Vortex vehicles being tracked.
Definition vortexCollisionProxyGenerator.h:241
virtual void setTypesToCollideWith(std::vector< DtEntityType > entityTypes)
Sets the entity types that Vortex vehicles will collide with.
DtVortexCollisionProxyGenerator & operator=(const DtVortexCollisionProxyGenerator &)=delete
virtual void update()
Updates lists of nearest vehicles and checks for collisions.
virtual void clearDistantVehicles(const DtUUID &uuid)
Removes proxy vehicles that are no longer within the search radius.
virtual void renderImgui()
Renders ImGui debug interface for collision proxy visualization.
virtual void updateClosestVehicleList(const DtUUID &uuid)
Updates the list of closest vehicles for a given Vortex vehicle.
void addProxyVehicleToVortexUniverse(const DtVrfProxyVehicle &vreProxyVehicle)
Adds a proxy vehicle to the Vortex physics universe.
void rewindCallback()
Callback executed when a scenario is rewound.
virtual ~DtVortexCollisionProxyGenerator()
Destructor.
DtTime myLastCollisionInteractionTime
Timestamp of the last sent collision interaction.
Definition vortexCollisionProxyGenerator.h:229
std::map< DtUUID, Vx::VxPart * > myUUIDToVxPartMap
Mapping from VR-Forces UUIDs to Vortex parts.
Definition vortexCollisionProxyGenerator.h:258
virtual void clearDataStructures()
Clears all internal data structures.
int myNumProxyVehicles
Number of nearby non-Vortex vehicles to track for each Vortex vehicle.
Definition vortexCollisionProxyGenerator.h:149
Main class responsible for managing the Vortex physics simulation environment.
Definition vortexPhysicalWorld.h:55
Provides coordinate conversion functionality between different coordinate systems.
Export macros for the VR-Forces Vortex extension library.
#define VREVRFVORTEX_DLL
Export macro for non-Windows platforms.
Definition export.h:30
Wheel articulated part IDs used in the system.
Definition surfaceToVxMaterialMapper.h:17
Include export definitions for this library.
Definition glsVreMessageUtil.h:49
Structure representing a non-Vortex vehicle for collision detection.
Definition vortexCollisionProxyGenerator.h:134
bool operator<(const DtVrfProxyVehicle &other) const
Comparison operator for sorting by distance.
Definition vortexCollisionProxyGenerator.h:145
DtSimObjectReference vrfObject
Reference to the VR-Forces simulation object.
Definition vortexCollisionProxyGenerator.h:135
double heading
Heading of this vehicle in radians.
Definition vortexCollisionProxyGenerator.h:138
DtVector locationInWorld
Location of this vehicle in local Dt coordinates (x-east, y-north, z-up)
Definition vortexCollisionProxyGenerator.h:137
double distance
Distance between this vehicle and its associated Vortex vehicle.
Definition vortexCollisionProxyGenerator.h:139
DtUUID uuid
The VRF UUID of this entity (cached for when vrfObject no longer exists)
Definition vortexCollisionProxyGenerator.h:136