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 
17 #include <tbb/spin_mutex.h>
18 #include <vlpi/deadReckoner.h>
19 #include <tbb/mutex.h>
20 
27 
28 namespace makVrf
29 {
30  class DtDynamicTerrainStateComponent;
31 }
32 
33 namespace MAKVRinTerra
34 {
35  class DtFeatureGeometry;
36 }
37 
43 {
44 private:
51 public:
54  DtSimulationServices* simManager, DtComponentDescriptor* desc=0, DtReaderWriterRegistry *parentRegistry=0);
55 
58 
60  virtual void registerCallbacks();
61 
63  virtual void deregisterCallbacks();
64 
66  virtual const char* type() const;
67 
69  virtual void preFirstTickInit();
70 
72  virtual void registerTaskMsgCallbacks();
73 
75  virtual void tick();
76 
77  virtual void processDynamicTerrainVehicleTracks(const DtUUID& uuid, const DtTerrainGeometry& geometry, const DtKeyValuePairList& changes,
78  unsigned priority, const DtString& soilType, double distanceTraveled = 0.0, double delay = 0.0);
79 
81  static DtSimComponent* creator(const DtString& name, DtLocalObject* owner, DtSimulationServices* simManager,
82  DtComponentDescriptor* desc = 0, DtReaderWriterRegistry* parentRegistry = 0);
83 
84  virtual bool taskVisualizationsActive() const;
85 
86  virtual void updateTaskVisualizations();
87 
88 protected:
89  virtual void processSimObjectAdded(DtSimObjectReference object);
90  virtual void processSimObjectDeleted(DtSimObjectReference object);
91 
92  static void addPersistentTracksCommandCallBack(const DtSimCommand& cmd, void *usr);
93  static void removePersistentTracksCommandCallBack(const DtSimCommand& cmd, void *usr);
94 
95  virtual bool processAddPersistentTracksCommand(const DtAddPersistentTracksCommand& cmd);
96  virtual bool processRemovePersistentTracksCommand(const DtRemovePersistentTracksCommand& cmd);
97 
100  static void resetAllDynamicTerrainChangesCallback(const DtSimCommand& cmd, void* usr);
103 
104  virtual void processTrackFromCommand(DtKeyValuePairList& trackParams, const std::vector<DtVector>& points);
105 
106  static void displayDebugForCurrentTracksCallback(DtSimMessage* msg, void* usrData);
107  virtual void processDisplayDebugForCurrentTracks(DtSimMessage*);
108 
109  static void clearDebugForCurrentTracksCallback(DtSimMessage* msg, void* usrData);
110  virtual void processClearDebugForCurrentTracks(DtSimMessage*);
111 
112  virtual bool isCapableOfPersistentTracks(DtSimObjectReference object) const;
113 
115  virtual bool isCommandValidForArea(const DtPersistentTracksCommand& cmd, MAKVRinTerra::DtFeatureGeometry* intersectingGeom = 0);
116 
118  virtual void getAreaGeometry(MAKVRinTerra::DtFeatureGeometry & areaGeom);
119 
122  virtual void tickQueuedVehicleTrackData();
123 
126  virtual void tickVehicleTrackData();
127 
129  virtual void updatePublishedTrackChange(std::vector<makVrf::DtDynamicTerrainStateComponent*>& publishers,
130  unsigned index, const DtRwDynamicTerrainVehicleTrackItem& trackToUpdate);
131 
132  virtual void removePublishedTrackChange(unsigned index, const DtRwDynamicTerrainVehicleTrackItem& trackToUpdate);
133 
139  virtual bool trackUpdated(DtRwDynamicTerrainVehicleTrackItem* vehicleTrackItem, bool& isStillValid, bool& newTrackStartsWhereLastEnds);
140 
145  virtual bool timeForUpdate(DtRwDynamicTerrainVehicleTrackItem* vehicleTrackItem, bool ignoreNumPoints = false) const;
146 
147  virtual void discoverNewObjectsInArea();
148 
152  virtual bool processTrackForRemoval(DtRwDynamicTerrainVehicleTrackItem* vehicleTrackItem, const MAKVRinTerra::DtFeatureGeometry& removalArea,
153  std::vector<MAKVRinTerra::DtFeatureGeometry>& resultingGeom);
154 
158  virtual void demoteTrackToQueuedTracks(DtRwDynamicTerrainVehicleTrackItem* vehicleTrackItem, bool newTrackStartsWhereLastEnds);
159 
163  virtual void scrubKeyValueSurfacePairs(DtKeyValuePairList& newKeyPairList, const DtRwDynamicTerrainVehicleTrackItem* vehicleTrackItem);
164 
165  virtual void resetQueuedTrack(DtRwQueuedDynamicTerrainVehicleTrackItem* queedVehicleTrack);
166 
167  virtual void resetAllQueuedTracks();
168 
169 
170  virtual bool atMaximumNumberOfIndividualTracks() const;
171 
173  virtual void dumpPublishedTracksToLog() const;
174 
175  virtual void dumpQueuedTracksToLog() const;
176 
177  virtual void dumpTrackToStream(DtRwDynamicTerrainVehicleTrackItem* item, std::ostream& os) const;
178 
179  virtual bool isGroundVehicle(DtSimObjectReference ref, DtSimObjectReference& groundObject) const;
180 
181 protected:
182 
191 
192 
194 
195 
197  std::set<DtUUID> myObjectsInArea;
198 
201 
202  DtDeadReckoner myDeadReckoner;
203 
205  {
206  QueuedTrackCommand(const DtKeyValuePairList& params, const std::vector<DtVector>& pts)
207  : trackParams(params), points(pts) {};
208 
209  DtKeyValuePairList trackParams;
210  std::vector<DtVector> points;
211  };
212 
213  std::vector<QueuedTrackCommand> myQueuedTrackCommands;
214 
215  boost::signals2::scoped_connection mySimObjectAddedConnection;
216  boost::signals2::scoped_connection mySimObjectDeletedConnection;
217  tbb::mutex myRemovalMutex;
218 };
static void resetAllDynamicTerrainChangesCallback(const DtSimCommand &cmd, void *usr)
Processes commands to reset all changes to dynamic terrain.
Definition: dynamicTerrainVehicleTrackController.h:204
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:187
DtDeadReckoner myDeadReckoner
Definition: dynamicTerrainVehicleTrackController.h:202
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:42
The DtSimObjectReference is a shared pointer that can be used amongst many object for access to the u...
Definition: simObjectReference.h:26
std::set< DtUUID > myObjectsInArea
Definition: dynamicTerrainVehicleTrackController.h:197
unsigned myMaxNumPtsPerTrack
Definition: dynamicTerrainVehicleTrackController.h:193
boost::signals2::scoped_connection mySimObjectDeletedConnection
Definition: dynamicTerrainVehicleTrackController.h:216
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:217
bool myShowingDebugTracks
Definition: dynamicTerrainVehicleTrackController.h:199
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:200
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:206
File: simMsg.h.
Definition: simMessage.h:35
double myLastTimePublishedDebugPrint
Definition: dynamicTerrainVehicleTrackController.h:190
std::vector< DtVector > points
Definition: dynamicTerrainVehicleTrackController.h:210
DtDynamicTerrainVehicleTrackControllerDescriptor * myDynamicTerrainVehicleTrackDescriptor
Definition: dynamicTerrainVehicleTrackController.h:183
double myTrackPositionalThresholdSquared
Definition: dynamicTerrainVehicleTrackController.h:185
boost::signals2::scoped_connection mySimObjectAddedConnection
Definition: dynamicTerrainVehicleTrackController.h:215
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:196
double myMinimumTraverseDistToPublishTracksSquared
Definition: dynamicTerrainVehicleTrackController.h:188
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:94
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:91
virtual void processResetAllDynamicTerrainChangesCommand(const DtResetAllDynamicTerrainChangesCommand &cmd)
Processes commands to reset all changes to dynamic terrain.
std::vector< QueuedTrackCommand > myQueuedTrackCommands
Definition: dynamicTerrainVehicleTrackController.h:213
double myTrackRotationalTraceThresh
Definition: dynamicTerrainVehicleTrackController.h:186
double myLastTimeQueuedDebugPrint
Definition: dynamicTerrainVehicleTrackController.h:189
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:170
virtual void registerCallbacks()
Called by init to register any callbacks.
Represents a feature geometry.
Definition: featureGeometry.h:39
Definition: terrainGeometry.h:33
A locally simulated VRF object. Holds all internal and external data for the object, and provides access to both the current frame and next frame state data for the object. All current frame data is read-only, and next-frame data can be written to. No thread safety guarantees are made on this object during the simulation frame and it should only be accessed by the thread that is simulating the object.
Definition: localObject.h:86
double myTrackSamplingDistanceSquared
Definition: dynamicTerrainVehicleTrackController.h:184

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)