VR-Forces 5.0.3 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 
26 
27 namespace makVrf
28 {
29  class DtDynamicTerrainStateComponent;
30 }
31 
32 namespace MAKVRinTerra
33 {
34  class DtFeatureGeometry;
35 }
36 
42 {
43 private:
50 public:
53  DtSimulationServices* simManager, DtComponentDescriptor* desc=0, DtReaderWriterRegistry *parentRegistry=0);
54 
57 
59  virtual void registerCallbacks();
60 
62  virtual void deregisterCallbacks();
63 
65  virtual const char* type() const;
66 
68  virtual void preFirstTickInit();
69 
71  virtual void registerTaskMsgCallbacks();
72 
74  virtual void tick();
75 
76  virtual void processDynamicTerrainVehicleTracks(const DtUUID& uuid, const DtTerrainGeometry& geometry, const DtKeyValuePairList& changes,
77  unsigned priority, const DtString& soilType, double distanceTraveled = 0.0, double delay = 0.0);
78 
80  static DtSimComponent* creator(const DtString& name, DtLocalObject* owner, DtSimulationServices* simManager,
81  DtComponentDescriptor* desc = 0, DtReaderWriterRegistry* parentRegistry = 0);
82 
83  virtual bool taskVisualizationsActive() const;
84 
85  virtual void updateTaskVisualizations();
86 
87 protected:
88  virtual void processSimObjectAdded(DtSimObjectReference object);
89  virtual void processSimObjectDeleted(DtSimObjectReference object);
90 
91  static void addPersistentTracksCommandCallBack(const DtSimCommand& cmd, void *usr);
92  static void removePersistentTracksCommandCallBack(const DtSimCommand& cmd, void *usr);
93 
94  virtual bool processAddPersistentTracksCommand(const DtAddPersistentTracksCommand& cmd);
95  virtual bool processRemovePersistentTracksCommand(const DtRemovePersistentTracksCommand& cmd);
96 
97  virtual void processTrackFromCommand(DtKeyValuePairList& trackParams, const std::vector<DtVector>& points);
98 
99  static void displayDebugForCurrentTracksCallback(DtSimMessage* msg, void* usrData);
100  virtual void processDisplayDebugForCurrentTracks(DtSimMessage*);
101 
102  static void clearDebugForCurrentTracksCallback(DtSimMessage* msg, void* usrData);
103  virtual void processClearDebugForCurrentTracks(DtSimMessage*);
104 
105  virtual bool isCapableOfPersistentTracks(DtSimObjectReference object) const;
106 
108  virtual bool isCommandValidForArea(const DtPersistentTracksCommand& cmd, MAKVRinTerra::DtFeatureGeometry* intersectingGeom = 0);
109 
112  virtual void tickQueuedVehicleTrackData();
113 
116  virtual void tickVehicleTrackData();
117 
119  virtual void updatePublishedTrackChange(std::vector<makVrf::DtDynamicTerrainStateComponent*>& publishers,
120  unsigned index, const DtRwDynamicTerrainVehicleTrackItem& trackToUpdate);
121 
122  virtual void removePublishedTrackChange(unsigned index, const DtRwDynamicTerrainVehicleTrackItem& trackToUpdate);
123 
129  virtual bool trackUpdated(DtRwDynamicTerrainVehicleTrackItem* vehicleTrackItem, bool& isStillValid, bool& newTrackStartsWhereLastEnds);
130 
135  virtual bool timeForUpdate(DtRwDynamicTerrainVehicleTrackItem* vehicleTrackItem, bool ignoreNumPoints = false) const;
136 
137  virtual void discoverNewObjectsInArea();
138 
142  virtual bool processTrackForRemoval(DtRwDynamicTerrainVehicleTrackItem* vehicleTrackItem, const MAKVRinTerra::DtFeatureGeometry& removalArea,
143  std::vector<MAKVRinTerra::DtFeatureGeometry>& resultingGeom);
144 
148  virtual void demoteTrackToQueuedTracks(DtRwDynamicTerrainVehicleTrackItem* vehicleTrackItem, bool newTrackStartsWhereLastEnds);
149 
153  virtual void scrubKeyValueSurfacePairs(DtKeyValuePairList& newKeyPairList, const DtRwDynamicTerrainVehicleTrackItem* vehicleTrackItem);
154 
155  virtual void resetQueuedTrack(DtRwQueuedDynamicTerrainVehicleTrackItem* queedVehicleTrack);
156 
157  virtual void resetAllQueuedTracks();
158 
159 
160  virtual bool atMaximumNumberOfIndividualTracks() const;
161 
163  virtual void dumpPublishedTracksToLog() const;
164 
165  virtual void dumpQueuedTracksToLog() const;
166 
167  virtual void dumpTrackToStream(DtRwDynamicTerrainVehicleTrackItem* item, std::ostream& os) const;
168 
169  virtual bool isGroundVehicle(DtSimObjectReference ref, DtSimObjectReference& groundObject) const;
170 
171 protected:
172 
181 
182 
184 
185 
187  std::set<DtUUID> myObjectsInArea;
188 
191 
192  DtDeadReckoner myDeadReckoner;
193 
195  {
196  QueuedTrackCommand(const DtKeyValuePairList& params, const std::vector<DtVector>& pts)
197  : trackParams(params), points(pts) {};
198 
199  DtKeyValuePairList trackParams;
200  std::vector<DtVector> points;
201  };
202 
203  std::vector<QueuedTrackCommand> myQueuedTrackCommands;
204 
205  boost::signals2::scoped_connection mySimObjectAddedConnection;
206  boost::signals2::scoped_connection mySimObjectDeletedConnection;
207 
208 };
Definition: dynamicTerrainVehicleTrackController.h:194
UUID is a unique ID wrapper class.
Definition: rwUUID.h:229
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
Definition: keyValuePairList.h:18
DtRwQueuedDynamicTerrainVehicleTrackItem holds the information needed to make a dynamic change to the...
Definition: rwQueuedDynamicTerrainVehicleTrackItem.h:17
double myMaximumTraverseDistBetweenTrackPointsSquared
Definition: dynamicTerrainVehicleTrackController.h:177
DtDeadReckoner myDeadReckoner
Definition: dynamicTerrainVehicleTrackController.h:192
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:41
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:187
unsigned myMaxNumPtsPerTrack
Definition: dynamicTerrainVehicleTrackController.h:183
boost::signals2::scoped_connection mySimObjectDeletedConnection
Definition: dynamicTerrainVehicleTrackController.h:206
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:49
bool myShowingDebugTracks
Definition: dynamicTerrainVehicleTrackController.h:189
Definition: readerWriterRegistry.h:39
virtual bool taskVisualizationsActive() const
Returns true if task visualizations are currently active for this component. Default behavior for tas...
bool myUpdateTrackTaskVis
Definition: dynamicTerrainVehicleTrackController.h:190
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
DtDynamicTerrainMunitionDamageController is a controller that calculates and publishes terrain change...
Definition: dynamicTerrainController.h:52
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:196
File: simMsg.h.
Definition: simMessage.h:35
double myLastTimePublishedDebugPrint
Definition: dynamicTerrainVehicleTrackController.h:180
virtual const char * type() const
std::vector< DtVector > points
Definition: dynamicTerrainVehicleTrackController.h:200
DtDynamicTerrainVehicleTrackControllerDescriptor * myDynamicTerrainVehicleTrackDescriptor
Definition: dynamicTerrainVehicleTrackController.h:173
double myTrackPositionalThresholdSquared
Definition: dynamicTerrainVehicleTrackController.h:175
boost::signals2::scoped_connection mySimObjectAddedConnection
Definition: dynamicTerrainVehicleTrackController.h:205
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
static DtSimComponent * creator(const DtString &name, DtLocalObject *owner, DtSimulationServices *simManager, DtComponentDescriptor *desc=0, DtReaderWriterRegistry *parentRegistry=0)
Static creator function for factory registration.
double myNextObjectDiscoveryTime
Definition: dynamicTerrainVehicleTrackController.h:186
double myMinimumTraverseDistToPublishTracksSquared
Definition: dynamicTerrainVehicleTrackController.h:178
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:90
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:70
std::vector< QueuedTrackCommand > myQueuedTrackCommands
Definition: dynamicTerrainVehicleTrackController.h:203
double myTrackRotationalTraceThresh
Definition: dynamicTerrainVehicleTrackController.h:176
double myLastTimeQueuedDebugPrint
Definition: dynamicTerrainVehicleTrackController.h:179
DtDynamicTerrainController & operator=(const DtDynamicTerrainController &orig)
Not Implemented.
virtual void preFirstTickInit()
Publishes any dynamic terrain changes saved in PSR.
virtual void tick()
This component&#39;s simulation tick.
virtual void updateTaskVisualizations()
Called to update task visualizations after every tick. Implemented by subclasses. ...
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:174

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)