VR-Forces 4.10 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 class DtEnumDictionary;
84 
86 typedef void (*DtSimTickFunction)(void* userData);
87 typedef void (*DtRunDurationCallbackFcn)(void* userData);
88 
102 #include "vrfcore/vrfcoreDefines.h"
104 {
105 public:
106 
108  DtSimManager(DtExerciseConn* connection);
109 
111  virtual ~DtSimManager();
112 
113 private:
114 
117  DtSimManager(const DtSimManager& orig);
118 
121  DtSimManager& operator=(const DtSimManager& orig);
122 
123 public:
124 
129  virtual bool init();
130 
132  virtual const DtVrfSimOptionsInterface* simOptions() const;
133 
135  virtual void setSimOptions(const DtVrfSimOptionsInterface&);
136 
146  virtual bool createExerciseClock();
147 
148  virtual bool createScheduler();
149  virtual bool createMessageInterface();
150  virtual bool createTDLMessageInterface();
151  virtual bool createFrameRateMonitor();
153  virtual bool createVrfSimSettingsManager();
154  virtual bool createParallelTickManager();
155 
157  virtual void tick();
158 
159  virtual bool deliverMessage(const DtSimInterfaceMessage& msg);
160 
161  virtual bool receiveMessage(const DtSimInterfaceMessage& msg);
162 
163  virtual bool createAndDeliverMessage(
164  const DtSimulationAddress& recipient,
165  const DtSimInterfaceContent & content,
166  bool overrideTimestampOrder = true) const;
167 
175 
176  virtual void addTickEntry(DtSimTickFunction tickFunction, void* userData) const;
177  virtual void removeTickEntry(DtSimTickFunction tickFunction, void* userData) const;
179 
183  virtual void addPostTickEntry(DtSimTickFunction tickFunction, void* userData) const;
184  virtual void removePostTickEntry(DtSimTickFunction tickFunction, void* userData) const;
186 
190  DtExerciseConn* exerciseConn();
191 
194  const DtExerciseClock* exerciseClock() const;
195 
200  virtual DtFrameRateMonitor* frameRateMonitor();
201 
204  virtual DtParallelTickManager* parallelTickManager();
205 
207  virtual DtScheduler* scheduler();
208 
211 
212  virtual void setPhysicalWorld(DtPhysicalWorld* newPhysicalWorld);
213  virtual DtPhysicalWorld* physicalWorld();
214  virtual const DtPhysicalWorld* physicalWorld() const;
216 
218 
219  virtual void setCommModelManager(DtCommModelManager* newCommModelManager);
220  virtual DtCommModelManager* commModelManager();
221  virtual const DtCommModelManager* commModelManager() const;
223 
225 
226  virtual void setSimTerrainRequestManager(DtSimTerrainRequestManager* newSimTerrainRequestManager);
227  virtual DtSimTerrainRequestManager* simTerrainRequestManager();
228  virtual const DtSimTerrainRequestManager* simTerrainRequestManager() const;
230 
233  virtual void setVrfObjectManager (DtVrfObjectManager* entityManager);
234  virtual DtVrfObjectManager* vrfObjectManager();
235  virtual const DtVrfObjectManager* vrfObjectManager() const;
236 
237  virtual void setVrfNavAreaManager(DtVrfNavAreaManager* navAreaManager);
238  virtual DtVrfNavAreaManager* vrfNavAreaManager();
239  virtual const DtVrfNavAreaManager* vrfNavAreaManager() const;
240 
241  virtual void setSpawnSinkManager(DtSpawnSinkManager* spawnSinkManager);
242  virtual DtSpawnSinkManager* spawnSinkManager();
243  virtual const DtSpawnSinkManager* spawnSinkManager() const;
244 
248  virtual void setEmbeddedEntityInfoManager(DtEmbeddedEntityInfoManager* eeInfManager);
249  virtual DtEmbeddedEntityInfoManager* embeddedEntityInfoManager();
250  virtual const DtEmbeddedEntityInfoManager* embeddedEntityInfoManager() const;
251 
253  virtual void setScriptedTaskManager (DtScriptedTaskManager*);
254  virtual DtScriptedTaskManager* scriptedTaskManager();
255  virtual const DtScriptedTaskManager* scriptedTaskManager() const;
256 
258  virtual void setScenarioEventManager (DtScenarioEventManager*);
259  virtual DtScenarioEventManager* scenarioEventManager();
260  virtual const DtScenarioEventManager* scenarioEventManager() const;
261 
263  virtual void setHazardAreaManager (DtHazardAreaManager*);
264  virtual DtHazardAreaManager* hazardAreaManager();
265  virtual const DtHazardAreaManager* hazardAreaManager() const;
266 
268  virtual void setIntelCollectionAreaManager (DtIntelCollectionAreaManager*);
269  virtual DtIntelCollectionAreaManager* intelCollectionAreaManager();
270  virtual const DtIntelCollectionAreaManager* intelCollectionAreaManager() const;
271 
273  virtual void setScriptedObjectsMovementManager (DtScriptedObjectsMovementManager*);
274  virtual DtScriptedObjectsMovementManager* scriptedObjectsMovementManager();
275  virtual const DtScriptedObjectsMovementManager* scriptedObjectsMovementManager() const;
276 
279  virtual DtEventId nextEventId(const DtGlobalObjectDesignator& entId);
280 
283  virtual void setAggregateSpatialModel (DtAggregateSpatialModel* aggregateSpatialModel);
284  virtual DtAggregateSpatialModel* aggregateSpatialModel();
285  virtual const DtAggregateSpatialModel* aggregateSpatialModel() const;
286 
290  virtual void setDetonationManager(DtDetonationManager* detonationManager);
291  virtual DtDetonationManager* detonationManager();
292  virtual const DtDetonationManager* detonationManager() const;
293 
295  virtual void setAmmunitionManager(DtAmmunitionManager* ammunitionManager);
296  virtual DtAmmunitionManager* ammunitionManager();
297 
303  virtual void setFireManager(DtFireManager* fireManager);
304  virtual DtFireManager* fireManager();
305  virtual const DtFireManager* fireManager() const;
306 
310 
311  virtual void setGlobalPlanManager(DtGlobalPlanManager* planManager);
312  virtual const DtGlobalPlanManager* globalPlanManager() const;
313  virtual DtGlobalPlanManager* globalPlanManager();
315 
317 
318  virtual void setStealthCommandsManager(DtStealthCommandsManager* planManager);
319  virtual const DtStealthCommandsManager* stealthCommandsManager() const;
320  virtual DtStealthCommandsManager* stealthCommandsManager();
322 
324 
325  virtual void setHostilityManager(DtHostilityManager* hostilityManager);
326  virtual const DtHostilityManager* hostilityManager() const;
327  virtual DtHostilityManager* hostilityManager();
329 
331 
332  virtual void setEngagementZonesManager(DtEngagementZonesManager* manager);
333  virtual const DtEngagementZonesManager* engagementZonesManager() const;
334  virtual DtEngagementZonesManager* engagementZonesManager();
336 
338 
339  virtual void setScenarioExtrasMgr(DtScenarioExtrasMgr* scenarioExtrasMgr);
340  virtual const DtScenarioExtrasMgr* scenarioExtrasMgr() const;
341  virtual DtScenarioExtrasMgr* scenarioExtrasMgr();
343 
346  void setEventManager(DtEventManager*);
347  DtEventManager* eventManager() const;
348 
351  virtual void addEvent(const DtEvent&);
352 
354  virtual void addEvent(const DtDetonationInteraction&);
355  virtual void addEvent(const DtFireInteraction&);
356  virtual void addEvent(const DtAcknowledgeInteraction&);
357  virtual void addEvent(const DtStopFreezeInteraction&);
358  virtual void addEvent(const DtStartResumeInteraction&);
359  virtual void addEvent(const DtDataInteraction&);
360  virtual void addEvent(const DtSignalInteraction&);
361  virtual void addEvent(const DtCommentInteraction&);
362  virtual void addEvent(const DtSensorFieldOfViewControlInter&);
363  virtual void addevent(const DtSimInterfaceContent&);
364 
365 #if DtHLA
366  virtual void addEvent(const DtDataInteractionWithTransportType&);
367  virtual void addEvent(const DtInfluenceInteraction&);
368  virtual void addEvent(const DtInfluenceInteractionExtension&);
369  virtual void addEvent(const DtEndGestureInter&);
370  virtual void addEvent(const DtExecuteGestureInter&);
371 #else
372  virtual void addEvent(const DtDIGuyCustomPdu&);
373 #endif
374 
376 
379 
380  virtual void setSimCommandDistributor(DtSimCommandDistributor* distributor);
381  virtual const DtSimCommandDistributor* simCommandDistributor() const;
382  virtual DtSimCommandDistributor* simCommandDistributor();
384 
387 
388  virtual void setDebugDrawManager(DtDebugDrawManager* debugDrawManager);
389  virtual const DtDebugDrawManager* debugDrawManager() const;
390  virtual DtDebugDrawManager* debugDrawManager();
392 
394 
395  void setClockMode(int clockMode);
397 
400  virtual void setScenarioRunId(int);
401  virtual int scenarioRunId() const;
402 
404  virtual void setRejectMismatchedScenarioMessages(bool);
405  virtual bool rejectMismatchedScenarioMessages() const;
406 
409  virtual bool rejectMessage(const DtVrfObjectMessage*) const;
410 
412  virtual DtVrfSimSettingsManager* vrfSimSettingsManager();
413 
416  virtual void addMessageCallback(int type, DtMessageCallbackFcn fcn,
417  void* usrData);
418 
419  virtual void removeMessageCallback(int type, DtMessageCallbackFcn fcn,
420  void* usrData);
421 
427 
428  virtual DtU32 scenarioCapabilities() const;
429  virtual void setScenarioCapabilities(DtU32 v);
431 
435 
436  virtual DtVrfMessageInterface* messageInterface() const;
437  virtual DtInterfaceMessageExecutive* messageExecutive();
438 
440  virtual DtVrfTDLMessageInterface* tdlMessageInterface() const;
441 
444  static void TickFunction(void* userData);
445 
449  virtual void registerInterfaceCallbacks();
450 
453  virtual bool registerExtendedProperties();
454 
457  virtual const DtSimulationAddress& messageAddress() const;
458 
460  static void randSeedCallback(DtSimMessage* msg, void* usr);
461 
463  virtual unsigned long sequenceNumber();
464 
467  virtual void setSequenceNumber(unsigned long sequenceNumber);
468 
470  DtResourceMonitor* resourceMonitor();
471  void setResourceMonitor(DtResourceMonitor*);
472 
474  DtRadarCoverageMonitor* radarCoverageMonitor();
475  void setRadarCoverageMonitor(DtRadarCoverageMonitor*);
476 
478  DtTerrainProfileRequestManager* terrainProfileRequestManager();
479  void setTerrainProfileRequestManager(DtTerrainProfileRequestManager*);
480 
482  virtual int vrfSessionId() const;
483 
485  virtual int vrfMessageVersionSupported() const;
486 
489  virtual void runForDuration(double);
490  virtual double runDurationTime() const;
491 
493  virtual void stopSimulationDurationTimer();
494 
496  static void runDurationCompleteCallback(DtTimer*);
497  virtual void processRunDurationComplete();
498 
500  virtual void addSimulationRunDurationCallback(DtRunDurationCallbackFcn tickFunction, void* userData);
501  virtual void removeSimulationRunDurationCallback(DtRunDurationCallbackFcn tickFunction, void* userData);
502 
507  virtual void doNotSelfReflect(unsigned int);
508  virtual void selfReflect(unsigned int);
509 
511  virtual bool selfReflecting() const;
512 
514  const DtEnumDictionary* enumerationDictionary() const;
515 
516  virtual std::vector<DtFilename> enumerationsFiles() const;
517 
518 protected:
520 
535 
537  DtExerciseConn* myExerciseConn;
566 
569 
575 
579 
581 
582  tbb::spin_mutex myMutex;
583 };
584 
586 {
587  return myResourceMonitor;
588 }
589 
591 {
592  return myRadarCoverageMonitor;
593 }
594 
596 {
598 }
599 
601 {
602  myResourceMonitor = m;
603 }
604 
606 {
608 }
609 
611 {
613 }
614 
616 {
617  return myEventManager;
618 }
DtTerrainProfileRequestManager * terrainProfileRequestManager()
Get/set terrain profile request manager.
Definition: simManager.h:595
Definition: simTerrainRequestManager.h:34
Class: DtResourceMonitor.
Definition: resourceMonitor.h:58
Definition: events.h:35
class DtScheduler
Definition: scheduler.h:25
DtFireManager * myFireManager
Definition: simManager.h:546
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:547
void setTerrainProfileRequestManager(DtTerrainProfileRequestManager *)
Definition: simManager.h:610
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:533
void setResourceMonitor(DtResourceMonitor *)
Definition: simManager.h:600
DtDetonationManager * myDetonationManager
Definition: simManager.h:544
DtVrfSimSettingsManager * myVrfSimSettingsManager
Definition: simManager.h:531
Definition: scriptedTaskManager.h:74
Holds all radio networks for the current exercise.
Definition: commModelManager.h:25
DtSpawnSinkManager * mySpawnSinkManager
Definition: simManager.h:562
DtNoArgumentCallbackList mySimulationDurationCallbackList
Definition: simManager.h:573
DtU32 myScenarioCapabilities
Definition: simManager.h:578
Options for the configuring the sim.
Definition: vrfSimOptionsInterface.h:20
Definition: spawnSinkManager.h:22
DtEnumDictionary * myEnumDictionary
Definition: simManager.h:580
Maintains a list of enumerations read in from files.
Definition: enumDictionary.h:90
The DtEngagementZonesManager will keep track of all the engagement zones and their state...
Definition: engagementZonesManager.h:22
DtEventManager * eventManager() const
Definition: simManager.h:615
DtEventManager * myEventManager
Definition: simManager.h:564
Definition: radarCoverageMonitor.h:32
DtVrfSimOptionsInterface * mySimOptions
Definition: simManager.h:519
Definition: terrainProfileRequestManager.h:31
DtExerciseClock * myExerciseClock
The simulation back-end&#39;s clock.
Definition: simManager.h:527
DtAggregateSpatialModel * myAggregateSpatialModel
Definition: simManager.h:543
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:561
DtSimCommandDistributor * mySimCommandDistributor
Definition: simManager.h:563
The DtHazardAreaManager will keep track of all hazard area objects and their state.
Definition: hazardAreaManager.h:20
DtVrfObjectManager * myVrfObjectManager
Definition: simManager.h:541
DtEngagementZonesManager * myEngagementZonesManager
Definition: simManager.h:550
DtSimTerrainRequestManager * mySimTerrainRequestManager
Definition: simManager.h:540
The DtFireManager class exists to centralize the processing of fire interactions. ...
Definition: fireManager.h:42
DtFrameRateMonitor * myFrameRateMonitor
Definition: simManager.h:530
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:548
DtScriptedTaskManager * myScriptedTaskManager
Definition: simManager.h:555
tbb::spin_mutex myMutex
Definition: simManager.h:582
DtNoArgumentCallbackList myTickList
Definition: simManager.h:528
Definition: events.h:49
DtScenarioExtrasMgr * myScenarioExtrasMgr
Definition: simManager.h:551
The scenario event manager will keep track of all scenario event objects and their state...
Definition: scenarioEventManager.h:32
DtCommModelManager * myCommModelManager
Definition: simManager.h:539
The DtPhysicalWorld is the primary interface to and manager of all of the &quot;physical&quot; aspects of the s...
Definition: physicalWorld.h:88
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:568
DtNoArgumentCallbackList myPostTickList
Definition: simManager.h:529
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:558
DtScenarioEventManager * myScenarioEventManager
Definition: simManager.h:556
DtScriptedObjectsMovementManager * myScriptedObjectsMovementManager
Definition: simManager.h:559
DtDetonationPdu DtDetonationInteraction
Definition: DistributedSimulationDriver3A.h:14
void(* DtSimTickFunction)(void *userData)
Function signature for tick functions registered with the DtSimManager.
Definition: simManager.h:86
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:538
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:202
bool myRejectMismatchedScenarioMessages
Definition: simManager.h:577
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:553
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:103
DtExerciseConn * myExerciseConn
Objects we hold pointers onto for others.
Definition: simManager.h:537
double myRunDurationTime
Definition: simManager.h:574
Definition: simInterfaceContent.h:45
DtRadarCoverageMonitor * radarCoverageMonitor()
Get/set radarCoverage monitor.
Definition: simManager.h:590
DtVrfTDLMessageInterface * myTDLMessageInterface
Definition: simManager.h:534
DtHazardAreaManager * myHazardAreaManager
Definition: simManager.h:557
void setRadarCoverageMonitor(DtRadarCoverageMonitor *)
Definition: simManager.h:605
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:576
Instances of DtInfluenceInteractionExtension are used to store state data for Influence interactions ...
Definition: influenceInteractionExtension.h:29
DtParallelTickManager * myParallelTickManager
Definition: simManager.h:560
DtResourceMonitor * myResourceMonitor
Definition: simManager.h:552
DtTerrainProfileRequestManager * myTerrainProfileRequestManager
Definition: simManager.h:554
DtResourceMonitor * resourceMonitor()
Get/set resource monitor.
Definition: simManager.h:585
The DtDetonationManager class exists to centralize the processing of detonation interactions.
Definition: detonationManager.h:58
DtAmmunitionManager * myAmmunitionManager
Definition: simManager.h:545
Contains the DtSimCommandDistributor class declaration.
Definition: simCommandDistributor.h:23
DtEmbeddedEntityInfoManager * myEmbeddedEntityInfoManager
Definition: simManager.h:542
#define DT_DLL_vrfcore
This file is used to determine how to build.
Definition: vrfcoreDefines.h:25
void(* DtRunDurationCallbackFcn)(void *userData)
Definition: simManager.h:87
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:565
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:572
DtHostilityManager * myHostilityManager
Definition: simManager.h:549
DtScheduler * myScheduler
Objects we create.
Definition: simManager.h:522
Description: The Exercise Clock keeps track of current simulated time.
Definition: exerciseClock.h:44

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)