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 
21 
22 #include <vlpi/entityType.h>
23 #include <matrix/vlVector.h>
24 
26 #include <vrfutil/scenario.h>
27 
28 #if DtHLA
30 #else
31 #include <vrfmsgs/ifSaveComplete.h>
32 #include <vlutil/vlPerformanceStats.h>
33 #endif
34 #include "vrfutil/rwColor.h"
35 
36 
37 #if DtHLA
38 namespace makVrfVrlinkExtToolkit
39 {
40  class DtReflectedExtendedAttributesObjectList;
41 }
42 #endif
43 
44 namespace makVrv
45 {
46  class DtElement;
47  class DtEntityElement;
48  class DtTacticalGraphicElement;
49 
50  namespace DT_PROTOCOL_NAMESPACE
51  {
53  class DtVrlinkAggregateElement;
54  class DtSensorFieldOfViewSimDataProcessor;
55  class DtVrlinkLaserDesignatorStateListener;
56  }
57 }
58 
61 
62 namespace makVrf
63 {
64  class DtSimDataProcessorManager;
65  class DtVrlinkVrfRemoteController;
66  class DtRemoteLoggerController;
67  class DtVrlinkNetworkInterface;
68  class DtRadioProcessor;
69  class DtVrfConnectionHelper;
70  struct DtSimpleTypedDictionary;
71  class DtNetworkMessageInterface;
72  class DtStateDataManager;
73 
74  namespace VRF_PROTOCOL_NAMESPACE
75  {
76  class DtVrlinkVantageToLegionIdMapper;
77  class DtVrfCloudLayerStateProcessor;
78  class DtVrfAggregateObjectDataStateProcessor;
79  class DtOrbatSimDataProcessor;
80  class DtVrfFogOfWarHandler;
81  class DtVrfEmbarkationProcessor;
82  class DtVrfWeatherProcessor;
83  class DtVrfCloudLayerProcessor;
84  class DtVrfVrlinkGuiOrbatManager;
85  class DtVrlinkVantageLegionToIdMapper;
86 
89  {
90  public:
91  DtVrfDriver(makVrv::DtAgentManager& agentManager, const std::string& uniqueName);
92 
93  virtual ~DtVrfDriver();
94 
95  public:
96  virtual bool onStart();
97 
98  public:
99  virtual DtVrlinkVrfRemoteController* vrfRemoteController() const;
100  virtual DtVrfRemoteController* remoteController() const;
101  virtual DtCommunicationManager* communicationManager() const;
102  virtual DtVrlinkVantageToLegionIdMapper* vrfVantageToLegionIdMapper() const;
103 
105  virtual void realizeConfiguration(const makVrv::DtConfiguration& config);
106 
108  virtual void sendLoggerSetFilename(std::string filename);
109 
111  virtual void sendLoggerRecordMessage();
112 
114  virtual void sendLoggerStopMessage();
115 
117  virtual void requestOrbatList();
118 
120  virtual void clearOrbatList();
121 
124  virtual void receivedNetworkMessage(DtNetworkMessageInterface* iface);
125 
127  virtual void executeGesture(std::string gesture, std::vector<makVrv::DtUniqueID>);
128 
130  virtual void executeAnimation(std::string gesture, std::vector<makVrv::DtUniqueID>);
131  virtual void executeAnimations(std::map<makVrv::DtUniqueID, std::string>);
132 
134  virtual void setIconColor(DtRwColor iconColor, std::vector<makVrv::DtUniqueID>);
135 
137  virtual void blockNetworkAnimationChange(std::vector<makVrv::DtUniqueID>, bool, double);
138  virtual void blockNetworkGestureChange(std::vector<makVrv::DtUniqueID>, bool);
139 
141  virtual void startFreezeScenario(DtSimulationAddress, bool sendStart);
142 
144  virtual void sendSensorFieldOfViewControl(const DtSensorFieldOfViewControlInteractionData* d);
145 
147  virtual void sendDetonation(const DtDetonationInteractionData* d);
148 
153  virtual DtSimpleTypedDictionary& extendedStateFor(makVrv::DtUniqueID id, bool forceUpdate = true);
154 
156  virtual void queueConnectionFunction(const boost::function<void ()>& function);
157 
159  virtual void queuePostAdvanceFrameConnectionFunction(const boost::function<void ()>& function);
160 
161  DtStateDataManager* stateDataManager() const;
162 
164  {
165  return myConnectionHelper;
166  }
167 
168  DtVrfCloudLayerStateProcessor* cloudLayerDataProcessor()
169  {
170  return myCloudLayerDataProcessor;
171  }
172 
174  {
175  return myOrbatDataProcessor;
176  }
177 
179  {
180  return myVrlinkNetworkInterface;
181  }
182 
184  {
185  return myOrbatManager;
186  }
187 
188  void setUseThreadFlag(bool b)
189  {
190  myUseThreadFlag = b;
191  }
192 
193  bool connected() const
194  {
195  return myConnected;
196  }
197 
198  int sessionId() const
199  {
200  return mySessionId;
201  }
202 
203  virtual bool onStop();
204 
205  virtual bool onTick();
206 
208  boost::signals2::signal<void ()> signal_connectionSetUp;
209  boost::signals2::signal<void ()> signal_connectionCleanedUp;
210  boost::signals2::signal<void ()> signal_connectionAboutToBeCleanedUp;
211  boost::signals2::signal<void ()> signal_onFirstTickDriverInitialization;
212  boost::signals2::signal<void ()> signal_driverStarted;
213  boost::signals2::signal<void ()> signal_driverAboutToBeSetUp;
214 
215  public:
217  const std::string& nonVrfObjectsUseUUIDScheme() const;
218 
219  protected:
220 #if DtDIS
221  virtual void slot_scenarioAboutToBeSaved(DtScenario& s) const;
226  virtual void slot_scenarioSaved(DtSaveResult result, const DtString& sError);
227  virtual void enterTimeoutProcessingMode();
228  virtual void leaveTimeoutProcessingMode();
230 #endif
231 
232  virtual void remoteControllerInit();
233  virtual void slot_scenarioLoaded();
234 
235  virtual bool createExerciseConnection();
236  virtual void onSetupExerciseConnection();
237  virtual void onCleanupExerciseConnection();
238 
239  virtual void connectionConnected();
240 
242  virtual void elementAttributeChangeRequested(
243  makVrv::DtUniqueID id, makVrv::DtUniqueID parentId, DtBoost::shared_ptr<const makVrv::DtElementAttribute> atr );
244 
245  makVrv::DtElement* findElementWithId(makVrv::DtUniqueID id) const;
246 
247  virtual makVrv::DtVrlinkBaseConnection* createConnection() override;
248 
250  virtual void slot_entityElementCreated(makVrv::DtEntityElement* e);
251 
252  virtual void slot_postConnectionTick();
253  virtual void slot_preConnectionTick();
254  virtual void slot_coordinateSystemChanged();
255 
257  virtual void visualsLoaded();
258 
259  virtual void slot_parameterDatabaseInitialized(bool);
260 
261  virtual void setVisibleForElement(makVrv::DtElement*, bool flag, int context) const;
262 
263  virtual void rediscoverListeners();
264 
265  virtual void resetVisualFlags(makVrv::DtEntityElement*);
266  virtual void resetVisualFlags(makVrv::DtTacticalGraphicElement*);
268 
269  protected:
272 
273  DtVrfCloudLayerStateProcessor* myCloudLayerDataProcessor;
274 
276 
278 
280 
282 
284  std::string myHostAddressString;
288 
291 
293  DtVrfCloudLayerProcessor* myVrfCloudLayerProcessor;
294 
295  typedef std::map<unsigned int, bool> ContextMap;
296  typedef std::map<makVrv::DtUniqueID, ContextMap> ShowHideContextMap;
297 
300 
304 
305  DtExerciseConn* myExerciseConnection;
306 
307 #if DtHLA
310 #endif
311 
312 
314 
315 #ifdef DtDIS
316  int mySiteId;
318 
319  mutable double myTimeSaveStarted = 0.;
320  double myEnteredTimeoutProcessingModeAt = 0.;
321 #endif
322 
325  };
326 
327  inline const std::string& DtVrfDriver::nonVrfObjectsUseUUIDScheme() const
328  {
330  }
331  }
332 }
int mySiteId
Definition: vrfDriver.h:316
DtVrfConnectionHelper * connectionHelper() const
Definition: vrfDriver.h:163
makVrv::DtSignalConnectionManager myConnectionManager
Definition: vrfDriver.h:290
#define VRF_PROTOCOL_EXPORT
Definition: vrfProtocol.h:24
Helper code for connectors. Does not exist in it&#39;s own project but is included by all projects that u...
Definition: vrfConnectionHelper.h:125
Definition: vrfWeatherProcessor.h:30
Definition: networkMessageInterface.h:28
bool myConnected
Definition: vrfDriver.h:298
Definition: scenario.h:52
boost::signals2::signal< void()> signal_driverStarted
Definition: vrfDriver.h:212
int sessionId() const
Definition: vrfDriver.h:198
bool myDisableRequestUpdatesFlag
Definition: vrfDriver.h:308
std::map< makVrv::DtUniqueID, ContextMap > ShowHideContextMap
Definition: vrfDriver.h:296
void setUseThreadFlag(bool b)
Definition: vrfDriver.h:188
DtVrfWeatherProcessor * myVrfWeatherProcessor
Definition: vrfDriver.h:292
bool myNeedsFirstTickInitialization
Definition: vrfDriver.h:313
std::string myNonVrfObjectsUseUUIDScheme
Definition: vrfDriver.h:302
DtRemoteLoggerController * myLoggerControl
Definition: vrfDriver.h:271
DtVrfCloudLayerProcessor * myVrfCloudLayerProcessor
Definition: vrfDriver.h:293
std::string myLocalSettingsDesignator
Definition: vrfDriver.h:299
DtVrfCloudLayerStateProcessor * cloudLayerDataProcessor()
Definition: vrfDriver.h:168
boost::signals2::signal< void()> signal_connectionAboutToBeCleanedUp
Definition: vrfDriver.h:210
unsigned myNumberOfRemoteNetworkThreads
Definition: vrfDriver.h:303
std::string myHostAddressString
Definition: vrfDriver.h:284
The DtElement class implements the common behavior of simulation based elements added to the scene...
Definition: DtElement.h:44
DtVrlinkNetworkInterface * vrlinkNetworkInterface()
Definition: vrfDriver.h:178
makVrv::DtAgentManager & myAgentManager
Definition: vrfDriver.h:275
The main class for the remote control interface to VR-Forces. Instantiating this class allows the sen...
Definition: vrfRemoteController.h:201
DtSaveResult
Definition: ifSaveComplete.h:18
int myFileTransporterReceivePort
Definition: vrfDriver.h:301
Definition: remoteLoggerController.h:27
boost::signals2::signal< void()> signal_connectionCleanedUp
Definition: vrfDriver.h:209
Reader-Writer color specified by red, green, blue components.
Definition: rwColor.h:19
#define DT_PROTOCOL_NAMESPACE
Contains DLL export macros.
Definition: vrfDis.h:17
Definition: simpleTypedDictionary.h:36
Contains makVrv::DtSharedModelSetSettings class.
DtVrfVrlinkGuiOrbatManager * myOrbatManager
Definition: vrfDriver.h:279
#define VRF_PROTOCOL_NAMESPACE
Definition: vrfDis.h:18
The DtCommunicationManager class is a convenience class that will create both the DtNetworkInterfaceM...
Definition: communicationManager.h:51
DtExerciseConn * myExerciseConnection
Definition: vrfDriver.h:305
DtVrfEmbarkationProcessor * myVrfEmbarkationProcessor
Definition: vrfDriver.h:289
DtVrfFogOfWarHandler * myFogOfWarHandler
Definition: vrfDriver.h:287
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
The protocol specific processor for orbat sim data.
Definition: orbatSimDataProcessor.h:49
bool myRemoteDiscoveryDisabled
Definition: vrfDriver.h:323
The DtSensorFieldOfViewControlInteractionContents provides the data contents of a SensorFieldOfViewCo...
Definition: sensorFieldOfViewControlInteractionData.h:25
DtVrfConnectionHelper * myConnectionHelper
Definition: vrfDriver.h:270
std::string myReportedHostAddressString
Definition: vrfDriver.h:285
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:77
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
bool myRtiError
Definition: vrfDriver.h:283
DtVrlinkNetworkInterface * myVrlinkNetworkInterface
Definition: vrfDriver.h:277
Contains makVrf::DtSharedNetworkSignaler class.
A single entity element. An entity element may be visualized using multiple visualizer sets one per m...
Definition: DtEntityElement.h:31
boost::signals2::signal< void()> signal_onFirstTickDriverInitialization
Definition: vrfDriver.h:211
DtVrfCloudLayerStateProcessor * myCloudLayerDataProcessor
Definition: vrfDriver.h:273
A single tactical graphic element. A tactical graphic element may be visualized using multiple visual...
Definition: DtTacticalGraphicElement.h:33
Base class to provide boost signal/slot management.
DtVrfVrlinkGuiOrbatManager * orbatManager()
Definition: vrfDriver.h:183
bool myProcessStateDataUponDiscovery
Definition: vrfDriver.h:324
std::map< DtModelSetId, bool > ModelSetVisualizedMap
Definition: DtSharedModelSetSettings.h:28
boost::signals2::signal< void()> signal_driverAboutToBeSetUp
Definition: vrfDriver.h:213
int mySessionId
Definition: vrfDriver.h:286
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
boost::signals2::signal< void()> signal_connectionSetUp
Signals sent on connection status.
Definition: vrfDriver.h:208
int myAppNumber
Definition: vrfDriver.h:317
const std::string & nonVrfObjectsUseUUIDScheme() const
Accessor for non VRF UUID scheme.
Definition: vrfDriver.h:327
bool connected() const
Definition: vrfDriver.h:193
DtOrbatSimDataProcessor * orbatDataProcessor()
Definition: vrfDriver.h:173
DtOrbatSimDataProcessor * myOrbatDataProcessor
Definition: vrfDriver.h:281
The Driver for DIS.
Definition: vrfDriver.h:88
bool myRequestWhenInitializedFlag
Definition: vrfDriver.h:309
std::map< unsigned int, bool > ContextMap
Definition: vrfDriver.h:295
This class holds the state data that represents each simulation object in the system.
Definition: stateDataManager.h:73

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)