14#include <vrfobjcore/actuatorComponent.h>
15#include <vrfobjcore/platformLocalObjectFacade.h>
19#include <Vx/VxTransform.h>
21#include <VxSim/VxSmartInterface.h>
22#include <VxSim/VxVHLInterface.h>
23#include <VxSim/IDynamics.h>
24#include <VxSim/VxSimulationFileManagerFacade.h>
25#include <VxDynamics/Mechanism.h>
29#include <terrainInterface/terrainImplementation.h>
31#include <readerWriter/symbolString.h>
32#include <vrfobjcore/localObject.h>
33#include <vlpi/articulatedPartCollection.h>
37class DtUpdateRepositoryOutputPortGroup;
42class DtInputPortGroup;
43class DtOutputPortGroup;
44class DtAnalogInputPort;
45class DtBooleanInputPort;
46class DtSingleConnectionInputPort;
47class DtSingleConnectionOutputPort;
48class DtGroundVehicleStateRepository;
50class DtStringOutputPort;
57class VxPluginExtension;
59class VxSimulationState;
99 DtComponentDescriptor* desc = 0, DtReaderWriterRegistry* parentRegistry = 0);
124 virtual const char*
type()
const override;
148 static DtSimComponent*
creator(
const DtString& name, DtLocalObject* owner, DtSimulationServices* simManager,
149 DtComponentDescriptor* desc = 0, DtReaderWriterRegistry* parentRegistry = 0);
161 virtual const std::vector<DtVortexBasePart*>&
getParts()
const;
197 const DtVector& newLocalPosition,
double heading);
470 const DtDcm& localOrientation,
const DtVector& localPosition,
471 const DtAttachedTerrain& terrain,
bool& dataAvailable)
const;
503 const VxSim::VxWeakInterface<VxSim::IObject>& objectToLookThroughWeak,
const std::vector<std::string>& pathToLookForPart,
527 Vx::VxSmartPtr<DtVxSimulationFileManagerFacadeListener>
myListener;
632class DtMechAddon :
public VxSim::IExtension,
public VxSim::IDynamics,
public VxDynamics::IMechanismAddOn
Addon extension for Vortex mechanisms.
Definition vortexMovementActuator.h:633
void setUpdatingFromCGF(bool cgfDriven)
Sets whether updates come from CGF.
DtMechAddon(VxSim::VxExtension *proxy)
Constructor.
static const VxSim::VxFactoryKey kFactoryKey
Factory key for creating instances of this addon.
Definition vortexMovementActuator.h:636
void setVortexMovementActuator(DtVortexMovementActuator *obj)
Sets the movement actuator to communicate with.
virtual ~DtMechAddon() override
Destructor.
DtVortexMovementActuator * myMovementActuator
The movement actuator.
Definition vortexMovementActuator.h:663
bool myUpdatingFromCGF
Flag indicating if updates come from CGF.
Definition vortexMovementActuator.h:664
virtual void preStep() override
Called before each physics step.
Base class for Vortex parts in the physics simulation.
Definition vortexPart.h:82
Class for managing Vortex interfaces.
Definition vortexInterface.h:188
Descriptor for Vortex physics-based movement simulation.
Definition vortexMovementActuatorDescriptor.h:34
Actuator component that integrates Vortex physics for vehicle dynamics.
Definition vortexMovementActuator.h:83
bool myAutoParkButtonDown
Definition vortexMovementActuator.h:539
virtual void processSetVortexWhileUntasked(DtSimMessage *msg)
Processes a set data request to enable/disable high-fidelity physics.
bool myWasInVortexWorldLastTick
Definition vortexMovementActuator.h:536
virtual double fuelLeft() const
Gets the current fuel level.
double myPartAngularVelocityThreshold
Definition vortexMovementActuator.h:566
void disableVehicleDynamics()
Disables the vehicle dynamics.
VxMath::Matrix44 getNextFrameVortexTransform() const
Gets the next frame's location and orientation as a VxMatrix.
static void setHeadingCallback(DtReal heading, void *usrData)
Callback for heading changes.
DtPlatformLocalObjectFacade myPlatformLocalObjectFacade
Definition vortexMovementActuator.h:517
virtual void addSetCallbacks()
Adds set callbacks for location and heading.
virtual bool createPortGroups() override
Creates the port groups for the actuator.
VxSim::VxSmartInterface< DtMechAddon > myMechAddon
Definition vortexMovementActuator.h:522
Vx::VxEulerAngles getNextFrameVortexOrientation() const
Gets the next frame Vortex orientation from the entity.
makVre::DtVortexPhysicalWorld * myVortexPhysicalWorld
Definition vortexMovementActuator.h:556
static void setLocationCallback(const DtVector &location, void *usrData)
Callback for location changes.
DtStringOutputPort * myAimingModePort
Definition vortexMovementActuator.h:534
std::shared_ptr< makVre::DtVortexConfiguration > myConfiguration
Definition vortexMovementActuator.h:530
static DtSimComponent * creator(const DtString &name, DtLocalObject *owner, DtSimulationServices *simManager, DtComponentDescriptor *desc=0, DtReaderWriterRegistry *parentRegistry=0)
Factory method for creating instances of this actuator.
MechanismLoadStatus myMechanismLoadStatus
Definition vortexMovementActuator.h:553
virtual void manageWheelPartStateTransitions(bool inVortexWorld)
Manages wheel part state transitions when entering or exiting Vortex world.
virtual void sendVehicleDynamicsUpdate(bool enable)
Sends a vehicle dynamics update event.
DtTaitBryan myPreviousOrientation
Definition vortexMovementActuator.h:596
double myPartPositionThreshold
Definition vortexMovementActuator.h:563
DtVortexStateRepository * myVehicleRepository
Definition vortexMovementActuator.h:516
virtual void handleSetHeading(DtReal heading)
Handles a heading change request.
virtual const std::vector< DtVortexBasePart * > & getParts() const
Gets the list of all Vortex parts in this actuator.
DtVortexMovementActuator & operator=(const DtVortexMovementActuator &orig)=delete
Assignment operator and copy constructor not implemented.
bool myHaveVortexTurretInterface
Definition vortexMovementActuator.h:541
virtual void updateState()
Updates state properties.
virtual bool init() override
Initializes the actuator.
VxSim::VxUuid myLoadObjectRequestId
Definition vortexMovementActuator.h:554
VxSim::VxSmartInterface< VxDynamics::Mechanism > myMechanism
Definition vortexMovementActuator.h:521
VxSim::VxSmartInterface< VxDynamics::Mechanism > getMechanism()
Gets the current mechanism associated with the actuator.
virtual bool isVortexMechanismValid() const
Checks if the Vortex mechanism is valid.
virtual void handleSetLocation(const DtVector &location)
Handles a location change request.
virtual bool createPorts() override
Creates the ports required for actuator operation.
DtUpdateRepositoryOutputPortGroup * myUpdateRepositoryOutputPortGroup
Definition vortexMovementActuator.h:533
virtual void useFuel(double fuelUsed)
Consumes fuel.
void queueMechanismLoad()
Queues the mechanism for loading.
DtGroundVehicleStateRepository * myGroundVehicleState
Definition vortexMovementActuator.h:515
VortexInterfaceMap myInterfaces
Definition vortexMovementActuator.h:525
void updateParametersFromModel()
Updates Vortex model parameters with data from VR-Forces.
double myAngularVelocityThreshold
Definition vortexMovementActuator.h:561
bool myDetectTerrainFallthrough
Controls whether terrain fallthrough detection is enabled.
Definition vortexMovementActuator.h:593
friend class DtVxSimulationFileManagerFacadeListener
Definition vortexMovementActuator.h:230
virtual void realizeVortexState()
Updates the Vortex state based on current conditions.
virtual bool isTerrainAvailable() const
Checks if terrain is available below the vehicle.
void updateGroundInteractionPoint(const DtDcm &localOrientation, const DtVector &localPosition, const DtAttachedTerrain &terrain, bool &dataAvailable) const
Updates the ground interaction point under the vehicle.
void processTerrainChangeNotification(const DtTerrainChangeNotificationInfo &terrainChangeInfo)
Processes terrain change notifications.
void createVortexConfigurationsFromDescriptor()
Creates Vortex configurations from the descriptor.
DtVortexMovementActuator(const DtString &name, DtLocalObject *owner, DtSimulationServices *simManager, DtComponentDescriptor *desc=0, DtReaderWriterRegistry *parentRegistry=0)
Constructor.
void connectInterfacesToPorts()
Connects interfaces to ports.
static void setVortexWhileUntaskedCallback(DtSimMessage *msg, void *usrData)
Callback for scripted set data request message.
virtual void getLowestBoundingPointsOfMechanism(std::vector< DtVector > &outputPoints)
Gets the lowest bounding points of the current mechanism.
double myPartLinearVelocityThreshold
Definition vortexMovementActuator.h:565
std::shared_ptr< VxSim::VxSimulationFileManagerFacade > mySimulationFileManagerFacade
Definition vortexMovementActuator.h:526
virtual bool isBeingTowed() const
Checks if the entity is being towed by another Vortex entity.
bool mySpawnedFromSpawnPoint
Definition vortexMovementActuator.h:544
makVre::DtVortexMovementPSR * myProcessState
Definition vortexMovementActuator.h:599
virtual bool isHighFidelityCGF() const
Checks if the entity is currently a high-fidelity CGF.
virtual void restoreWheels()
Restores wheel articulated parts.
virtual void tick() override
Updates the actuator each simulation frame.
virtual void updateFuel()
Updates fuel level.
Vx::VxVector3 getNextFrameVortexPosition() const
Gets the next frame Vortex location from the entity.
virtual void updateDestroyedState()
virtual bool isPlayerControlledAs(std::string role) const
Checks if the entity is player controlled in a specific role.
virtual bool isVortexPlayerControlled() const
Checks if the entity is player controlled.
void createVortexInterfacesFromDescriptor()
Creates Vortex interfaces defined in the descriptor.
DtVortexMovementActuator(const DtVortexMovementActuator &orig)=delete
double myPositionThreshold
Definition vortexMovementActuator.h:558
DtSymbolString myMovementChooserControllerName
Definition vortexMovementActuator.h:597
virtual bool checkDistanceFromCoordinateOriginOverLimit(const DtVector &position, double distance)
Checks if the incoming position is further than distance.
virtual void sendVehiclePartsUpdate(Vx::VxPart::EntityControlTypeEnum control)
Updates the control state of all vehicle parts.
DtVector myPreviousPosition
Definition vortexMovementActuator.h:595
virtual void dropAboveTerrain(const DtVector &newLocalPosition, double heading)
Drops the vehicle above the terrain at a specified position.
std::map< std::string, DtVortexInterface * > VortexInterfaceMap
Type definition for a map of Vortex interfaces by name.
Definition vortexMovementActuator.h:86
virtual void engageParkingBrakeOnDisengage(bool isDriver)
Automatically engages parking brake when disengaging from driver role.
MechanismLoadStatus
Definition vortexMovementActuator.h:548
@ LOADED
Definition vortexMovementActuator.h:551
@ LOADING
Definition vortexMovementActuator.h:550
@ NOT_LOADED
Definition vortexMovementActuator.h:549
void createVortexPartsFromDescriptor()
Creates all Vortex parts defined in the descriptor.
const DtVortexMovementActuatorDescriptor * myDescriptor
Definition vortexMovementActuator.h:514
virtual void resetWheelParts()
Resets wheel parts to their default positions.
void enableVehicleDynamics()
Enables the vehicle dynamics.
double myVelocityThreshold
Definition vortexMovementActuator.h:560
double myPartOrientationThreshold
Definition vortexMovementActuator.h:564
DtVortexBasePart * createPart(makVre::DtVortexSimArtPartDescriptor *desc)
Creates a Vortex part from a descriptor.
virtual void preFirstTickInit() override
Initializes the actuator before the first simulation tick.
virtual bool createPSR()
Creates a process state repository for this component.
static void terrainChangeNotification(const DtTerrainChangeNotificationInfo &terrainChangeInfo, void *usr)
Static callback for terrain change notifications.
virtual const char * type() const override
Gets the type of this actuator.
virtual void detectTerrainFallthrough()
Detects and logs terrain fall-through conditions.
virtual void updatePorts()
Updates ports with data from Vortex interfaces.
bool myAllowVortexWhileDestroyed
Controls whether Vortex physics simulation continues for destroyed entities.
Definition vortexMovementActuator.h:580
double myDropTimer
Definition vortexMovementActuator.h:567
bool myIsVortexDynamicsActive
Definition vortexMovementActuator.h:543
void setThresholdsFromDescriptor()
Sets precision thresholds based on the descriptor.
double myOrientationThreshold
Definition vortexMovementActuator.h:559
Vx::VxVector3 getVortexLocation(const DtVector &inputCoords) const
Converts local coordinates to Vortex coordinates.
Vx::VxSmartPtr< DtVxSimulationFileManagerFacadeListener > myListener
Definition vortexMovementActuator.h:527
virtual bool isInVortexWorld() const
Checks if high-fidelity Vortex physics should be active.
DtArticulatedPartCollection myCollectionWithWheels
Definition vortexMovementActuator.h:518
bool myNeedsWheelPartRemoval
Definition vortexMovementActuator.h:540
virtual void setVortexMechanismLocation(const Vx::VxVector3 &nwuLocation, double heading)
Sets the Vortex mechanism's location and orientation.
bool myWasDriverLastTick
Definition vortexMovementActuator.h:538
void loadMechanism()
Loads the Vortex mechanism.
virtual ~DtVortexMovementActuator() override
Destructor.
virtual void removeSetCallbacks()
Removes set callbacks for location and heading.
VxSim::VxSmartInterface< VxDynamics::Part > findPartFromPathRecursive(const VxSim::VxWeakInterface< VxSim::IObject > &objectToLookThroughWeak, const std::vector< std::string > &pathToLookForPart, int index)
Recursively finds a part from a path.
std::vector< DtVortexBasePart * > myParts
Definition vortexMovementActuator.h:524
double myAccelerationThreshold
Definition vortexMovementActuator.h:562
VxSim::VxExtension * myVehicleExt
Definition vortexMovementActuator.h:523
DtVortexBasePart * findPart(int partId) const
Gets the Vortex part associated with an articulated part ID.
State repository for Vortex physics entities.
Definition vortexStateRepository.h:54
Listener for Vortex file loading events.
Definition vortexMovementActuator.h:607
virtual ~DtVxSimulationFileManagerFacadeListener() override
Destructor.
DtVxSimulationFileManagerFacadeListener(DtVortexMovementActuator *actuator)
Constructor.
DtVortexMovementActuator * myMovementActuator
The movement actuator.
Definition vortexMovementActuator.h:625
virtual void onRequestedObjectLoaded(const VxSim::VxUuid &requestId, const std::string &name, RequestResult result) override
Called when a requested object has been loaded.
Descriptor for Vortex physics engine configurations.
Definition vortexConfigurationDescriptor.h:27
Main class for managing Vortex configuration parameters.
Definition vortexConfiguration.h:146
Descriptor for Vortex physics engine interfaces.
Definition vortexInterfaceDescriptor.h:27
Process state repository for the Vortex movement actuator.
Definition vortexMovementPSR.h:31
Main class responsible for managing the Vortex physics simulation environment.
Definition vortexPhysicalWorld.h:55
Articulated part descriptor for Vortex physics simulation.
Definition vortexArtPartDescriptor.h:27
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
Definition vortexConfiguration.h:29
Include export definitions for this library.
Definition glsVreMessageUtil.h:49
const char DtVortexMovementActuatorType[]
Type identifier for the Vortex movement actuator.
Definition vortexMovementActuator.h:73