VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfDriver.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
10 
11 #pragma once
12 
19 #include <vlutil/vlPerformanceStats.h>
20 #include <vrfStateData/dataGate.h>
21 
23 
24 #include <vlpi/entityType.h>
25 #include <matrix/vlVector.h>
26 
28 #include <vrfutil/scenario.h>
29 
30 #if DtHLA
32 #else
33 #include <vrfmsgs/ifSaveComplete.h>
34 #include <vlutil/vlPerformanceStats.h>
35 #endif
36 #include "vrfutil/rwColor.h"
37 
38 
39 #if DtHLA
40 namespace makVrfVrlinkExtToolkit
41 {
42  class DtReflectedExtendedAttributesObjectList;
43 }
44 #endif
45 
46 namespace makVrv
47 {
48  class DtElement;
49  class DtEntityElement;
50  class DtTacticalGraphicElement;
51 
52  namespace DT_PROTOCOL_NAMESPACE
53  {
55  class DtVrlinkAggregateElement;
56  class DtSensorFieldOfViewSimDataProcessor;
57  class DtVrlinkLaserDesignatorStateListener;
58  }
59 }
60 
64 
65 namespace makVrf
66 {
67  class DtVrlinkVrfRemoteController;
68  class DtRemoteLoggerController;
69  class DtVrlinkNetworkInterface;
70  class DtRadioProcessor;
71  class DtVrfConnectionHelper;
72  class DtNetworkMessageInterface;
73  class DtStateDataManager;
74 
75  namespace VRF_PROTOCOL_NAMESPACE
76  {
77  class DtVrlinkVantageToLegionIdMapper;
78  class DtVrfCloudLayerStateProcessor;
79  class DtVrfAggregateObjectDataStateProcessor;
80  class DtOrbatSimDataProcessor;
81  class DtVrfFogOfWarHandler;
82  class DtVrfEmbarkationProcessor;
83  class DtVrfWeatherProcessor;
84  class DtVrfCloudLayerProcessor;
85  class DtVrfVrlinkGuiOrbatManager;
86  class DtVrlinkVantageLegionToIdMapper;
87 
90  {
91  public:
92  DtVrfDriver(makVrv::DtAgentManager& agentManager, const std::string& uniqueName);
93 
94  virtual ~DtVrfDriver() override;
95 
96  public:
97  virtual bool onStart() override;
98 
99  public:
100  virtual void setConditionLockTimeout(double d);
101  double conditionLockTimeout() const
102  {
103  return myConditionLockTimeout;
104  }
105 
106  virtual DtVrlinkVrfRemoteController* vrfRemoteController() const;
107  virtual DtVrfRemoteController* remoteController() const;
108  virtual DtCommunicationManager* communicationManager() const;
109  virtual DtVrlinkVantageToLegionIdMapper* vrfVantageToLegionIdMapper() const;
110 
112  virtual void realizeConfiguration(const makVrv::DtConfiguration& config) override;
113 
115  virtual void sendLoggerSetFilename(std::string filename);
116 
118  virtual void sendLoggerRecordMessage();
119 
121  virtual void sendLoggerStopMessage();
122 
124  virtual void requestOrbatList();
125 
127  virtual void clearOrbatList();
128 
131  virtual void receivedNetworkMessage(DtNetworkMessageInterface* iface);
132 
134  virtual void executeGesture(std::string gesture, std::vector<makVrv::DtUniqueID>);
135 
137  virtual void executeAnimation(std::string gesture, std::vector<makVrv::DtUniqueID>);
138  virtual void executeAnimations(std::map<makVrv::DtUniqueID, std::string>);
139 
141  virtual void setIconColor(DtRwColor iconColor, std::vector<makVrv::DtUniqueID>);
142 
144  virtual void blockNetworkAnimationChange(std::vector<makVrv::DtUniqueID>, bool, double);
145  virtual void blockNetworkGestureChange(std::vector<makVrv::DtUniqueID>, bool);
146 
148  virtual void startFreezeScenario(DtSimulationAddress, bool sendStart);
149 
151  virtual void sendSensorFieldOfViewControl(const DtSensorFieldOfViewControlInteractionData* d);
152 
154  virtual void sendDetonation(const DtDetonationInteractionData* d);
155 
157  virtual void queueConnectionFunction(const boost::function<void ()>& function);
158 
160  virtual void queuePostAdvanceFrameConnectionFunction(const boost::function<void ()>& function);
161 
162  DtStateDataManager* stateDataManager() const;
163 
165  {
166  return myConnectionHelper;
167  }
168 
169  DtVrfCloudLayerStateProcessor* cloudLayerDataProcessor()
170  {
171  return myCloudLayerDataProcessor;
172  }
173 
174  DtOrbatSimDataProcessor* orbatDataProcessor()
175  {
176  return myOrbatDataProcessor;
177  }
178 
180  {
181  return myVrlinkNetworkInterface;
182  }
183 
185  {
186  return myOrbatManager;
187  }
188 
189  void setUseThreadFlag(bool b)
190  {
191  myUseThreadFlag = b;
192  }
193 
194  bool connected() const
195  {
196  return myConnected;
197  }
198 
199  int sessionId() const
200  {
201  return mySessionId;
202  }
203 
204  virtual bool onStop() override;
205 
206  virtual bool onTick() override;
207 
212 
214  boost::signals2::signal<void ()> signal_connectionSetUp;
215  boost::signals2::signal<void ()> signal_connectionCleanedUp;
216  boost::signals2::signal<void ()> signal_connectionAboutToBeCleanedUp;
217  boost::signals2::signal<void ()> signal_onFirstTickDriverInitialization;
218  boost::signals2::signal<void ()> signal_driverStarted;
219  boost::signals2::signal<void ()> signal_driverAboutToBeSetUp;
220  boost::signals2::signal<void ()> signal_postConnectionTick;
221 
222  public:
224  const std::string& nonVrfObjectsUseUUIDScheme() const;
225 
226  protected:
227 #if DtDIS
228  virtual void slot_scenarioAboutToBeSaved(DtScenario& s) const;
233  virtual void slot_scenarioSaved(DtSaveResult result, const DtString& sError);
234  virtual void enterTimeoutProcessingMode();
235  virtual void leaveTimeoutProcessingMode();
237 #endif
238 
239  virtual void slot_timeAndDateDiscovered(DtTimeAndDateStateRepository*);
240 
241  virtual void remoteControllerInit();
242  virtual void slot_scenarioLoaded();
243 
244  virtual bool createExerciseConnection();
245  virtual void onSetupExerciseConnection();
246  virtual void onCleanupExerciseConnection();
247 
248  virtual void connectionConnected();
249 
251  virtual void elementAttributeChangeRequested(
252  makVrv::DtUniqueID id, makVrv::DtUniqueID parentId, std::shared_ptr<const makVrv::DtElementAttribute> atr );
253 
254  makVrv::DtElement* findElementWithId(makVrv::DtUniqueID id) const;
255 
256  virtual makVrv::DtVrlinkBaseConnection* createConnection() override;
257 
259  virtual void slot_entityElementCreated(makVrv::DtEntityElement* e);
260 
261  virtual void slot_postConnectionTick();
262  virtual void slot_preConnectionTick();
263  virtual void slot_coordinateSystemChanged();
264 
266  virtual void visualsLoaded();
267 
268  virtual void slot_parameterDatabaseInitialized(bool);
269 
270  virtual void setVisibleForElement(makVrv::DtElement*, bool flag, int context) const;
271 
272  virtual void rediscoverListeners();
273 
274  virtual void resetVisualFlags(makVrv::DtEntityElement*);
275  virtual void resetVisualFlags(makVrv::DtTacticalGraphicElement*);
277  virtual void slot_advanceFrame(bool& continueAdvance);
278 
279  protected:
282 
283  DtVrfCloudLayerStateProcessor* myCloudLayerDataProcessor = nullptr;
284 
286 
288 
290 
291  DtOrbatSimDataProcessor* myOrbatDataProcessor;
292 
294  std::string myHostAddressString;
298 
301 
302  DtVrfWeatherProcessor* myVrfWeatherProcessor = nullptr;
303  DtVrfCloudLayerProcessor* myVrfCloudLayerProcessor = nullptr;
304 
305  typedef std::map<unsigned int, bool> ContextMap;
306  typedef std::map<makVrv::DtUniqueID, ContextMap> ShowHideContextMap;
307 
310 
314 
315  DtExerciseConn* myExerciseConnection;
316 
317 #if DtHLA
320 #endif
321 
322 
324 
325 #ifdef DtDIS
326  mutable double myTimeSaveStarted = 0.;
327  double myEnteredTimeoutProcessingModeAt = 0.;
328 #endif
329 
332  bool myAdvancedFrame = true;
334 
336  double myConditionLockTimeout = 1.0 / 20.0;
338  double myAdvanceFramePeriod = 0.2;
340  std::chrono::milliseconds myWaitForMainThreadTimout = std::chrono::milliseconds(10);
341  tbb::tick_count myLastFrameAdvanceTime = tbb::tick_count::now();
342  };
343 
344  inline const std::string& DtVrfDriver::nonVrfObjectsUseUUIDScheme() const
345  {
347  }
348  }
349 }
DtVrfConnectionHelper * connectionHelper() const
Definition: vrfDriver.h:164
makVrv::DtSignalConnectionManager myConnectionManager
Definition: vrfDriver.h:300
#define VRF_PROTOCOL_EXPORT
Definition: vrfProtocol.h:21
Helper code for connectors. Does not exist in it&#39;s own project but is included by all projects that u...
Definition: vrfConnectionHelper.h:130
Definition: vrfWeatherProcessor.h:30
Definition: networkMessageInterface.h:22
bool myConnected
Definition: vrfDriver.h:308
Definition: scenario.h:52
boost::signals2::signal< void()> signal_driverStarted
Definition: vrfDriver.h:218
int sessionId() const
Definition: vrfDriver.h:199
bool myDisableRequestUpdatesFlag
Definition: vrfDriver.h:318
std::map< makVrv::DtUniqueID, ContextMap > ShowHideContextMap
Definition: vrfDriver.h:306
boost::signals2::signal< void()> signal_postConnectionTick
Definition: vrfDriver.h:220
void setUseThreadFlag(bool b)
Definition: vrfDriver.h:189
bool myNeedsFirstTickInitialization
Definition: vrfDriver.h:323
std::string myNonVrfObjectsUseUUIDScheme
Definition: vrfDriver.h:312
DtRemoteLoggerController * myLoggerControl
Definition: vrfDriver.h:281
std::string myLocalSettingsDesignator
Definition: vrfDriver.h:309
DtVrfCloudLayerStateProcessor * cloudLayerDataProcessor()
Definition: vrfDriver.h:169
boost::signals2::signal< void()> signal_connectionAboutToBeCleanedUp
Definition: vrfDriver.h:216
unsigned myNumberOfRemoteNetworkThreads
Definition: vrfDriver.h:313
std::string myHostAddressString
Definition: vrfDriver.h:294
The DtElement class implements the common behavior of simulation based elements added to the scene...
Definition: DtElement.h:44
If you need access to data in the main thread outside of the advance frame, use this lock (with the l...
Definition: dataGate.h:18
#define DT_PROTOCOL_NAMESPACE
Contains defines and includes header files for protocols.
Definition: vrfProtocol.h:13
DtVrlinkNetworkInterface * vrlinkNetworkInterface()
Definition: vrfDriver.h:179
DtGateLock myGateLock
Definition: vrfDriver.h:333
makVrv::DtAgentManager & myAgentManager
Definition: vrfDriver.h:285
The main class for the remote control interface to VR-Forces. Instantiating this class allows the sen...
Definition: vrfRemoteController.h:206
DtSaveResult
Definition: ifSaveComplete.h:18
int myFileTransporterReceivePort
Definition: vrfDriver.h:311
Definition: remoteLoggerController.h:27
boost::signals2::signal< void()> signal_connectionCleanedUp
Definition: vrfDriver.h:215
Reader-Writer color specified by red, green, blue components.
Definition: rwColor.h:19
Contains makVrv::DtSharedModelSetSettings class.
DtVrfVrlinkGuiOrbatManager * myOrbatManager
Definition: vrfDriver.h:289
#define VRF_PROTOCOL_NAMESPACE
Contains DLL export macros.
Definition: vrfDis.h:14
The DtCommunicationManager class is a convenience class that will create both the DtNetworkInterfaceM...
Definition: communicationManager.h:54
DtExerciseConn * myExerciseConnection
Definition: vrfDriver.h:315
DtVrfEmbarkationProcessor * myVrfEmbarkationProcessor
Definition: vrfDriver.h:299
DtVrfFogOfWarHandler * myFogOfWarHandler
Definition: vrfDriver.h:297
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
bool myRemoteDiscoveryDisabled
Definition: vrfDriver.h:330
The DtSensorFieldOfViewControlInteractionContents provides the data contents of a SensorFieldOfViewCo...
Definition: sensorFieldOfViewControlInteractionData.h:25
DtVrfConnectionHelper * myConnectionHelper
Definition: vrfDriver.h:280
std::string myReportedHostAddressString
Definition: vrfDriver.h:295
The DtDetonationInteractionData provides the data contents of a DIS DetonationInteraction.
Definition: detonationInteractionData.h:25
The DtAgentManager manages the distributed scene object framework. This includes the objects and upda...
Definition: DtAgentManager.h:38
Definition: vrfFogOfWarHandler.h:34
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
bool myRtiError
Definition: vrfDriver.h:293
DtVrlinkNetworkInterface * myVrlinkNetworkInterface
Definition: vrfDriver.h:287
Contains makVrf::DtSharedNetworkSignaler class.
A single entity element. An entity element may be visualized using multiple visualizer sets one per m...
Definition: DtEntityElement.h:33
boost::signals2::signal< void()> signal_onFirstTickDriverInitialization
Definition: vrfDriver.h:217
double conditionLockTimeout() const
Definition: vrfDriver.h:101
A single tactical graphic element. A tactical graphic element may be visualized using multiple visual...
Definition: DtTacticalGraphicElement.h:35
Base class to provide boost signal/slot management.
DtVrfVrlinkGuiOrbatManager * orbatManager()
Definition: vrfDriver.h:184
bool myProcessStateDataUponDiscovery
Definition: vrfDriver.h:331
std::map< DtModelSetId, bool > ModelSetVisualizedMap
Definition: DtSharedModelSetSettings.h:28
boost::signals2::signal< void()> signal_driverAboutToBeSetUp
Definition: vrfDriver.h:219
int mySessionId
Definition: vrfDriver.h:296
Contains Extended DI-Guy Object net types.
The protocol specific processor for entity sim data.
Definition: vrfEmbarkationProcessor.h:40
The base implementation of a configuration.
Definition: DtConfiguration.h:24
VisualizerShowHideContext
Definition: DtShowHideContext.h:41
boost::signals2::signal< void()> signal_connectionSetUp
Signals sent on connection status.
Definition: vrfDriver.h:214
const std::string & nonVrfObjectsUseUUIDScheme() const
Accessor for non VRF UUID scheme.
Definition: vrfDriver.h:344
DtModelSetId
Definition: DtModelSetEnums.h:19
bool connected() const
Definition: vrfDriver.h:194
DtOrbatSimDataProcessor * orbatDataProcessor()
Definition: vrfDriver.h:174
DtOrbatSimDataProcessor * myOrbatDataProcessor
Definition: vrfDriver.h:291
The Driver for DIS.
Definition: vrfDriver.h:89
bool myRequestWhenInitializedFlag
Definition: vrfDriver.h:319
std::map< unsigned int, bool > ContextMap
Definition: vrfDriver.h:305
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)