VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrlinkNetworkInterface.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
19 #include <vl/globalObjectDesignator.h>
20 #include <vl/vrlinkStateStateRepository.h>
21 #include <tbb/spin_rw_mutex.h>
22 #include <tbb/spin_mutex.h>
23 #include <tbb/mutex.h>
24 #include <map>
25 #include <unordered_map>
26 #include <set>
27 #include <atomic>
28 #include <boost/function.hpp>
29 
31 class DtReflectedDIGuyObject;
32 class DtExerciseConn;
33 class DtExerciseClock;
35 class DtVrfParameterDb;
38 class DtEntityType;
44 class DtGeoReferenceVariant;
45 
46 #if DtHLA
47 namespace makVrfVrlinkExtToolkit
48 {
49  class DtReflectedExtendedAttributesObject;
50 }
51 #endif
52 
53 namespace makVrf
54 {
55  class DtRemoteObjectManager;
56  class DtVrfEntityIdentifierFactory;
57  class DtVrlinkNetworkInterface;
58  class DtVrlinkEventTranslatorManager;
59  class DtVrlinkEventTranslator;
60  class DtStateDataManager;
61 #if DtHLA
62  class DtHlaExerciseClock;
63 #endif
64 
65  typedef DtVrlinkNetworkInterface* (*DtVrlinkNetworkInterfaceCreatorFcn)(DtExerciseConn*, bool);
66  typedef DtRemoteObjectManager* (*DtRemoteObjectManagerCreatorFcn)(DtVrlinkNetworkInterface*);
67 
73  {
74  public:
76  {
77  public:
80  };
81 
82 
83  public:
85 
88  DtVrlinkNetworkInterface(DtExerciseConn*, int clockMode = 0);
89 
90  virtual ~DtVrlinkNetworkInterface() override;
91 
92  virtual void beginFrame(double) override;
93  virtual bool preAdvanceFrame() override;
94  virtual void advanceFrame(double* networkTime = nullptr) override;
95  virtual bool waitingToAddObjects() const override;
96 
98  virtual void setBlockOnUnfinishedRemoteDiscovery(bool);
100  {
101  return myBlockOnUnfinishedRemoteDiscovery;
102  }
103 
104  static void SetRemoteObjectManagerCreatorFcn(DtRemoteObjectManagerCreatorFcn);
105  static DtRemoteObjectManagerCreatorFcn RemoteObjectManagerCreatorFcn();
106 
107  virtual const char* type() const override { return Type(); };
108  static const char* Type() { return "vrlink-network-interface"; };
109 
111  virtual bool printDataToStream(const DtUUID&, DtOutputStream& stream) const override;
112 
114  virtual void setInterest(const DtVector& geocentricCenter, double radius) override;
115 
117  virtual DtUUID entityThatHostsRadio(const DtGlobalObjectDesignator&, int radioIndex) const;
118 
121  virtual DtGlobalObjectDesignator radioGlobalObjectDesignatorFor(const DtUUID& entityUUID, int radioIndex, bool* radioFound = nullptr) const;
122 
124  virtual DtStateData* stateDataForGlobalId(const DtString&) const override;
125  virtual DtStateData* stateDataForEntityId(const DtString&) const;
126  virtual const DtStateData* stateDataForUUID(const DtUUID&) const;
127  virtual DtStateData* stateDataForUUID(const DtUUID&);
128  virtual const DtStateData* stateDataForUniqueId(UInt64) const;
129  virtual DtStateData* stateDataForUniqueId(UInt64);
130 
132  virtual bool supportsOwnershipTransfer() const override;
133 
134 #if DtHLA
135  virtual const DtStateData* stateDataFor(DtHlaObject*) const;
136 #endif
137 
139  virtual std::vector<DtGlobalObjectDesignator> getObjectsPublishedBy(const DtStateData*) const;
140  virtual const DtEntityStateRepository* entityStateRepository(const DtUUID&) const;
141  virtual DtVrfEntityPublisher* entityPublisherFor(const DtUUID&) const;
142  virtual void lostControlOf(DtReflectedObject*);
143 #if DtHLA
144  virtual void lostControlOf(DtReflectedDIGuyObject*);
146 
148  virtual DtReflectedObject* gainControlOfExtendedAttribute(DtHlaObject*);
149  virtual void gainedConntrolOfUnknownHlaObject(DtHlaObject*);
150 #endif
151 
152  virtual DtSimObjectNetInterface* gainControlOf(
153 #if DtHLA
154  DtHlaObjectWithStateRep* obj,
155  DtHlaObjectWithStateRep* extendedAttributes = nullptr
156 #else
158 #endif
159  );
160 
161  virtual DtReflectedObject* reflectedObjectFor(const DtGlobalObjectDesignator&) const;
162 
163  virtual DtUUID uuidForGeoReferenceVariant(const DtGeoReferenceVariant& georeference) const;
164  virtual DtStateData* stateDataForGeoReferenceVariant(const DtGeoReferenceVariant&) const;
165  virtual void mapStateDataByGeoReferenceVariant(DtStateData* std, const DtGeoReferenceVariant& grv);
166  virtual bool unmapStateDataByGeoReferenceVariant(const DtGeoReferenceVariant& grv);
167  virtual bool unmapGeoReferenceVariantByStateData(const DtStateData* sd);
168 
169  virtual void setExerciseStartTime(double) override;
170  virtual void setSimTime(double) override;
171  virtual void setTimeMultiplier(double) override;
172 
174  virtual void resetSimulation() override;
175 
178  virtual void setControlsDrainInput(bool);
179  bool controlsDrainInput() const;
180 
181  virtual void setPreferredDateAndTimeRepository(DtTimeAndDateStateRepository*);
183  {
184  return myPreferredDateAndTimeRepository;
185  }
186 
187  virtual std::string protocol() const override
188  {
189 #if DtDIS == 1
190  return std::string("DIS");
191 #elif DtHLA_4
192  return std::string("HLA4");
193 #elif DDtHLA_1516_EVOLVED == 1
194  return std::string("HLA1516e");
195 #elif DDtHLA_1516 == 1
196  return std::string("HLA1516");
197 #else //This is HLA13
198  return std::string("HLA13");
199 #endif
200  }
201 
202  #if DtHLA
203  virtual bool runningInTimeManagedMode() const;
206 
210  static void startTimeManagement(void* usr);
211  static void stopTimeManagement(void* usr);
212 
215  virtual void processStartTimeManagement();
216  virtual void processStopTimeManagement();
217 
219  virtual void setReflectedListRequestUpdates(bool yesOrNo);
220  #endif
221 
223  virtual void setDisableRemoteDiscovery(bool);
225  {
226  return myDisableRemoteDiscovery;
227  }
228 
229 #if DtDIS
230  virtual void setDefaultObjectTimeout(int);
232  {
233  return myDefaultObjectTimeout;
234  }
235  virtual void setDisableTimeoutProcessing(bool);
237  {
238  return myDisableTimeoutProcessing;
239  }
240 #endif
241  struct ComponentRuleUserData
246  {
247  virtual ComponentRuleUserData* clone() const { return nullptr; };
248  };
249 
251  {
253  ComponentTypeUserData(const ComponentTypeUserData& orig) : type(orig.type) {};
254  virtual ComponentRuleUserData* clone() const override { return new ComponentTypeUserData(*this); };
255 
257  };
258 
259  typedef boost::function<bool (const DtStateComponent*, const DtStateData*, std::shared_ptr<ComponentRuleUserData>)> CreationRule;
260  virtual void setComponentPublisherCreatorRule(CreationRule, const DtString& networkInterface, const ComponentRuleUserData& userData = ComponentRuleUserData(),
261  const DtString& testBeforeInterface = "");
262 
264  virtual bool createInterfaceIfComponentIs(const DtStateComponent* c, const DtStateData* d, std::shared_ptr<ComponentRuleUserData>);
265 
266  virtual DtSimObjectNetInterface* createNetInterface(DtStateData* sd);
267 
269  virtual void reserveEntityId(const DtEntityIdentifier&) override;
270 
271  virtual void setRunFullyThreaded(bool) override;
272  virtual bool runFullyThreaded() const;
273 
274  virtual void setEnabled(bool) override;
275 
276  virtual void setCoordinateSystem(const Coordinate_System*) override;
278  {
279  return myCoordinateSystem;
280  }
281 
282  DtExerciseConn* exerciseConnection()
283  {
284  return myExerciseConnection;
285  }
286 
287  virtual void removeAndDeleteAll(const std::set<DtUUID>& except = std::set<DtUUID>()) override;
288  virtual bool wantsToSelfReflect(unsigned int) const;
289 
291  virtual bool selfReflecting() const override;
292 
294  virtual void setSelfReflecting(bool) override {};
295 
296  virtual void setParameterDatabase(DtVrfParameterDb* db) override;
298  {
299  return myParameterDatabase;
300  }
301 
302  virtual unsigned int maxNameLengthForType(const DtEntityType&) const override;
303 
305  virtual void setVrfSessionId(int) override;
306  virtual int vrfSessionId() const
307  {
308  return myVrfSessionId;
309  }
310 
312  virtual void setVrfMessageVersionSupported(int) override;
313  virtual int vrfMessageVersionSupported() const
314  {
315  return myVrfMessageVersionSupported;
316  }
317 
320  virtual void setPublishZeroVelocityWhenPaused(bool);
322  {
323  return myPublishZeroVelocityWhenPaused;
324  }
325 
332  unsigned int simMgmtPduProcessLevel() const
333  {
334  return mySimMgmtPduProcessLevel;
335  }
336 
337  virtual void setSimMgmtPduProcessLevel(unsigned int level);
338 
342  virtual void setDeadReckoningAlgorithmToStaticOnPause(bool);
344  {
345  return mySetDeadReckoningAlgorithmToStaticOnPause;
346  }
347 
349  virtual void overrideDeadReckoningAlgorithm(int drAlg);
350 
353  virtual bool isDeadReckonAlgorithmOverridden(int& drAlg) const;
354 
357  virtual void removeDeadReckoningAlgorithmOverride();
358 
359  virtual DtEntityIdentifier nextEntityIdentifier(const DtStateData* = 0, const DtEntityIdentifier& = DtEntityIdentifier());
360 
361  virtual DtEntityIdentifier objectIdentifierFor(SimStateID) const;
362  virtual DtEntityIdentifier objectIdentifierFor(const DtUUID&) const;
363 
364  #if DtDIS
365  virtual DtEntityIdentifier globalObjectIdentifierFor(const DtUUID&) const;
366  virtual DtEntityIdentifier globalObjectIdentifierFor(SimStateID) const;
367  #else
368  virtual DtGlobalObjectDesignator globalObjectIdentifierFor(const DtUUID&) const;
369  virtual DtGlobalObjectDesignator globalObjectIdentifierFor(SimStateID) const;
370  #endif
371 
372  virtual DtUUID uuidForObjectIdentifier(const DtEntityIdentifier&) const;
373 
374  #if DtHLA
375  virtual DtUUID uuidForObjectIdentifier(const DtGlobalObjectDesignator&) const;
376  #endif
377 
378  virtual void setSiteAppId(int, int) override;
379 
382  virtual DtString nextEventId(const DtString& entId = DtString::nullString()) override;
383 
384  virtual int setAppIdRangeMax(int);
385 
386  virtual DtVrfEntityIdentifierFactory* createVrfEntityIdentifierFactory();
387 
389  virtual void startScenarioLoad(bool) override;
390 
392  virtual void endScenarioLoad(bool) override;
393 
395  virtual AddEventResult addEvent(const makVrfEvents::DtEvent&, bool& selfReflect) override;
396  virtual AddEventResult sendEvent(const makVrfEvents::DtEvent&) override;
397 
398  virtual double determineSimTime(double& dt, DtCommunicationManagerPerformanceTimerInformation* performanceTimerInformation = nullptr) override;
399 
400  virtual double simTime() const;
401 
402  virtual void setMaxDrainInputTime(double maxTime);
403  virtual double maxDrainInputTime() const;
404 
405  virtual void setFrameRateMode(const DtString& mode, double deltaTime, bool manageTime = false) override;
406  virtual void rewindScenario() override;
407 
408  #ifdef DtHLA
409  virtual void setMinDrainInputTime(double minTime);
410  virtual double minDrainInputTime() const;
411 
412  virtual void setFrameDeltaTime(double);
413  virtual double frameDeltaTime() const;
414 
415  virtual void beginBulkCreate() override;
416  virtual void endBulkCreate() override;
417  #else
418  virtual void setMaxDrainInputReads(int maxReads);
419  virtual int maxDrainInputReads() const;
420  #endif
421 
423  virtual void addEventTranslator(int eventType, DtVrlinkEventTranslator*);
424 
426  virtual void removeEventTranslator(int eventType);
427 
428  virtual DtVrlinkEventTranslator* eventTranslatorFor(int eventType) const;
429 
431  virtual void run() override;
432 
434  virtual void pause() override;
435 
436  static void setVrlinkNetworkInterfaceCreatorFcn(DtVrlinkNetworkInterfaceCreatorFcn fcn);
437  static DtVrlinkNetworkInterface* createVrlinkNetworkInterface(DtExerciseConn*, int clockMode = 0);
438 
440  virtual bool typeIsPublishable(const DtEntityType&) const override { return true; };
441 
442  virtual bool hasNetworkRepresentation(const DtUUID&) const override;
443 
446  virtual void setBulkAddTimeout(double);
447  virtual double bulkAddTimeout() const
448  {
449  return myBulkAddTimeout;
450  }
451 
453  virtual void setEventManager(makVrfEvents::DtEventManager*) override;
455  {
456  return myEventManager;
457  }
458 
460  {
461  return myCommunicationManager;
462  }
463 
465  {
466  return myRemoteObjectManager;
467  }
468 
470  virtual DtU32 scenarioCapabilities() const override;
471  virtual void setScenarioCapabilities(DtU32) override;
472 
476  virtual void setNumCallbackThreads(unsigned) override;
477 
479  virtual void setNumRemoteCallbackThreads(unsigned);
480 
481  virtual void addDefaultNetworkInterface(const DtEntityType&, const DtString& local, const DtString& remote);
482  virtual void removeDefaultNetworkInterface(const DtEntityType&);
483 
485  virtual DtString defaultInterfaceTypeFor(const DtStateData*) const;
486 
489  virtual void setUseNetworkThread(bool);
490  virtual bool usingNetworkThread() const;
491 
493  virtual void setDisableParallelPublisherTick(bool);
494  virtual bool disableParallelPublisherTick() const;
495 
498  virtual void setTickPublishersDuringEntityTick(bool);
499  virtual bool tickPublishersDuringEntityTick() const;
500 
503  virtual void reserve(unsigned numToReserve) override;
504 
506  virtual bool willRediscoverObjects() const;
507 
508 
510  virtual void setReflectedLists(const DtReflectedObjectLists&);
511 
514  virtual bool stateDataAdded(DtStateData*) override;
515 
517  virtual double networkFrameTime() const
518  {
519  return myNetworkFrameTime;
520  }
521 
522  virtual void setSendMessagesInNetworkProcess(bool);
524  {
525  return mySendMessagesInNetworkProcess;
526  }
527 
528 #if DtHLA_1516_EVOLVED
529  virtual void setAutoReserve(int);
531  int autoReserve() const;
532 
533  virtual bool isNameReserved(DtStateData*, const DtString& name) const;
534  virtual bool isNameReservationPending(DtStateData*, const DtString& name) const;
535 #endif
536 
540  virtual DtString nextGlobalObjectId(const DtString& defaultId = DtString::nullString());
541 
544 
545  virtual void setLimitSizeToMtu(bool limitToMtu);
546  virtual bool limitSizeToMtu() const;
548 
550  virtual unsigned maxInteractionSize() const;
551 
553  virtual void lockEsr(const DtUUID&, bool forWrite);
554  virtual void unlockEsr(const DtUUID&, bool fromWrite);
555 
556  protected:
557  virtual void slot_convertedToLocal(DtStateData*);
558 
559  virtual void sendQueuedMessages();
560 
562  virtual bool init(DtCommunicationManager*) override;
563 
565  virtual DtRemoteObjectManager* createRemoteObjectManager();
566 
568  virtual void reserveGlobalObjectIds(unsigned numToReserve);
569 
570  virtual bool isPublishableComponent(DtStateComponent* sc) const;
571 
573  virtual void stateComponentAdded(DtStateComponent*);
574 
576  virtual void stateComponentRemoved(const DtStateComponent*);
577 
579  virtual bool validateScenario(const DtScenario& s, DtString& error) const override;
580 
582  virtual bool hasSimulationTime() const override { return true; };
583 
586  virtual bool needsUnpublishedDatabase() const override {
587  return false;
588  }
589 
590  protected:
591  virtual void advanceFrame(DtVrfCallbackQueue*);
592 
594  virtual void slot_prepareForHandoff(DtStateData*, bool becomingLocal);
595 
597  virtual void stateDataAboutToBeRemoved(const DtStateData*) override;
598 
599  virtual void printReflectedObjectCounts() const override;
600 
603  virtual void requestUpdatesForRemoteNonVrfObjects() const override;
604 
606  void createExerciseClock(int clockMode = 0);
607 
608  virtual void drainInput();
609 
610  virtual void createNetInterfaceFor(DtStateComponent*);
611 
612  virtual void cleanupNetworkThread();
613 
614  virtual void runNetwork();
615  virtual void resolvePendingIds();
616  virtual const DtVrfObjectParameters* lookupParameterEntry(const DtEntityType& ot) const;
617 
618  virtual void createAndInitRemoteObjectManager();
619 
621  virtual bool rediscoverObjects() override;
622 
624  virtual bool publishingOnLegionNetwork() const override { return false; };
625 
626  virtual void stateDataManagerDeleted();
627 
628 #if DtHLA_1516_EVOLVED
629  virtual void reservedNamesSuceeded(const std::set<std::wstring>& theNames);
631 
633  virtual void reservedNamesFailed(const std::set<std::wstring>& theNames);
634 
635  static void nameSetReservationSucceededCb(const std::set<std::wstring>& nameSet,
636  void* userData);
637  static void nameSetReservationFailedCb(const std::set<std::wstring>& nameSet,
638  void* userData);
639 #endif
640 
641 #if DtHLA
642  virtual void setExecutionState(DtVRLExecutionStatus status);
643 #endif
644 
645  protected:
646  DtExerciseConn* myExerciseConnection;
648  bool myEnabled;
652 
653  typedef std::map<SimStateID, DtSimObjectNetInterface*> Publishing;
655 
656  typedef std::map<DtStateComponent*, DtSimObjectNetInterface*> StateComponentsPublishing;
657  typedef std::map<SimStateID, StateComponentsPublishing> ComponentsPublishing;
659 
660  mutable tbb::queuing_rw_mutex myPublishingMutex;
661  mutable tbb::spin_rw_mutex myStateDataMutex;
662 
663  typedef std::map<DtGlobalObjectDesignator, DtSimObjectNetInterface*> GlobalIdForNetworkInterface;
665 
667 
668  #if DtHLA
669  typedef std::map<DtString, DtStateData*> StateDataByGlobalId;
671  std::set<DtStateData*> myPendingGlobalIds;
672  #endif
673 
674  typedef std::map<DtString, DtStateData*> StateDataByEntityId;
676  std::set<DtStateData*> myPendingEntityIds;
677 
678  typedef std::map<DtGeoReferenceVariant, DtStateData*> StateDataByGeoreferenceVariant;
680 
682  {
685  std::shared_ptr<ComponentRuleUserData> userData;
686  };
687 
688  typedef std::vector<ComponentCreationRule> ComponentCreationRules;
690 
692 
696 
702 
703  tbb::spin_mutex myEventIdMutex;
708 
709  #if DtHLA
713 
714  #if DtHLA_1516_EVOLVED
715  std::set<DtGlobalObjectDesignator> myReservedGlobalIds;
716  std::set<DtGlobalObjectDesignator> myPendingReservedGlobalIds;
718  tbb::spin_mutex myGlobalIdReserveDataMutex;
720  tbb::spin_mutex myGlobalIdReserveRtiCallMutex;
721  int myAutoReserve;
722  #endif
723  #else
724  DtExerciseClock* myExerciseClock;
725  int myMaxDrainInputReads;
726  #endif
727 
734  std::set<DtStateComponent*> myCreateNetInterfaceFor;
736 
738 
739  typedef std::condition_variable Condition;
740  typedef std::mutex ConditionMutex;
741  typedef std::unique_lock<ConditionMutex> ConditionLock;
742 
744  std::unique_ptr<std::thread> myNetworkThread;
747  std::atomic<bool> myShutdownNetworkThreadFlag;
750 
754 
755  double myBulkAddTimeout = 1.0 / 2.0;
756  std::atomic<bool> myProcessingNetwork;
757 
758 #if DtHLA
761  {
762  bool runNetworkInThread = false;
763  bool publishWhileTicking = false;
764  bool timeManagementDataSet = false;
765  int networkCallbackThreads = -1;
766  };
767 
769 #endif
773  std::atomic<bool> myStartNetworkThread;
774 
775 #if DtDIS
777  bool myDisableTimeoutProcessing = false;
778 #endif
779 
782 
784 
785  std::vector<DtSimObjectNetInterface*> myInterfacesToDelete;
787 
790  std::vector<makVrfEvents::DtEvent*> myQueuedMessagesToSend;
792 
796 
799 
800  tbb::spin_mutex myLostControlOfMutex;
801  using LostControlOf = std::map<DtReflectedObject*, std::vector<DtGlobalObjectDesignator>>;
803  std::map<DtGlobalObjectDesignator, bool> myNeedsToLoseControlOf;
804 #if DtHLA
805  std::set<DtReflectedDIGuyObject*> myLostControlOfDIGuy;
806  std::set<makVrfVrlinkExtToolkit::DtReflectedExtendedAttributesObject*> myLostControlOfExtendedAttributes;
807 #endif
808 
810 
811  DtTimeAndDateStateRepository* myPreferredDateAndTimeRepository = nullptr;
812 
813 #if DtHLA
814  bool myEnteredTimeManagedMode = false;
815 #endif
816 
818  tbb::spin_rw_mutex myHostEsrMapMutex;
819  typedef std::unordered_map<DtUUID, tbb::spin_rw_mutex*> HostEsrMap;
821 
823  };
824 }
unsigned int StateComponentType
Definition: stateComponent.h:56
UUID is a unique ID wrapper class.
Definition: uuid.h:59
Instances of DtVrfObjectParameters are the readable/writeable objects that contain the information ne...
Definition: vrfObjectParameters.h:64
unsigned long long SimStateID
Definition: stateDataTypes.h:16
Instances of DtVrfParameterDb are the database of DtVrfObjectParameters objects used in the construct...
Definition: vrfParameterDb.h:41
This class will wrap a VR-Link DtEntityPublisher to allow for easier creation of a publisher that is ...
Definition: vrfEntityPublisher.h:60
DtString local
Definition: vrlinkNetworkInterface.h:78
Definition: scenario.h:52
Default implementation that will add protocol and state data validators (contained in this header fil...
Definition: defaultSimulationModelSetValidatorManager.h:19
DtString remote
Definition: vrlinkNetworkInterface.h:79
DT_DLL_VRVCORE DtTaitBryan level(const DtCoordinateSystem &cs, const DtVector &localOrigin, double topoHeading)
Returns a level orientation with the topographic heading.
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
Definition: fastForwardSettings.h:12
Simple asynchronous callback queue.
Definition: vrfCallbackQueue.h:29
This class will, in DIS or HLA, generate the unique id necessary to pass into the object publisher to...
Definition: vrfObjectIdGenerator.h:22
Definition: vrfEntityIdentifierFactory.h:21
unsigned long long UInt64
Definition: stateDataTypes.h:17
class DtRemoteObjectManager:
Definition: remoteObjectManager.h:28
Definition: communicationManager.h:38
DtNetworkManagerInterface is the base class which all network interfaces must be derived from...
Definition: networkManagerInterface.h:43
Definition: coordSystem.h:54
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:398
Definition: event.h:13
DtVrlinkNetworkInterface *(* DtVrlinkNetworkInterfaceCreatorFcn)(DtExerciseConn *, bool)
Definition: vrlinkNetworkInterface.h:65
The DtCommunicationManager class is a convenience class that will create both the DtNetworkInterfaceM...
Definition: communicationManager.h:54
Class Description: DtSimObjectNetInterface.
Definition: simObjectNetInterface.h:50
Definition: asyncJobServer.h:39
Definition: stateComponent.h:52
voidpf stream
Definition: ioapi.h:39
DtRemoteObjectManager *(* DtRemoteObjectManagerCreatorFcn)(DtVrlinkNetworkInterface *)
Definition: vrlinkNetworkInterface.h:66
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
const char int mode
Definition: ioapi.h:38
Definition: hlaExerciseClock.h:41
Definition: reflectedObjectLists.h:166
Contains the DtStateComponent class declaration.
Definition: vrlinkNetworkInterface.h:75
Description: The Exercise Clock keeps track of current simulated time. When &#39;ticked&#39;, 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:73

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)