18 #include <vl/globalObjectDesignator.h>
19 #include <vl/vrlinkStateStateRepository.h>
20 #include <tbb/spin_mutex.h>
21 #include <tbb/mutex.h>
25 #include <tbb/tbb_thread.h>
26 #include <boost/function.hpp>
38 namespace makVrfVrlinkExtToolkit
40 class DtReflectedExtendedAttributesObjectList;
46 class DtRemoteObjectManager;
47 class DtVrfEntityIdentifierFactory;
48 class DtVrlinkNetworkInterface;
49 class DtVrlinkEventTranslatorManager;
50 class DtVrlinkEventTranslator;
51 class DtStateDataManager;
53 class DtHlaExerciseClock;
81 virtual void beginFrame(
double)
override;
82 virtual bool preAdvanceFrame()
override;
83 virtual void advanceFrame(
double* networkTime =
nullptr)
override;
86 virtual void setBlockOnUnfinishedRemoteDiscovery(
bool);
89 return myBlockOnUnfinishedRemoteDiscovery;
92 virtual const char*
type()
const {
return Type(); };
93 static const char*
Type() {
return "vrlink-network-interface"; };
96 virtual bool printDataToStream(
const DtUUID&, DtOutputStream&
stream)
const;
99 virtual void setInterest(
const DtVector& geocentricCenter,
double radius);
102 virtual DtUUID entityThatHostsRadio(
const DtGlobalObjectDesignator&,
int radioIndex)
const;
106 virtual DtGlobalObjectDesignator radioGlobalObjectDesignatorFor(
const DtUUID& entityUUID,
int radioIndex,
bool* radioFound =
nullptr)
const;
113 virtual void setExerciseStartTime(
double);
114 virtual void setSimTime(
double);
115 virtual void setTimeMultiplier(
double);
118 virtual void resetSimulation();
122 virtual void setControlsDrainInput(
bool);
123 bool controlsDrainInput()
const;
128 return std::string(
"DIS");
129 #elif DDtHLA_1516_EVOLVED == 1
130 return std::string(
"HLA1516e");
131 #elif DDtHLA_1516 == 1
132 return std::string(
"HLA1516");
133 #else //This is HLA13
134 return std::string(
"HLA13");
139 virtual void setRunInTimeManagementMode(
bool yesOrNo);
142 virtual bool runInTimeManagementMode()
const;
147 static void startTimeManagement(
void* usr);
148 static void stopTimeManagement(
void* usr);
152 virtual void processStartTimeManagement();
153 virtual void processStopTimeManagement();
156 virtual void setReflectedListRequestUpdates(
bool yesOrNo);
160 virtual void setMetocPublishingEnabled(
bool);
163 return myMetocPublishingEnabled;
167 virtual void setDisableRemoteDiscovery(
bool);
170 return myDisableRemoteDiscovery;
174 virtual void setDefaultObjectTimeout(
int);
177 return myDefaultObjectTimeout;
180 struct ComponentRuleUserData
198 typedef boost::function<bool (const DtStateComponent*, const DtStateData*, std::shared_ptr<ComponentRuleUserData>)>
CreationRule;
200 const DtString& testBeforeInterface =
"");
203 virtual bool createInterfaceIfComponentIs(
const DtStateComponent* c,
const DtStateData* d, std::shared_ptr<ComponentRuleUserData>);
207 virtual void setRunFullyThreaded(
bool);
208 virtual bool runFullyThreaded()
const;
210 virtual void setEnabled(
bool);
215 return myCoordinateSystem;
220 return myExerciseConnection;
223 virtual void removeAndDeleteAll();
224 virtual bool wantsToSelfReflect(
unsigned int)
const;
227 virtual bool selfReflecting()
const;
235 return myParameterDatabase;
238 virtual unsigned int maxNameLengthForType(
const DtObjectType&)
const;
241 virtual void setVrfSessionId(
int);
244 return myVrfSessionId;
248 virtual void setVrfMessageVersionSupported(
int);
251 return myVrfMessageVersionSupported;
256 virtual void setPublishZeroVelocityWhenPaused(
bool);
259 return myPublishZeroVelocityWhenPaused;
269 return mySimMgmtPduProcessLevel;
272 virtual void setSimMgmtPduProcessLevel(
unsigned int level);
277 virtual void setDeadReckoningAlgorithmToStaticOnPause(
bool);
280 return mySetDeadReckoningAlgorithmToStaticOnPause;
284 virtual void overrideDeadReckoningAlgorithm(
int drAlg);
288 virtual bool isDeadReckonAlgorithmOverridden(
int& drAlg)
const;
292 virtual void removeDeadReckoningAlgorithmOverride();
294 virtual DtEntityIdentifier nextEntityIdentifier(
const DtStateData* = 0,
const DtEntityIdentifier& = DtEntityIdentifier());
297 virtual DtEntityIdentifier objectIdentifierFor(
const DtUUID&)
const;
300 virtual DtEntityIdentifier globalObjectIdentifierFor(
const DtUUID&)
const;
303 virtual DtGlobalObjectDesignator globalObjectIdentifierFor(
const DtUUID&)
const;
307 virtual DtUUID uuidForObjectIdentifier(
const DtEntityIdentifier&)
const;
310 virtual DtUUID uuidForObjectIdentifier(
const DtGlobalObjectDesignator&)
const;
313 virtual void setSiteAppId(
int,
int);
317 virtual DtString nextEventId(
const DtString& entId = DtString::nullString())
override;
319 virtual int setAppIdRangeMax(
int);
324 virtual void startScenarioLoad(
bool);
327 virtual void endScenarioLoad(
bool);
335 virtual double simTime()
const;
337 virtual void setMaxDrainInputTime(
double maxTime);
338 virtual double maxDrainInputTime()
const;
340 virtual void setFrameRateMode(
const DtString&
mode,
double deltaTime,
bool manageTime =
false);
341 virtual void rewindScenario();
344 virtual void setMinDrainInputTime(
double minTime);
345 virtual double minDrainInputTime()
const;
347 virtual void setFrameDeltaTime(
double);
348 virtual double frameDeltaTime()
const;
350 virtual void beginBulkCreate()
override;
351 virtual void endBulkCreate()
override;
353 virtual void setMaxDrainInputReads(
int maxReads);
354 virtual int maxDrainInputReads()
const;
361 virtual void removeEventTranslator(
int eventType);
369 virtual void pause();
381 return myEventManager;
386 return myCommunicationManager;
391 return myRemoteObjectManager;
397 virtual void setNumCallbackThreads(
unsigned);
400 virtual void setNumRemoteCallbackThreads(
unsigned);
402 virtual void addDefaultNetworkInterface(
const DtEntityType&,
const DtString& local,
const DtString& remote);
403 virtual void removeDefaultNetworkInterface(
const DtEntityType&);
410 virtual void setUseNetworkThread(
bool);
411 virtual bool usingNetworkThread()
const;
414 virtual void setDisableParallelPublisherTick(
bool);
415 virtual bool disableParallelPublisherTick()
const;
419 virtual void setTickPublishersDuringEntityTick(
bool);
420 virtual bool tickPublishersDuringEntityTick()
const;
424 virtual void reserve(
unsigned numToReserve);
427 virtual bool willRediscoverObjects()
const;
440 return myNetworkFrameTime;
443 virtual void setSendMessagesInNetworkProcess(
bool);
446 return mySendMessagesInNetworkProcess;
449 #if DtHLA_1516_EVOLVED
450 virtual void setAutoReserve(
int);
452 int autoReserve()
const;
454 virtual bool isNameReserved(
const DtString& name)
const;
455 virtual bool isNameReservationPending(
const DtString& name)
const;
461 virtual DtString nextGlobalObjectId(
const DtString& defaultId = DtString::nullString());
464 virtual void sendQueuedMessages();
473 virtual void reserveGlobalObjectIds(
unsigned numToReserve);
504 virtual void slot_prepareForHandoff(
DtStateData*,
bool becomingLocal);
507 virtual void stateDataAboutToBeRemoved(
const DtStateData*);
509 virtual void printReflectedObjectCounts()
const;
513 virtual void requestUpdatesForRemoteNonVrfObjects()
const;
516 void createExerciseClock(
int clockMode = 0);
518 virtual void drainInput();
522 virtual void cleanupNetworkThread();
524 virtual void runNetwork();
525 virtual void resolvePendingIds();
528 virtual void createAndInitRemoteObjectManager();
531 virtual bool rediscoverObjects();
536 virtual void stateDataManagerDeleted();
538 #if DtHLA_1516_EVOLVED
539 virtual void reservedNamesSuceeded(
const std::set<std::wstring>& theNames);
543 virtual void reservedNamesFailed(
const std::set<std::wstring>& theNames);
545 static void nameSetReservationSucceededCb(
const std::set<std::wstring>& nameSet,
547 static void nameSetReservationFailedCb(
const std::set<std::wstring>& nameSet,
552 virtual void setExecutionState(DtVRLExecutionStatus status);
564 typedef std::map<makVrf::SimStateID, DtSimObjectNetInterface*>
Publishing;
623 #if DtHLA_1516_EVOLVED
624 std::set<DtGlobalObjectDesignator> myReservedGlobalIds;
625 std::set<DtGlobalObjectDesignator> myPendingReservedGlobalIds;
626 tbb::queuing_mutex myGlobalIdReserveMutex;
631 int myMaxDrainInputReads;
GlobalIdForNetworkInterface myGlobalIdForNetworkInterface
Definition: vrlinkNetworkInterface.h:575
UUID is a unique ID wrapper class.
Definition: rwUUID.h:229
Instances of DtVrfObjectParameters are the readable/writeable objects that contain the information ne...
Definition: vrfObjectParameters.h:63
DtExerciseConn * myExerciseConnection
Definition: vrlinkNetworkInterface.h:557
DtFilename myFastForwardSettingsFile
Fast forward settings file.
Definition: vrlinkNetworkInterface.h:635
DtVrfEntityIdentifierFactory * myEntityIdentifierFactory
Definition: vrlinkNetworkInterface.h:613
bool setDeadReckoningAlgorithmToStaticOnPause() const
Definition: vrlinkNetworkInterface.h:278
bool metocPublishingEnabled() const
Definition: vrlinkNetworkInterface.h:161
std::auto_ptr< tbb::tbb_thread > myNetworkThread
Member variables used to interact with the remote objects reading.
Definition: vrlinkNetworkInterface.h:650
DtHlaExerciseClock * myExerciseClock
Definition: vrlinkNetworkInterface.h:618
virtual bool publishingOnLegionNetwork() const
Whether or not this interface publishes on the legion network.
Definition: vrlinkNetworkInterface.h:534
static const char * Type()
Definition: vrlinkNetworkInterface.h:93
Instances of DtVrfParameterDb are the database of DtVrfObjectParameters objects used in the construct...
Definition: vrfParameterDb.h:38
virtual int vrfSessionId() const
Definition: vrlinkNetworkInterface.h:242
unsigned int simMgmtPduProcessLevel() const
Set/Get the type of receiver ids to process when processing a sim mgmt PDU 1={*,*,*}&{*,*,0} <- wildcarded recipients 2={a,b,0} <- specific ids only 3= both 1 and 2.
Definition: vrlinkNetworkInterface.h:267
std::map< DtGlobalObjectDesignator, DtSimObjectNetInterface * > GlobalIdForNetworkInterface
Definition: vrlinkNetworkInterface.h:574
const Coordinate_System * myCoordinateSystem
Definition: vrlinkNetworkInterface.h:599
bool myRunInTimeManagementMode
Definition: vrlinkNetworkInterface.h:619
bool myScenarioLoaded
Definition: vrlinkNetworkInterface.h:694
DtString local
Definition: vrlinkNetworkInterface.h:68
Definition: scenario.h:52
DtDefaultSimulationModelSetValidatorManager mySimulationModelSetValidator
Definition: vrlinkNetworkInterface.h:637
Default implementation that will add protocol and state data validators (contained in this header fil...
Definition: defaultSimulationModelSetValidatorManager.h:19
virtual bool needsUnpublishedDatabase() const
Return true if this connection uses the simulation database to publish on (as a legion connection doe...
Definition: vrlinkNetworkInterface.h:491
DtString remote
Definition: vrlinkNetworkInterface.h:69
virtual int vrfMessageVersionSupported() const
Definition: vrlinkNetworkInterface.h:249
unsigned int StateComponentType
Definition: stateComponent.h:55
int myVrfMessageVersionSupported
Definition: vrlinkNetworkInterface.h:603
DT_DLL_VRVCORE DtTaitBryan level(const DtCoordinateSystem &cs, const DtVector &localOrigin, double topoHeading)
Returns a level orientation with the topographic heading.
std::vector< makVrfEvents::DtEvent * > myQueuedMessagesToSend
Definition: vrlinkNetworkInterface.h:689
makVrfVrlinkExtToolkit::DtReflectedExtendedAttributesObjectList * myRemoteExtendedAttributesObjectsList
Definition: vrlinkNetworkInterface.h:681
DtReflectedEntityList * myReflectedEntityList
Definition: vrlinkNetworkInterface.h:676
bool mySetDeadReckoningAlgorithmToStaticOnPause
Definition: vrlinkNetworkInterface.h:608
The DtEventManager handles the sending and receipt of system events (fire, detonate, command, etc). It provides a thread-safe way for the sim engine to send and receive such events, between both components within this sim engine and other remote applications.
Definition: eventManager.h:33
std::map< DtStateComponent *, DtSimObjectNetInterface * > StateComponentsPublishing
Definition: vrlinkNetworkInterface.h:567
ComponentCreationRules myComponentCreationRules
Definition: vrlinkNetworkInterface.h:597
static DtVrlinkNetworkInterfaceCreatorFcn theCreator
Definition: vrlinkNetworkInterface.h:638
bool myBlockOnUnfinishedRemoteDiscovery
Definition: vrlinkNetworkInterface.h:609
int myVrfSessionId
Definition: vrlinkNetworkInterface.h:602
CreationRule creationRule
Definition: vrlinkNetworkInterface.h:591
makVrfEvents::DtEventManager * myEventManager
Definition: vrlinkNetworkInterface.h:614
Definition: fastForwardSettings.h:12
double myFrameDeltaTime
Definition: vrlinkNetworkInterface.h:621
Simple asynchronous callback queue.
Definition: vrfCallbackQueue.h:32
double myNextFrameSimTime
Definition: vrlinkNetworkInterface.h:665
tbb::spin_rw_mutex myStateDataMutex
Definition: vrlinkNetworkInterface.h:572
Definition: vrfEntityIdentifierFactory.h:21
bool myIsDeadReckonAlgorithmOverridden
Definition: vrlinkNetworkInterface.h:606
std::atomic< bool > myShutdownNetworkThreadFlag
Definition: vrlinkNetworkInterface.h:653
DtExerciseConn * exerciseConnection()
Definition: vrlinkNetworkInterface.h:218
int myAppIdRangeMax
Definition: vrlinkNetworkInterface.h:612
class DtRemoteObjectManager:
Definition: remoteObjectManager.h:28
tbb::mutex myNetworkThreadMutex
Definition: vrlinkNetworkInterface.h:655
DtCommunicationManager * communicationManager()
Definition: vrlinkNetworkInterface.h:384
Given a component type, sets the publisher creator for that component. Set DtString::nullString() to ...
Definition: vrlinkNetworkInterface.h:184
class DtVrlinkNetworkInterface:
Definition: vrlinkNetworkInterface.h:62
bool myReflectedListRequestUpdatesOn
Definition: vrlinkNetworkInterface.h:663
Definition: objectType.h:27
tbb::mutex ConditionMutex
Definition: vrlinkNetworkInterface.h:646
int myDeadReckonOverrideAlgorithm
Definition: vrlinkNetworkInterface.h:607
bool publishZeroVelocityWhenPaused() const
Definition: vrlinkNetworkInterface.h:257
StateDataByEntityId myStateDataByEntityId
Definition: vrlinkNetworkInterface.h:586
ComponentsPublishing myComponentsPublishing
Definition: vrlinkNetworkInterface.h:569
virtual bool typeIsPublishable(const DtEntityType &) const
Returns true if the entity type is publishable by this connection.
Definition: vrlinkNetworkInterface.h:375
virtual void setSelfReflecting(bool)
No-op. Once the connection is created the self reflecting cannot be changed.
Definition: vrlinkNetworkInterface.h:230
tbb::interface5::unique_lock< ConditionMutex > ConditionLock
Definition: vrlinkNetworkInterface.h:647
DtReflectedEnvironmentProcessList * myReflectedEnvironmentalList
Definition: vrlinkNetworkInterface.h:678
double myMaxDrainInputTime
Definition: vrlinkNetworkInterface.h:615
unsigned int myBulkCreateTickCounter
Definition: vrlinkNetworkInterface.h:693
std::map< DtString, DtStateData * > StateDataByEntityId
Definition: vrlinkNetworkInterface.h:585
DtNetworkManagerInterface is the base class which all network interfaces must be derived from...
Definition: networkManagerInterface.h:41
Definition: coordSystem.h:54
DtRemoteObjectManager * myRemoteObjectManager
Definition: vrlinkNetworkInterface.h:577
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:336
std::map< makVrf::SimStateID, DtSimObjectNetInterface * > Publishing
Definition: vrlinkNetworkInterface.h:564
int myDefaultObjectTimeout
Definition: vrlinkNetworkInterface.h:671
ComponentTypeUserData(DtStateComponent::StateComponentType t)
Definition: vrlinkNetworkInterface.h:191
bool myEnabled
Definition: vrlinkNetworkInterface.h:559
ConditionMutex myStartNetworkConditionMutex
Definition: vrlinkNetworkInterface.h:652
DtVrlinkNetworkInterface *(* DtVrlinkNetworkInterfaceCreatorFcn)(DtExerciseConn *, bool)
Definition: vrlinkNetworkInterface.h:56
The DtCommunicationManager class is a convenience class that will create both the DtNetworkInterfaceM...
Definition: communicationManager.h:51
bool myRunFullyThreaded
Definition: vrlinkNetworkInterface.h:560
std::map< DtString, DtStateData * > StateDataByGlobalId
Definition: vrlinkNetworkInterface.h:580
Class Description: DtSimObjectNetInterface.
Definition: simObjectNetInterface.h:48
double myCurrentFrameSimTime
Definition: vrlinkNetworkInterface.h:666
DtPublisherContainer< DtSimObjectNetInterface > PublisherContainer
Definition: vrlinkNetworkInterface.h:554
bool myBulkCreateInProgress
Defaults to 4.
Definition: vrlinkNetworkInterface.h:692
bool myPublishZeroVelocityWhenPaused
Definition: vrlinkNetworkInterface.h:605
DtOrderedEntityTypeList< DefaultNetworkInterfaceEntry * > DefaultNetworkInterfaceEntries
Definition: vrlinkNetworkInterface.h:674
Definition: vrlinkEventTranslatorManager.h:28
#define DT_DLL_vrlinkNetworkInterface
This file is used to determine how to build.
Definition: vrlinkNetworkInterfaceDefines.h:24
unsigned int mySimMgmtPduProcessLevel
Definition: vrlinkNetworkInterface.h:641
ComponentTypeUserData(const ComponentTypeUserData &orig)
Definition: vrlinkNetworkInterface.h:192
bool sendMessagesInNetworkProcess() const
Definition: vrlinkNetworkInterface.h:444
double myMinDrainInputTime
Definition: vrlinkNetworkInterface.h:620
DtVrfCallbackQueue * myNetworkCallbackQueue
Definition: vrlinkNetworkInterface.h:654
std::vector< ComponentCreationRule > ComponentCreationRules
Definition: vrlinkNetworkInterface.h:596
int myNumNetworkWorkerThreads
Definition: vrlinkNetworkInterface.h:690
double myNetworkFrameTime
Definition: vrlinkNetworkInterface.h:685
tbb::queuing_rw_mutex myPublishingMutex
Definition: vrlinkNetworkInterface.h:571
Condition myStartNetworkCondition
Definition: vrlinkNetworkInterface.h:651
DtCommunicationManager * myCommunicationManager
Definition: vrlinkNetworkInterface.h:643
bool blockOnUnfinishedRemoteDiscovery() const
Definition: vrlinkNetworkInterface.h:87
Definition: vrlinkNetworkInterface.h:189
tbb::spin_mutex myQueuedMessagesToSendMutex
Definition: vrlinkNetworkInterface.h:688
DtVrfParameterDb * parameterDatabase() const
Definition: vrlinkNetworkInterface.h:233
DtFastForwardSettings myFastForwardSettings
Definition: vrlinkNetworkInterface.h:636
Definition: asyncJobServer.h:39
DtRemoteObjectManager * remoteObjectManager()
Definition: vrlinkNetworkInterface.h:389
bool myMetocPublishingEnabled
Definition: vrlinkNetworkInterface.h:660
Publishing myPublishing
Definition: vrlinkNetworkInterface.h:565
Definition: vrlinkNetworkInterface.h:589
Definition: stateComponent.h:51
voidpf stream
Definition: ioapi.h:39
std::map< makVrf::SimStateID, StateComponentsPublishing > ComponentsPublishing
Definition: vrlinkNetworkInterface.h:568
bool disableRemoteDiscovery() const
Definition: vrlinkNetworkInterface.h:168
PublisherContainer myTickableInterfaces
Definition: vrlinkNetworkInterface.h:562
bool myDisableRemoteDiscovery
Definition: vrlinkNetworkInterface.h:657
virtual double networkFrameTime() const
Time spent in the network frame.
Definition: vrlinkNetworkInterface.h:438
bool mySendMessagesInNetworkProcess
Definition: vrlinkNetworkInterface.h:687
std::set< DtStateData * > myPendingEntityIds
Definition: vrlinkNetworkInterface.h:587
DtVrlinkEventTranslatorManager * myVrlinkEventTranslatorManager
Definition: vrlinkNetworkInterface.h:639
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
const char int mode
Definition: ioapi.h:38
tbb::spin_mutex myEventIdMutex
Definition: vrlinkNetworkInterface.h:611
bool myTickPublishersInNetworkThread
Definition: vrlinkNetworkInterface.h:659
int defaultObjectTimeout() const
Definition: vrlinkNetworkInterface.h:175
Definition: hlaExerciseClock.h:35
DefaultNetworkInterfaceEntries myDefaultNetworkInterfaceEntries
Definition: vrlinkNetworkInterface.h:675
std::atomic< bool > myStartNetworkThread
Definition: vrlinkNetworkInterface.h:668
StateDataByGlobalId myStateDataByGlobalId
Definition: vrlinkNetworkInterface.h:581
DtString networkInterface
Definition: vrlinkNetworkInterface.h:592
const Coordinate_System * coordinateSystem() const
Definition: vrlinkNetworkInterface.h:213
double myLastSetSimTime
Definition: vrlinkNetworkInterface.h:667
makVrfEvents::DtEventManager * eventManager()
Definition: vrlinkNetworkInterface.h:379
DtVrfParameterDb * myParameterDatabase
Definition: vrlinkNetworkInterface.h:601
bool myControlsDrainInput
Definition: vrlinkNetworkInterface.h:658
PublisherContainer myNeedsPublishersCreated
Definition: vrlinkNetworkInterface.h:561
std::set< DtStateData * > myPendingGlobalIds
Definition: vrlinkNetworkInterface.h:582
virtual std::string protocol() const override
Descriptive text of the network protocol.
Definition: vrlinkNetworkInterface.h:125
Contains the DtStateComponent class declaration.
std::set< DtStateComponent * > myCreateNetInterfaceFor
Definition: vrlinkNetworkInterface.h:640
virtual ComponentRuleUserData * clone() const
Definition: vrlinkNetworkInterface.h:186
DtReflectedAggregateList * myReflectedAggregateList
Definition: vrlinkNetworkInterface.h:677
DtStateDataManager * myStateDataManager
Definition: vrlinkNetworkInterface.h:558
Definition: vrlinkNetworkInterface.h:65
Definition: vrlinkEventTranslator.h:28
std::shared_ptr< ComponentRuleUserData > userData
Definition: vrlinkNetworkInterface.h:593
virtual const char * type() const
Type to uniquely identify this manager.
Definition: vrlinkNetworkInterface.h:92
tbb::interface5::condition_variable Condition
Definition: vrlinkNetworkInterface.h:645
virtual bool hasSimulationTime() const
Return true if this network interface also deals with simulation time.
Definition: vrlinkNetworkInterface.h:487
boost::function< bool(const DtStateComponent *, const DtStateData *, std::shared_ptr< ComponentRuleUserData >)> CreationRule
Definition: vrlinkNetworkInterface.h:198
std::vector< DtSimObjectNetInterface * > myInterfacesToDelete
Definition: vrlinkNetworkInterface.h:684
Description: The Exercise Clock keeps track of current simulated time. When 'ticked', it advances simulation time based on elapsed real time since the last time it was ticked and a time-multiplier that allows the exercise clock to run faster or slower than real-time. The exercise clock also supports a pause/resume capability.
Definition: exerciseClock.h:27
This class holds the state data that represents each simulation object in the system.
Definition: stateDataManager.h:71