VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
dynamicTerrainVehicleTrackController.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
9 
12 
13 #pragma once
14 
16 
17 #include <vlpi/deadReckoner.h>
19 
20 #include <tbb/mutex.h>
21 #include <tbb/spin_mutex.h>
22 
23 
30 
31 namespace makVrf
32 {
33  class DtDynamicTerrainStateComponent;
34 }
35 
36 namespace MAKVRinTerra
37 {
38  class DtFeatureGeometry;
39 }
40 
46 {
47 private:
54 public:
57  DtSimulationServices* simManager, DtComponentDescriptor* desc=0, DtReaderWriterRegistry *parentRegistry=0);
58 
60  virtual ~DtDynamicTerrainVehicleTrackController() override;
61 
63  virtual void registerCallbacks() override;
64 
66  virtual void deregisterCallbacks() override;
67 
69  virtual const char* type() const override;
70 
72  virtual void preFirstTickInit() override;
73 
75  virtual void registerTaskMsgCallbacks() override;
76 
78  virtual void tick() override;
79 
80  virtual void processDynamicTerrainVehicleTracks(const DtUUID& uuid, const DtTerrainGeometry& geometry, const DtKeyValuePairList& changes,
81  unsigned priority, const DtString& soilType, double distanceTraveled = 0.0, double delay = 0.0);
82 
84  static DtSimComponent* creator(const DtString& name, DtLocalObject* owner, DtSimulationServices* simManager,
85  DtComponentDescriptor* desc = 0, DtReaderWriterRegistry* parentRegistry = 0);
86 
87  virtual bool taskVisualizationsActive() const override;
88 
89  virtual void updateTaskVisualizations() override;
90 
91 protected:
92  virtual void processSimObjectAdded(DtSimObjectReference object);
93  virtual void processSimObjectDeleted(DtSimObjectReference object);
94 
95  static void addPersistentTracksCommandCallBack(const DtSimCommand& cmd, void *usr);
96  static void removePersistentTracksCommandCallBack(const DtSimCommand& cmd, void *usr);
97 
98  virtual bool processAddPersistentTracksCommand(const DtAddPersistentTracksCommand& cmd);
99  virtual bool processRemovePersistentTracksCommand(const DtRemovePersistentTracksCommand& cmd);
100 
103  static void resetAllDynamicTerrainChangesCallback(const DtSimCommand& cmd, void* usr);
106 
107  virtual void processTrackFromCommand(DtKeyValuePairList& trackParams, const std::vector<DtVector>& points);
108 
109  static void displayDebugForCurrentTracksCallback(DtSimMessage* msg, void* usrData);
110  virtual void processDisplayDebugForCurrentTracks(DtSimMessage*);
111 
112  static void clearDebugForCurrentTracksCallback(DtSimMessage* msg, void* usrData);
113  virtual void processClearDebugForCurrentTracks(DtSimMessage*);
114 
115  virtual bool isCapableOfPersistentTracks(DtSimObjectReference object) const;
116 
118  virtual bool isCommandValidForArea(const DtPersistentTracksCommand& cmd, MAKVRinTerra::DtFeatureGeometry* intersectingGeom = 0);
119 
121  virtual void getAreaGeometry(MAKVRinTerra::DtFeatureGeometry & areaGeom);
122 
125  virtual void tickQueuedVehicleTrackData();
126 
129  virtual void tickVehicleTrackData();
130 
132  virtual void updatePublishedTrackChange(std::vector<makVrf::DtDynamicTerrainStateComponent*>& publishers,
133  unsigned index, const DtRwDynamicTerrainVehicleTrackItem& trackToUpdate);
134 
135  virtual void removePublishedTrackChange(unsigned index, const DtRwDynamicTerrainVehicleTrackItem& trackToUpdate);
136 
142  virtual bool trackUpdated(DtRwDynamicTerrainVehicleTrackItem* vehicleTrackItem, bool& isStillValid, bool& newTrackStartsWhereLastEnds);
143 
148  virtual bool timeForUpdate(DtRwDynamicTerrainVehicleTrackItem* vehicleTrackItem, bool ignoreNumPoints = false) const;
149 
150  virtual void discoverNewObjectsInArea();
151 
155  virtual bool processTrackForRemoval(DtRwDynamicTerrainVehicleTrackItem* vehicleTrackItem, const MAKVRinTerra::DtFeatureGeometry& removalArea,
156  std::vector<MAKVRinTerra::DtFeatureGeometry>& resultingGeom);
157 
161  virtual void demoteTrackToQueuedTracks(DtRwDynamicTerrainVehicleTrackItem* vehicleTrackItem, bool newTrackStartsWhereLastEnds);
162 
166  virtual void scrubKeyValueSurfacePairs(DtKeyValuePairList& newKeyPairList, const DtRwDynamicTerrainVehicleTrackItem* vehicleTrackItem);
167 
168  virtual void resetQueuedTrack(DtRwQueuedDynamicTerrainVehicleTrackItem* queedVehicleTrack);
169 
170  virtual void resetAllQueuedTracks();
171 
172 
173  virtual bool atMaximumNumberOfIndividualTracks() const;
174 
176  virtual void dumpPublishedTracksToLog() const;
177 
178  virtual void dumpQueuedTracksToLog() const;
179 
180  virtual void dumpTrackToStream(DtRwDynamicTerrainVehicleTrackItem* item, std::ostream& os) const;
181 
182  virtual bool isGroundVehicle(DtSimObjectReference ref, DtSimObjectReference& groundObject) const;
183 
184 protected:
185 
194 
195 
197 
198 
200  std::set<DtUUID> myObjectsInArea;
201 
204 
205  DtDeadReckoner myDeadReckoner;
206 
208  {
209  QueuedTrackCommand(const DtKeyValuePairList& params, const std::vector<DtVector>& pts)
210  : trackParams(params), points(pts) {};
211 
212  DtKeyValuePairList trackParams;
213  std::vector<DtVector> points;
214  };
215 
216  std::vector<QueuedTrackCommand> myQueuedTrackCommands;
217 
218  boost::signals2::scoped_connection mySimObjectAddedConnection;
219  boost::signals2::scoped_connection mySimObjectDeletedConnection;
220  tbb::mutex myRemovalMutex;
221 };
static void resetAllDynamicTerrainChangesCallback(const DtSimCommand &cmd, void *usr)
Processes commands to reset all changes to dynamic terrain.
Definition: dynamicTerrainVehicleTrackController.h:207
UUID is a unique ID wrapper class.
Definition: uuid.h:59
static DtSimComponent * creator(const DtString &name, DtLocalObject *owner, DtSimulationServices *simManager, DtComponentDescriptor *desc=nullptr, DtReaderWriterRegistry *parentRegistry=nullptr)
Static creator function for factory registration.
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
Definition: keyValuePairList.h:18
virtual void tick() override
This component&#39;s simulation tick.
DtRwQueuedDynamicTerrainVehicleTrackItem holds the information needed to make a dynamic change to the...
Definition: rwQueuedDynamicTerrainVehicleTrackItem.h:17
double myMaximumTraverseDistBetweenTrackPointsSquared
Definition: dynamicTerrainVehicleTrackController.h:190
DtDeadReckoner myDeadReckoner
Definition: dynamicTerrainVehicleTrackController.h:205
virtual void registerTaskMsgCallbacks()
virtual bool isCommandValidForArea(const DtDynamicTerrainCommand &cmd)
Returns true if the geometry for the command is within our area of control.
Definition: rwDynamicTerrainVehicleTrackItem.h:24
DtDynamicTerrainVehicleTrackController is a controller that calculates and publishes terrain changes ...
Definition: dynamicTerrainVehicleTrackController.h:45
std::set< DtUUID > myObjectsInArea
Definition: dynamicTerrainVehicleTrackController.h:200
unsigned myMaxNumPtsPerTrack
Definition: dynamicTerrainVehicleTrackController.h:196
boost::signals2::scoped_connection mySimObjectDeletedConnection
Definition: dynamicTerrainVehicleTrackController.h:219
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:49
tbb::mutex myRemovalMutex
Definition: dynamicTerrainVehicleTrackController.h:220
bool myShowingDebugTracks
Definition: dynamicTerrainVehicleTrackController.h:202
Definition: readerWriterRegistry.h:39
virtual bool taskVisualizationsActive() const override
Returns true if task visualizations are currently active for this component. Default behavior for tas...
bool myUpdateTrackTaskVis
Definition: dynamicTerrainVehicleTrackController.h:203
DtSimCommand which causes a specific list of dynamic terrain changes to take place at the specified g...
Definition: persistentTracksCommand.h:71
Definition: dynamicTerrainVehicleTrackControllerDescriptor.h:29
virtual void updateTaskVisualizations() override
Called to update task visualizations after every tick. Implemented by subclasses. ...
DtDynamicTerrainMunitionDamageController is a controller that calculates and publishes terrain change...
Definition: dynamicTerrainController.h:53
DtSimCommand which causes a specific list of dynamic terrain changes to take place at the specified g...
Definition: persistentTracksCommand.h:151
QueuedTrackCommand(const DtKeyValuePairList &params, const std::vector< DtVector > &pts)
Definition: dynamicTerrainVehicleTrackController.h:209
File: simMsg.h.
Definition: simMessage.h:35
double myLastTimePublishedDebugPrint
Definition: dynamicTerrainVehicleTrackController.h:193
std::vector< DtVector > points
Definition: dynamicTerrainVehicleTrackController.h:213
DtDynamicTerrainVehicleTrackControllerDescriptor * myDynamicTerrainVehicleTrackDescriptor
Definition: dynamicTerrainVehicleTrackController.h:186
double myTrackPositionalThresholdSquared
Definition: dynamicTerrainVehicleTrackController.h:188
boost::signals2::scoped_connection mySimObjectAddedConnection
Definition: dynamicTerrainVehicleTrackController.h:218
DtSimCommand is an abstract base class from which commands can derive. It manages the read/write capa...
Definition: simCommand.h:32
virtual void deregisterCallbacks()
Called by destructor to deregister any callbacks.
Base class for any DtSimCommand which persistent changes to be added or removed. Must be subclassed f...
Definition: persistentTracksCommand.h:21
double myNextObjectDiscoveryTime
Definition: dynamicTerrainVehicleTrackController.h:199
double myMinimumTraverseDistToPublishTracksSquared
Definition: dynamicTerrainVehicleTrackController.h:191
virtual void preFirstTickInit() override
Publishes any dynamic terrain changes saved in PSR.
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:96
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:89
virtual void processResetAllDynamicTerrainChangesCommand(const DtResetAllDynamicTerrainChangesCommand &cmd)
Processes commands to reset all changes to dynamic terrain.
std::vector< QueuedTrackCommand > myQueuedTrackCommands
Definition: dynamicTerrainVehicleTrackController.h:216
double myTrackRotationalTraceThresh
Definition: dynamicTerrainVehicleTrackController.h:189
double myLastTimeQueuedDebugPrint
Definition: dynamicTerrainVehicleTrackController.h:192
virtual const char * type() const override
DtDynamicTerrainController & operator=(const DtDynamicTerrainController &orig)
Not Implemented.
DtSimCommand which causes all dynamic terrain changes to be reset to their original state at the spec...
Definition: dynamicTerrainCommand.h:169
virtual void registerCallbacks()
Called by init to register any callbacks.
Represents a feature geometry.
Definition: featureGeometry.h:40
Definition: terrainGeometry.h:33
A locally simulated VRF object.
Definition: localObject.h:98
double myTrackSamplingDistanceSquared
Definition: dynamicTerrainVehicleTrackController.h:187

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)