VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
simManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2014 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
11 
14 
15 
17 #include <vl/hostStructs.h>
18 #include <vlutil/vlMachineTypes.h>
20 #include <matrix/vlVector.h>
21 #include <tbb/spin_mutex.h>
23 
26 class DtExerciseConn;
27 class DtPhysicalWorld;
28 class DtCommModelManager;
30 class DtThreadSocket;
31 class DtThreadMessageList;
32 class DtEventManager;
33 class DtFrameRateMonitor;
34 class DtResourceMonitor;
37 class DtVrfObjectMessage;
38 
41 class DtEntityType;
42 class DtEchelonRoleName;
43 class DtString;
44 class DtList;
46 class DtEntityType;
48 
52 class DtScheduler;
53 class DtExerciseClock;
54 class DtDebugDrawManager;
55 class DtVrfObjectManager;
61 class DtScriptedObjects;
65 class DtFireManager;
71 class DtHostilityManager;
74 class DtTimer;
81 class DtSpawnSinkManager;
83 
85 typedef void (*DtSimTickFunction)(void* userData);
86 typedef void (*DtRunDurationCallbackFcn)(void* userData);
87 
101 #include "vrfcore/vrfcoreDefines.h"
103 {
104 public:
105 
107  DtSimManager(DtExerciseConn* connection);
108 
110  virtual ~DtSimManager();
111 
112 private:
113 
116  DtSimManager(const DtSimManager& orig);
117 
120  DtSimManager& operator=(const DtSimManager& orig);
121 
122 public:
123 
128  virtual bool init();
129 
131  virtual const DtVrfSimOptionsInterface* simOptions() const;
132 
134  virtual void setSimOptions(const DtVrfSimOptionsInterface&);
135 
145  virtual bool createExerciseClock();
146 
147  virtual bool createScheduler();
148  virtual bool createMessageInterface();
149  virtual bool createTDLMessageInterface();
150  virtual bool createFrameRateMonitor();
152  virtual bool createVrfSimSettingsManager();
153  virtual bool createParallelTickManager();
154 
156  virtual void tick();
157 
158  virtual bool deliverMessage(const DtSimInterfaceMessage& msg);
159 
160  virtual bool receiveMessage(const DtSimInterfaceMessage& msg);
161 
162  virtual bool createAndDeliverMessage(
163  const DtSimulationAddress& recipient,
164  const DtSimInterfaceContent & content,
165  bool overrideTimestampOrder = true) const;
166 
174 
175  virtual void addTickEntry(DtSimTickFunction tickFunction, void* userData) const;
176  virtual void removeTickEntry(DtSimTickFunction tickFunction, void* userData) const;
178 
182  virtual void addPostTickEntry(DtSimTickFunction tickFunction, void* userData) const;
183  virtual void removePostTickEntry(DtSimTickFunction tickFunction, void* userData) const;
185 
189  DtExerciseConn* exerciseConn();
190 
193  const DtExerciseClock* exerciseClock() const;
194 
199  virtual DtFrameRateMonitor* frameRateMonitor();
200 
203  virtual DtParallelTickManager* parallelTickManager();
204 
206  virtual DtScheduler* scheduler();
207 
210 
211  virtual void setPhysicalWorld(DtPhysicalWorld* newPhysicalWorld);
212  virtual DtPhysicalWorld* physicalWorld();
213  virtual const DtPhysicalWorld* physicalWorld() const;
215 
217 
218  virtual void setCommModelManager(DtCommModelManager* newCommModelManager);
219  virtual DtCommModelManager* commModelManager();
220  virtual const DtCommModelManager* commModelManager() const;
222 
224 
225  virtual void setSimTerrainRequestManager(DtSimTerrainRequestManager* newSimTerrainRequestManager);
226  virtual DtSimTerrainRequestManager* simTerrainRequestManager();
227  virtual const DtSimTerrainRequestManager* simTerrainRequestManager() const;
229 
232  virtual void setVrfObjectManager (DtVrfObjectManager* entityManager);
233  virtual DtVrfObjectManager* vrfObjectManager();
234  virtual const DtVrfObjectManager* vrfObjectManager() const;
235 
236  virtual void setVrfNavAreaManager(DtVrfNavAreaManager* navAreaManager);
237  virtual DtVrfNavAreaManager* vrfNavAreaManager();
238  virtual const DtVrfNavAreaManager* vrfNavAreaManager() const;
239 
240  virtual void setSpawnSinkManager(DtSpawnSinkManager* spawnSinkManager);
241  virtual DtSpawnSinkManager* spawnSinkManager();
242  virtual const DtSpawnSinkManager* spawnSinkManager() const;
243 
247  virtual void setEmbeddedEntityInfoManager(DtEmbeddedEntityInfoManager* eeInfManager);
248  virtual DtEmbeddedEntityInfoManager* embeddedEntityInfoManager();
249  virtual const DtEmbeddedEntityInfoManager* embeddedEntityInfoManager() const;
250 
252  virtual void setScriptedTaskManager (DtScriptedTaskManager*);
253  virtual DtScriptedTaskManager* scriptedTaskManager();
254  virtual const DtScriptedTaskManager* scriptedTaskManager() const;
255 
257  virtual void setScenarioEventManager (DtScenarioEventManager*);
258  virtual DtScenarioEventManager* scenarioEventManager();
259  virtual const DtScenarioEventManager* scenarioEventManager() const;
260 
262  virtual void setHazardAreaManager (DtHazardAreaManager*);
263  virtual DtHazardAreaManager* hazardAreaManager();
264  virtual const DtHazardAreaManager* hazardAreaManager() const;
265 
267  virtual void setIntelCollectionAreaManager (DtIntelCollectionAreaManager*);
268  virtual DtIntelCollectionAreaManager* intelCollectionAreaManager();
269  virtual const DtIntelCollectionAreaManager* intelCollectionAreaManager() const;
270 
272  virtual void setScriptedObjectsMovementManager (DtScriptedObjectsMovementManager*);
273  virtual DtScriptedObjectsMovementManager* scriptedObjectsMovementManager();
274  virtual const DtScriptedObjectsMovementManager* scriptedObjectsMovementManager() const;
275 
278  virtual DtEventId nextEventId(const DtGlobalObjectDesignator& entId);
279 
282  virtual void setAggregateSpatialModel (DtAggregateSpatialModel* aggregateSpatialModel);
283  virtual DtAggregateSpatialModel* aggregateSpatialModel();
284  virtual const DtAggregateSpatialModel* aggregateSpatialModel() const;
285 
289  virtual void setDetonationManager(DtDetonationManager* detonationManager);
290  virtual DtDetonationManager* detonationManager();
291  virtual const DtDetonationManager* detonationManager() const;
292 
294  virtual void setAmmunitionManager(DtAmmunitionManager* ammunitionManager);
295  virtual DtAmmunitionManager* ammunitionManager();
296 
302  virtual void setFireManager(DtFireManager* fireManager);
303  virtual DtFireManager* fireManager();
304  virtual const DtFireManager* fireManager() const;
305 
309 
310  virtual void setGlobalPlanManager(DtGlobalPlanManager* planManager);
311  virtual const DtGlobalPlanManager* globalPlanManager() const;
312  virtual DtGlobalPlanManager* globalPlanManager();
314 
316 
317  virtual void setStealthCommandsManager(DtStealthCommandsManager* planManager);
318  virtual const DtStealthCommandsManager* stealthCommandsManager() const;
319  virtual DtStealthCommandsManager* stealthCommandsManager();
321 
323 
324  virtual void setHostilityManager(DtHostilityManager* hostilityManager);
325  virtual const DtHostilityManager* hostilityManager() const;
326  virtual DtHostilityManager* hostilityManager();
328 
330 
331  virtual void setEngagementZonesManager(DtEngagementZonesManager* manager);
332  virtual const DtEngagementZonesManager* engagementZonesManager() const;
333  virtual DtEngagementZonesManager* engagementZonesManager();
335 
337 
338  virtual void setScenarioExtrasMgr(DtScenarioExtrasMgr* scenarioExtrasMgr);
339  virtual const DtScenarioExtrasMgr* scenarioExtrasMgr() const;
340  virtual DtScenarioExtrasMgr* scenarioExtrasMgr();
342 
345  void setEventManager(DtEventManager*);
346  DtEventManager* eventManager() const;
347 
350  virtual void addEvent(const DtEvent&);
351 
353  virtual void addEvent(const DtDetonationInteraction&);
354  virtual void addEvent(const DtFireInteraction&);
355  virtual void addEvent(const DtAcknowledgeInteraction&);
356  virtual void addEvent(const DtStopFreezeInteraction&);
357  virtual void addEvent(const DtStartResumeInteraction&);
358  virtual void addEvent(const DtDataInteraction&);
359  virtual void addEvent(const DtSignalInteraction&);
360  virtual void addEvent(const DtCommentInteraction&);
361  virtual void addEvent(const DtSensorFieldOfViewControlInter&);
362  virtual void addevent(const DtSimInterfaceContent&);
363 
364 #if DtHLA
365  virtual void addEvent(const DtDataInteractionWithTransportType&);
366  virtual void addEvent(const DtInfluenceInteraction&);
367  virtual void addEvent(const DtInfluenceInteractionExtension&);
368  virtual void addEvent(const DtEndGestureInter&);
369  virtual void addEvent(const DtExecuteGestureInter&);
370 #else
371  virtual void addEvent(const DtDIGuyCustomPdu&);
372 #endif
373 
375 
378 
379  virtual void setSimCommandDistributor(DtSimCommandDistributor* distributor);
380  virtual const DtSimCommandDistributor* simCommandDistributor() const;
381  virtual DtSimCommandDistributor* simCommandDistributor();
383 
386 
387  virtual void setDebugDrawManager(DtDebugDrawManager* debugDrawManager);
388  virtual const DtDebugDrawManager* debugDrawManager() const;
389  virtual DtDebugDrawManager* debugDrawManager();
391 
393 
394  void setClockMode(int clockMode);
396 
399  virtual void setScenarioRunId(int);
400  virtual int scenarioRunId() const;
401 
403  virtual void setRejectMismatchedScenarioMessages(bool);
404  virtual bool rejectMismatchedScenarioMessages() const;
405 
408  virtual bool rejectMessage(const DtVrfObjectMessage*) const;
409 
411  virtual DtVrfSimSettingsManager* vrfSimSettingsManager();
412 
415  virtual void addMessageCallback(int type, DtMessageCallbackFcn fcn,
416  void* usrData);
417 
418  virtual void removeMessageCallback(int type, DtMessageCallbackFcn fcn,
419  void* usrData);
420 
426 
427  virtual DtU32 scenarioCapabilities() const;
428  virtual void setScenarioCapabilities(DtU32 v);
430 
434 
435  virtual DtVrfMessageInterface* messageInterface() const;
436  virtual DtInterfaceMessageExecutive* messageExecutive();
437 
439  virtual DtVrfTDLMessageInterface* tdlMessageInterface() const;
440 
443  static void TickFunction(void* userData);
444 
448  virtual void registerInterfaceCallbacks();
449 
452  virtual bool registerExtendedProperties();
453 
456  virtual const DtSimulationAddress& messageAddress() const;
457 
459  static void randSeedCallback(DtSimMessage* msg, void* usr);
460 
462  virtual unsigned long sequenceNumber();
463 
466  virtual void setSequenceNumber(unsigned long sequenceNumber);
467 
469  DtResourceMonitor* resourceMonitor();
470  void setResourceMonitor(DtResourceMonitor*);
471 
473  DtRadarCoverageMonitor* radarCoverageMonitor();
474  void setRadarCoverageMonitor(DtRadarCoverageMonitor*);
475 
477  DtTerrainProfileRequestManager* terrainProfileRequestManager();
478  void setTerrainProfileRequestManager(DtTerrainProfileRequestManager*);
479 
481  virtual int vrfSessionId() const;
482 
484  virtual int vrfMessageVersionSupported() const;
485 
488  virtual void runForDuration(double);
489  virtual double runDurationTime() const;
490 
492  virtual void stopSimulationDurationTimer();
493 
495  static void runDurationCompleteCallback(DtTimer*);
496  virtual void processRunDurationComplete();
497 
499  virtual void addSimulationRunDurationCallback(DtRunDurationCallbackFcn tickFunction, void* userData);
500  virtual void removeSimulationRunDurationCallback(DtRunDurationCallbackFcn tickFunction, void* userData);
501 
506  virtual void doNotSelfReflect(unsigned int);
507  virtual void selfReflect(unsigned int);
508 
510  virtual bool selfReflecting() const;
511 
512 protected:
514 
529 
531  DtExerciseConn* myExerciseConn;
560 
563 
569 
573 
574  tbb::spin_mutex myMutex;
575 };
576 
578 {
579  return myResourceMonitor;
580 }
581 
583 {
584  return myRadarCoverageMonitor;
585 }
586 
588 {
590 }
591 
593 {
594  myResourceMonitor = m;
595 }
596 
598 {
600 }
601 
603 {
605 }
606 
608 {
609  return myEventManager;
610 }
DtTerrainProfileRequestManager * terrainProfileRequestManager()
Get/set terrain profile request manager.
Definition: simManager.h:587
Definition: simTerrainRequestManager.h:32
Class: DtResourceMonitor.
Definition: resourceMonitor.h:58
Definition: events.h:33
class DtScheduler
Definition: scheduler.h:23
DtFireManager * myFireManager
Definition: simManager.h:540
The DtAmmunitionManager is a clas that will maintain ammunition (that which is not published...
Definition: ammunitionManager.h:17
The DtVrfTDLMessageInterface is a transporter for sending TDL messages as data interactions using a V...
Definition: vrfTDLMessageInterface.h:25
Instances of DtTimer are used to maintain the information needed to represent some kind of scheduled ...
Definition: timer.h:45
DtGlobalPlanManager * myGlobalPlanManager
Definition: simManager.h:541
void setTerrainProfileRequestManager(DtTerrainProfileRequestManager *)
Definition: simManager.h:602
Instances of DtEndGestureInter are used to store state data for DIGuyInteraction.EndGesture interacti...
Definition: endGestureInterHLA.h:27
DtVrfMessageInterface * myMessageInterface
out message interface
Definition: simManager.h:527
void setResourceMonitor(DtResourceMonitor *)
Definition: simManager.h:592
DtDetonationManager * myDetonationManager
Definition: simManager.h:538
DtVrfSimSettingsManager * myVrfSimSettingsManager
Definition: simManager.h:525
Definition: scriptedTaskManager.h:74
Holds all radio networks for the current exercise.
Definition: commModelManager.h:25
DtSpawnSinkManager * mySpawnSinkManager
Definition: simManager.h:556
DtNoArgumentCallbackList mySimulationDurationCallbackList
Definition: simManager.h:567
DtU32 myScenarioCapabilities
Definition: simManager.h:572
Options for the configuring the sim.
Definition: vrfSimOptionsInterface.h:19
Definition: spawnSinkManager.h:22
The DtEngagementZonesManager will keep track of all the engagement zones and their state...
Definition: engagementZonesManager.h:22
DtEventManager * eventManager() const
Definition: simManager.h:607
DtEventManager * myEventManager
Definition: simManager.h:558
Definition: radarCoverageMonitor.h:32
DtVrfSimOptionsInterface * mySimOptions
Definition: simManager.h:513
Definition: terrainProfileRequestManager.h:31
DtExerciseClock * myExerciseClock
The simulation back-end&#39;s clock.
Definition: simManager.h:521
DtAggregateSpatialModel * myAggregateSpatialModel
Definition: simManager.h:537
Enables parallelism in the main thread.
Definition: parallelTickManager.h:62
DtSimInterfaceMessage is used to send a message to the front end or the back end. ...
Definition: simInterfaceMessage.h:32
DtVrfNavAreaManager * myVrfNavAreaManager
Definition: simManager.h:555
DtSimCommandDistributor * mySimCommandDistributor
Definition: simManager.h:557
The DtHazardAreaManager will keep track of all hazard area objects and their state.
Definition: hazardAreaManager.h:20
DtVrfObjectManager * myVrfObjectManager
Definition: simManager.h:535
DtEngagementZonesManager * myEngagementZonesManager
Definition: simManager.h:544
DtSimTerrainRequestManager * mySimTerrainRequestManager
Definition: simManager.h:534
The DtFireManager class exists to centralize the processing of fire interactions. ...
Definition: fireManager.h:42
DtFrameRateMonitor * myFrameRateMonitor
Definition: simManager.h:524
This class keeps track of which forces are hostile to which other forces in the simulation.
Definition: hostilityManager.h:34
Debug Draw Manager (back end) that receive (DIS/HLA) messages from a VRF GUI and then connect to the ...
Definition: debugDrawManager.h:36
DtStealthCommandsManager * myStealthCommandsManager
Definition: simManager.h:542
DtScriptedTaskManager * myScriptedTaskManager
Definition: simManager.h:549
tbb::spin_mutex myMutex
Definition: simManager.h:574
DtNoArgumentCallbackList myTickList
Definition: simManager.h:522
Definition: events.h:47
DtScenarioExtrasMgr * myScenarioExtrasMgr
Definition: simManager.h:545
The scenario event manager will keep track of all scenario event objects and their state...
Definition: scenarioEventManager.h:32
DtCommModelManager * myCommModelManager
Definition: simManager.h:533
The DtPhysicalWorld is the primary interface to and manager of all of the &quot;physical&quot; aspects of the s...
Definition: physicalWorld.h:87
Definition: eventManager.h:23
DtEmbeddedEntityInfoManager is the central point for type-keyed data caching in the backend...
Definition: embeddedEntityInfoManager.h:32
The DtVrfNavAreaManager manages all of the nav areas currently created in the sim.
Definition: vrfNavAreaManager.h:41
int myClockMode
Configuration for the clock to be used for absolute time stamping (in windows)
Definition: simManager.h:562
DtNoArgumentCallbackList myPostTickList
Definition: simManager.h:523
File: simMsg.h.
Definition: simMessage.h:35
This class works just as DtCalllbackTable, but manages callbacks that have no arguments, and therefore don&#39;t fit in the template defined by DtCallbackList.
Definition: noArgumentCallbackList.h:152
DtIntelCollectionAreaManager * myIntelCollectionAreaManager
Definition: simManager.h:552
DtScenarioEventManager * myScenarioEventManager
Definition: simManager.h:550
DtScriptedObjectsMovementManager * myScriptedObjectsMovementManager
Definition: simManager.h:553
DtDetonationPdu DtDetonationInteraction
Definition: DistributedSimulationDriver3A.h:14
void(* DtSimTickFunction)(void *userData)
Function signature for tick functions registered with the DtSimManager.
Definition: simManager.h:85
Definition: vrfSimSettingsManager.h:19
The base class for all messages to/from a specific DtVrfObject.
Definition: vrfObjectMessage.h:30
Contains the DtInterfaceMessageExecutive class declaration.
Definition: interfaceMessageExecutive.h:22
DtPhysicalWorld * myPhysicalWorld
Definition: simManager.h:532
The scenario event manager will keep track of all Intel Collection area objects and their state...
Definition: intelCollectionAreaManager.h:21
class DtVrfObjectManager:
Definition: vrfObjectManager.h:201
bool myRejectMismatchedScenarioMessages
Definition: simManager.h:571
This class defines a manager whose job it is to read the extra scenario data in the ...
Definition: scenarioExtrasMgr.h:26
Functor class used to allow entity identifiers to be used as a key to a std::map. ...
Definition: aggregateSpatialModel.h:47
DtRadarCoverageMonitor * myRadarCoverageMonitor
Definition: simManager.h:547
Definition: stealthCommandsManager.h:41
void(* DtMessageCallbackFcn)(DtSimMessage *msg, void *usr)
Message callback function signature.
Definition: messageExecutive.h:21
Instances of DtSensorFieldOfViewControlInter are used to store state data for SensorFieldOfViewContro...
Definition: sensorFieldOfViewControlInterDIS.h:51
Instances of DtExecuteGestureInter are used to store state data for DIGuyInteraction.ExecuteGesture interactions.
Definition: executeGestureInterHLA.h:27
Instances of DtInfluenceInter are used to store state data for Influence interactions.
Definition: influenceInteractionHLA.h:27
Definition: frameRateMonitor.h:32
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:102
DtExerciseConn * myExerciseConn
Objects we hold pointers onto for others.
Definition: simManager.h:531
double myRunDurationTime
Definition: simManager.h:568
Definition: simInterfaceContent.h:45
DtRadarCoverageMonitor * radarCoverageMonitor()
Get/set radarCoverage monitor.
Definition: simManager.h:582
DtVrfTDLMessageInterface * myTDLMessageInterface
Definition: simManager.h:528
DtHazardAreaManager * myHazardAreaManager
Definition: simManager.h:551
void setRadarCoverageMonitor(DtRadarCoverageMonitor *)
Definition: simManager.h:597
The global plan manager maintains the list of &quot;Global Plans.&quot; These are plans that are not specific t...
Definition: globalPlanManager.h:37
int myScenarioRunId
Definition: simManager.h:570
Instances of DtInfluenceInteractionExtension are used to store state data for Influence interactions ...
Definition: influenceInteractionExtension.h:29
DtParallelTickManager * myParallelTickManager
Definition: simManager.h:554
DtResourceMonitor * myResourceMonitor
Definition: simManager.h:546
DtTerrainProfileRequestManager * myTerrainProfileRequestManager
Definition: simManager.h:548
DtResourceMonitor * resourceMonitor()
Get/set resource monitor.
Definition: simManager.h:577
The DtDetonationManager class exists to centralize the processing of detonation interactions.
Definition: detonationManager.h:58
DtAmmunitionManager * myAmmunitionManager
Definition: simManager.h:539
Contains the DtSimCommandDistributor class declaration.
Definition: simCommandDistributor.h:23
DtEmbeddedEntityInfoManager * myEmbeddedEntityInfoManager
Definition: simManager.h:536
#define DT_DLL_vrfcore
This file is used to determine how to build.
Definition: vrfcoreDefines.h:25
void(* DtRunDurationCallbackFcn)(void *userData)
Definition: simManager.h:86
The scripted objects movement manager contains a list of all objects that can be scheduled for script...
Definition: scriptedObjectsMovementManager.h:20
DtDebugDrawManager * myDebugDrawManager
Definition: simManager.h:559
Definition: vrfMessageInterface.h:46
class DtReflectedExtAggregateList:
Definition: reflectedExtEntityList.h:27
DtTimer * mySimulationDurationTimer
If non-null this scenario is only scheduled to run for the given amount of time delta from the curren...
Definition: simManager.h:566
DtHostilityManager * myHostilityManager
Definition: simManager.h:543
DtScheduler * myScheduler
Objects we create.
Definition: simManager.h:516
Description: The Exercise Clock keeps track of current simulated time.
Definition: exerciseClock.h:44

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)