VR-Forces 4.10 Class Documentation
 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 MAKVRinTerra
28 {
29  class DtFeatureGeometry;
30 }
31 
37 {
38 private:
45 public:
48  DtSimManager* simManager, DtComponentDescriptor* desc = 0, DtReaderWriterRegistry *parentRegistry = 0);
49 
52 
54  virtual void registerCallbacks();
55 
57  virtual void deregisterCallbacks();
58 
60  virtual const char* type() const;
61 
63  virtual void preFirstTickInit();
64 
66  virtual void registerTaskMsgCallbacks();
67 
69  virtual void tick();
70 
71  virtual void processDynamicTerrainVehicleTracks(const DtUUID& uuid, const DtTerrainGeometry& geometry, const DtKeyValuePairList& changes,
72  unsigned priority, const DtString& soilType, double distanceTraveled = 0.0, double delay = 0.0);
73 
75  static DtSimComponent* creator(const DtString& name, DtVrfObject* owner, DtSimManager* simManager,
76  DtComponentDescriptor* desc = 0, DtReaderWriterRegistry* parentRegistry = 0);
77 
78  virtual bool taskVisualizationsActive() const;
79 
80  virtual void updateTaskVisualizations();
81 
82 protected:
83  static void objectAddedCallBack(const DtVrfObject* object, void* usr);
84  virtual void processObjectAdded(const DtVrfObject* object);
85 
86  static void objectRemovedCallBack(const DtVrfObject* object, void* usr);
87  virtual void processObjectRemoved(const DtVrfObject* object);
88 
89  static void addPersistentTracksCommandCallBack(const DtSimCommand& cmd, void *usr);
90  static void removePersistentTracksCommandCallBack(const DtSimCommand& cmd, void *usr);
91 
92  virtual bool processAddPersistentTracksCommand(const DtAddPersistentTracksCommand& cmd);
93  virtual bool processRemovePersistentTracksCommand(const DtRemovePersistentTracksCommand& cmd);
94 
95  virtual void processTrackFromCommand(DtKeyValuePairList& trackParams, const std::vector<DtVector>& points);
96 
97  static void displayDebugForCurrentTracksCallback(DtSimMessage* msg, void* usrData);
98  virtual void processDisplayDebugForCurrentTracks(DtSimMessage*);
99 
100  static void clearDebugForCurrentTracksCallback(DtSimMessage* msg, void* usrData);
101  virtual void processClearDebugForCurrentTracks(DtSimMessage*);
102 
103  virtual bool isCapableOfPersistentTracks(const DtVrfObject *object) const;
104 
106  virtual bool isCommandValidForArea(const DtPersistentTracksCommand& cmd, MAKVRinTerra::DtFeatureGeometry* intersectingGeom = 0);
107 
110  virtual void tickQueuedVehicleTrackData();
111 
114  virtual void tickVehicleTrackData();
115 
117  virtual void updatePublishedTrackChange(std::vector<DtDynamicTerrainPublisher*>& publishers,
118  unsigned index, const DtRwDynamicTerrainVehicleTrackItem& trackToUpdate);
119 
120  virtual void removePublishedTrackChange(unsigned index, const DtRwDynamicTerrainVehicleTrackItem& trackToUpdate);
121 
127  virtual bool trackUpdated(DtRwDynamicTerrainVehicleTrackItem* vehicleTrackItem, bool& isStillValid, bool& newTrackStartsWhereLastEnds);
128 
133  virtual bool timeForUpdate(DtRwDynamicTerrainVehicleTrackItem* vehicleTrackItem, bool ignoreNumPoints = false) const;
134 
135  virtual void discoverNewObjectsInArea();
136 
140  virtual bool processTrackForRemoval(DtRwDynamicTerrainVehicleTrackItem* vehicleTrackItem, const MAKVRinTerra::DtFeatureGeometry& removalArea,
141  std::vector<MAKVRinTerra::DtFeatureGeometry>& resultingGeom);
142 
146  virtual void demoteTrackToQueuedTracks(DtRwDynamicTerrainVehicleTrackItem* vehicleTrackItem, bool newTrackStartsWhereLastEnds);
147 
151  virtual void scrubKeyValueSurfacePairs(DtKeyValuePairList& newKeyPairList, const DtRwDynamicTerrainVehicleTrackItem* vehicleTrackItem);
152 
153  virtual void resetQueuedTrack(DtRwQueuedDynamicTerrainVehicleTrackItem* queedVehicleTrack);
154 
155  virtual void resetAllQueuedTracks();
156 
157 
158  virtual bool atMaximumNumberOfIndividualTracks() const;
159 
161  virtual void dumpPublishedTracksToLog() const;
162 
163  virtual void dumpQueuedTracksToLog() const;
164 
165  virtual void dumpTrackToStream(DtRwDynamicTerrainVehicleTrackItem* item, std::ostream& os) const;
166 protected:
175 
176 
178 
179 
181  std::set<DtUUID> myObjectsInArea;
182 
185 
186  DtDeadReckoner myDeadReckoner;
187 
189  {
190  QueuedTrackCommand(const DtKeyValuePairList& params, const std::vector<DtVector>& pts)
191  : trackParams(params), points(pts) {};
192 
193  DtKeyValuePairList trackParams;
194  std::vector<DtVector> points;
195  };
196 
197  std::vector<QueuedTrackCommand> myQueuedTrackCommands;
198 
199 };
Definition: dynamicTerrainVehicleTrackController.h:188
UUID is a unique ID wrapper class.
Definition: rwUUID.h:222
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
Definition: keyValuePairList.h:18
DtRwQueuedDynamicTerrainVehicleTrackItem holds the information needed to make a dynamic change to the...
Definition: rwQueuedDynamicTerrainVehicleTrackItem.h:17
static DtSimComponent * creator(const DtString &name, DtVrfObject *owner, DtSimManager *simManager, DtComponentDescriptor *desc=0, DtReaderWriterRegistry *parentRegistry=0)
Static creator function for factory registration.
double myMaximumTraverseDistBetweenTrackPointsSquared
Definition: dynamicTerrainVehicleTrackController.h:171
DtDeadReckoner myDeadReckoner
Definition: dynamicTerrainVehicleTrackController.h:186
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:36
std::set< DtUUID > myObjectsInArea
Definition: dynamicTerrainVehicleTrackController.h:181
unsigned myMaxNumPtsPerTrack
Definition: dynamicTerrainVehicleTrackController.h:177
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:42
bool myShowingDebugTracks
Definition: dynamicTerrainVehicleTrackController.h:183
Definition: readerWriterRegistry.h:39
virtual bool taskVisualizationsActive() const
Returns true if task visualizations are currently active for this component.
bool myUpdateTrackTaskVis
Definition: dynamicTerrainVehicleTrackController.h:184
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:48
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:190
File: simMsg.h.
Definition: simMessage.h:35
double myLastTimePublishedDebugPrint
Definition: dynamicTerrainVehicleTrackController.h:174
virtual const char * type() const
std::vector< DtVector > points
Definition: dynamicTerrainVehicleTrackController.h:194
DtDynamicTerrainVehicleTrackControllerDescriptor * myDynamicTerrainVehicleTrackDescriptor
Definition: dynamicTerrainVehicleTrackController.h:167
double myTrackPositionalThresholdSquared
Definition: dynamicTerrainVehicleTrackController.h:169
DtSimCommand is an abstract base class from which commands can derive.
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.
Definition: persistentTracksCommand.h:21
double myNextObjectDiscoveryTime
Definition: dynamicTerrainVehicleTrackController.h:180
double myMinimumTraverseDistToPublishTracksSquared
Definition: dynamicTerrainVehicleTrackController.h:172
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:67
std::vector< QueuedTrackCommand > myQueuedTrackCommands
Definition: dynamicTerrainVehicleTrackController.h:197
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:103
double myTrackRotationalTraceThresh
Definition: dynamicTerrainVehicleTrackController.h:170
double myLastTimeQueuedDebugPrint
Definition: dynamicTerrainVehicleTrackController.h:173
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.
virtual void registerCallbacks()
Called by init to register any callbacks.
Represents a feature geometry.
Definition: featureGeometry.h:35
Definition: terrainGeometry.h:33
double myTrackSamplingDistanceSquared
Definition: dynamicTerrainVehicleTrackController.h:168

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)