VR-Forces 4.7 Class Documentation
 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 
15 #include <vrvVrl/DtConnection.h>
25 
27 
28 #include <vlpi/entityType.h>
29 #include <matrix/vlVector.h>
30 
32 #include <vrfutil/scenario.h>
33 
34 #include <vl/commentInteraction.h>
35 
36 #if DtHLA
38 #endif
39 
40 class DtVrfObjectMessage;
41 
46 class DtSetDataRequest;
47 class DtSimTask;
50 class DtAddressMap;
51 class DtBackendMap;
52 
53 #if DtHLA
54 namespace makVrfVrlinkExtToolkit
55 {
56  class DtReflectedExtendedAttributesObjectList;
57 }
58 #endif
59 
60 #if DtDIS
61 #define DtCommentCallbackFcn DtCommentPduCb
62 #elif DtHLA
63 #define DtCommentCallbackFcn DtCommentInteractionCb
64 #endif
65 
66 namespace makVrv
67 {
68  class DtVrlinkElement;
69 
70  namespace DT_PROTOCOL_NAMESPACE
71  {
73  class DtAggregateElement;
74  class DtEntityElement;
75  class DtEntitySimDataProcessor;
76  class DtSensorFieldOfViewSimDataProcessor;
78  class DtSensorFieldOfViewSimDataProcessorAccessory;
79  }
80 }
81 
82 namespace makVrf
83 {
84  class DtNetworkMessageInterface;
85  class DtNetworkMessageInterfaceHandlerAgent;
86 
87  namespace VRF_PROTOCOL_NAMESPACE
88  {
89  class DtTDLMessageProcessor;
90  class DtVrfBackendInterceptor;
91  class DtVrfConnectionHelper;
92  class DtVrfObjectDataStateProcessor;
93  class DtVrfWeatherStateProcessor;
94  class DtVrfCloudLayerStateProcessor;
95  class DtVrfEnvironmentObjectDataStateProcessor;
96  class DtEnvironmentSimDataProcessor;
97  class DtEmitterSystemSimDataProcessor;
98  class DtActiveSonarSimDataProcessor;
99  class DtVrfAggregateObjectDataStateProcessor;
100  class DtAggregateSimDataProcessor;
101  class DtOrbatSimDataProcessor;
102  class DtVrfFogOfWarHandler;
103  class DtVrfEmbarkationProcessor;
104  class DtIffSimDataProcessor;
105  class DtLaserDesignatorSimDataProcessor;
106  class DtPropulsionNoiseSimDataProcessor;
107  class DtWeatherStateCacheManager;
108  class DtCloudLayerStateCacheManager;
109  class DtVrfWeatherProcessor;
110  class DtVrfCloudLayerProcessor;
111  class DtVrfVrlinkGuiOrbatManager;
112 
115  {
116  public:
117  DtVrfDriver(makVrv::DtAgentManager& agentManager, const std::string& uniqueName);
118 
119  virtual ~DtVrfDriver();
120 
121  public:
122  virtual bool onStart();
123 
124  public:
126  virtual void realizeConfiguration(const makVrv::DtConfiguration& config);
127 
129  virtual void sendLoggerSetFilename(std::string filename);
130 
132  virtual void sendLoggerRecordMessage();
133 
135  virtual void sendLoggerStopMessage();
136 
139  virtual void newScenario(const DtScenario*, time_t startTimeOfDay = 12 * 3600, const DtChangeWeatherCommand& initialCondition = DtChangeWeatherCommand());
140 
142  virtual void rollbackToSnapshot(double);
143 
145  virtual void loadScenario(const DtScenarioLoadInformation*, bool deleteMemory = false);
146 
149  virtual void saveScenario(const DtScenario*, DtPreserveMappingsFcn fcn = 0, void* userData = 0,
150  bool deleteMemory = false, bool saveInZipFile = false, bool queueSave = false, int putIntoPlayMode = 0);
151 
154  virtual void saveCheckpoints(const std::vector<DtScenario*>&, const DtFilename& baseName);
155 
157  virtual void saveNextCheckpoint();
158 
160  virtual void clearSavingCheckpoints();
161 
163  virtual void closeScenario(DtFilename, bool forceCloseAll = false);
164 
166  virtual void createEnvironmentalObject(DtSimulationAddress addr,
168 
170  virtual void getMessageFilterStatus(std::map<std::string,bool>& statusMap) const;
171 
173  virtual void setMessageFilterStatus(const std::map<std::string,bool>& statusMap);
174 
176  virtual void getMessageProcessorStatus(std::map<std::string,bool>& statusMap) const;
177 
179  virtual void setMessageProcessorStatus(const std::map<std::string,bool>& statusMap);
180 
183  virtual void registerSimMessageCallbackFor(int t, bool reg);
184 
187  virtual void registerSimReportMessageCallbackFor(const DtSimReportMessageType& s, bool reg);
188 
189  virtual void registerSimTaskMessageCallbackFor(const DtSimTaskMessageType& s, bool reg);
190 
191  virtual void registerSetMessageCallbackFor(const DtSetMessageType& s, bool reg);
192 
195  virtual void registerAdminMessageCallbackFor(const DtAdminContentMessageType& t, bool reg);
196 
198  virtual void setTimeoutInterval(int i);
199 
201  virtual void sendMessageToObject(const DtVrfObjectMessage* m, DtSimulationAddress addr);
202 
205  virtual void sendMessage(const DtSimInterfaceContent* m, DtSimulationAddress addr);
206 
208  virtual void addSetCreatorFcn(const DtSetMessageType&, DtSetDataRequestCreatorFcn);
209 
211  virtual void addTaskCreatorFcn(const DtSimTaskMessageType&, DtSimTaskCreatorFcn);
212 
214  virtual void addInterfaceContentCreatorFcn(int, DtInterfaceContentCreatorFcn);
215 
217  virtual void addObjectMessageCreatorFcn(int, DtVrfObjectMessageCreatorFcn);
218 
220  virtual void addReportCreatorFcn(const DtSimReportMessageType&, DtSimReportCreatorFcn);
221 
223  virtual void addAdminContentCreatorFcn(const DtAdminContentMessageType&, DtAdminContentCreatorFcn);
224 
226  virtual void addSimulationCommandCreatorFcn(const DtSimCommandMessageType&, DtSimCommandCreatorFcn);
227 
229  virtual void addConditionCreatorFcn(std::string, int, DtCondExprCreatorFcn);
230 
232  virtual void requestOrbatList();
233 
235  virtual void clearOrbatList();
236 
238  virtual void executeGesture(std::string gesture, std::vector<makVrv::DtUniqueID>);
239 
241  virtual void executeAnimation(std::string gesture, std::vector<makVrv::DtUniqueID>);
242  virtual void executeAnimations(std::map<makVrv::DtUniqueID, std::string>);
243 
245  virtual void blockNetworkAnimationChange(std::vector<makVrv::DtUniqueID>, bool, double);
246 
247 #if DtHLA
248 
249  virtual void regsiterInfluenceIteractionCallback(DtInfluenceInterCb, void*);
250 
252  virtual void unregsiterInfluenceIteractionCallback(DtInfluenceInterCb, void*);
253 #endif
254 
256  virtual void startFreezeScenario(DtSimulationAddress, bool sendStart);
257 
259  virtual void sendSensorFieldOfViewControl(const DtSensorFieldOfViewControlInteractionData* d);
260 
262  virtual void sendDetonation(const DtDetonationInteractionData* d);
263 
265  virtual void registerCommentInteractionCallback(DtCommentCallbackFcn, void*);
266 
268  virtual void unregisterCommentInteractionCallback(DtCommentCallbackFcn, void*);
269 
271  virtual void importScenarioDescriptionFile(std::string file, DtSimulationAddress address, std::string format,
272  std::map<std::string, std::string> importData);
273 
275  virtual void exportScenarioDescriptionFile(std::string file, DtSimulationAddress address, std::string format,
276  std::map<std::string, std::string> importData);
277 
282  virtual DtSimpleTypedDictionary& extendedStateFor(makVrv::DtUniqueID id, bool forceUpdate = true);
283 
285  virtual void createGlobalDynamicTerrain(bool);
286 
288  virtual void createGlobalEnvironment(bool);
289 
290  DtVrfObjectDataStateProcessor* vrfObjectDataProcessor()
291  {
292  return myVrfObjectDataStateDataProcessor;
293  }
294 
297  {
298  return myDataProcessor;
299  }
300 
301  DtTDLMessageProcessor* tdlMessageProcessor()
302  {
303  return myTDLMessageProcessor;
304  }
305 
306  DtEmitterSystemSimDataProcessor* emitterSystemDataProcessor()
307  {
308  return myEmitterSystemDataProcessor;
309  }
310 
311  DtVrfWeatherStateProcessor* weatherDataProcessor()
312  {
313  return myWeatherDataProcessor;
314  }
315 
316  DtVrfCloudLayerStateProcessor* cloudLayerDataProcessor()
317  {
318  return myCloudLayerDataProcessor;
319  }
320 
321  DtActiveSonarSimDataProcessor* activeSonarDataProcessor()
322  {
323  return myActiveSonarDataProcessor;
324  }
325 
326  DtEnvironmentSimDataProcessor* environmentDataProcessor()
327  {
328  return myEnvironmentDataProcessor;
329  }
330 
331  DtAggregateSimDataProcessor* aggregtateDataProcessor()
332  {
333  return myAggregateDataProcessor;
334  }
335 
336  DtOrbatSimDataProcessor* orbatDataProcessor()
337  {
338  return myOrbatDataProcessor;
339  }
340 
341  DtLaserDesignatorSimDataProcessor* laserDesignatorSimDataProcessor()
342  {
343  return myLaserDesignatorSimDataProcessor;
344  }
345 
347  {
348  return myOrbatManager;
349  }
350 
351  DtExtendedStateDataProcessor* extendedDataStateProcessor()
352  {
353  return myExtendedStateDataProcessor;
354  }
355 
356  void setUseThreadFlag(bool b)
357  {
358  myUseThreadFlag = b;
359  }
360 
361  bool connected() const
362  {
363  return myConnected;
364  }
365 
366  virtual bool onStop();
367 
368  virtual bool onTick();
371  virtual void receivedNetworkMessage(DtNetworkMessageInterface* iface);
372 
374  boost::signal<void ()> signal_connectionSetUp;
375  boost::signal<void ()> signal_connectionCleanedUp;
376  boost::signal<void ()> signal_connectionAboutToBeCleanedUp;
378  boost::signal<void ()> signal_driverStarted;
379  boost::signal<void ()> signal_driverAboutToBeSetUp;
380 
381  public:
382 
385  virtual DtVrfRemoteController* remoteController();
386  virtual const DtVrfRemoteController* remoteController() const;
388 
391  virtual DtVrfMessageInterface* messageInterface();
392  virtual const DtVrfMessageInterface* messageInterface() const;
394 
397  virtual DtVrfTDLMessageInterface* vrfTDLMessageInterface();
398  virtual const DtVrfTDLMessageInterface* vrfTDLMessageInterface() const;
400 
402  const std::string& nonVrfObjectsUseUUIDScheme() const;
403 
404  protected:
405  virtual void onSetupExerciseConnection();
406  virtual void onCleanupExerciseConnection();
407 
408  virtual void connectionConnected();
409 
410  static void scenarioSavedCallback(DtSaveResult result, const DtString& error, void* usr);
411  virtual void processScenarioSaved(DtSaveResult, const DtString&);
412 
413  virtual void setupEntityData();
414  virtual void setupAggregateData();
415  virtual void setupEnvironmentalData();
416 
418  static void simMessageCallback(DtSimMessage* msg, void* usr);
419  virtual void processSimMessage(DtSimMessage* msg);
420 
422  static void radioMessageCallback(const DtVrfObjectMessage* msg, void* usr);
423  virtual void processRadioMessage(const DtVrfObjectMessage* msg);
424 
426  virtual void elementAttributeChangeRequested(
427  makVrv::DtUniqueID id, makVrv::DtUniqueID parentId, DtBoost::shared_ptr<const makVrv::DtElementAttribute> atr );
428 
429  makVrv::DtVrlinkElement* findElementWithId(makVrv::DtUniqueID id) const;
430 
431  virtual makVrv::DtConnection* createConnection();
432 
434  virtual void slot_quitBackend(DtSimulationAddress);
435 
437  virtual void symbolDecorationsChanged();
438  virtual void slot_entityElementCreated(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEntityStateListener& l,
440 
441  static void scenarioCheckpointed(DtSaveResult result, double, void*);
442  virtual void processScenarioCheckpointed(DtSaveResult result, double);
443 
445  virtual void visualsLoaded();
446 
448  static void scenarioAboutToBeSaved(DtScenario&, void*);
449  virtual void processScenarioAboutToBeSaved(DtScenario&) const;
450 
451  virtual void setVisibleForElement(makVrv::DtVrlinkElement*, bool flag, int context) const;
452 
453  protected:
460 
463 
474 
476 
478 
484 
488 
490 
492  std::string myHostAddressString;
496 
499 
502 
505 
508  DtNetworkMessageInterfaceHandlerAgent* myNetworkMessageInterfaceHandlerAgent;
509 
510  typedef std::map<unsigned int, bool> ContextMap;
511  typedef std::map<makVrv::DtUniqueID, ContextMap> ShowHideContextMap;
512 
515 
518 
520  typedef std::map<double,
521  std::pair<DtScenario, int> > CheckpointsToSave;
524 
525  std::set<int> mySimMessageCallbacks;
526  std::set<DtAdminContentMessageType> myAdminMessageCallbacks;
527  std::set<DtSimReportMessageType> myReportMessageCallbacks;
528  std::set<DtSimTaskMessageType> myTaskMessageCallbacks;
529  std::set<DtSetMessageType> mySetMessageCallbacks;
530 
531  std::map<DtSetMessageType, DtSetDataRequestCreatorFcn> mySetCreator;
532  std::map<DtSimTaskMessageType, DtSimTaskCreatorFcn> myTaskCreator;
533  std::map<int, DtInterfaceContentCreatorFcn> myInterfaceContentCreator;
534  std::map<DtAdminContentMessageType, DtAdminContentCreatorFcn> myAdminContentCreator;
535  std::map<DtSimCommandMessageType, DtSimCommandCreatorFcn> mySimulationCommandCreator;
536  std::map<std::string, std::pair<int, DtCondExprCreatorFcn> > myConditionCommandCreator;
537  std::map<int, DtVrfObjectMessageCreatorFcn> myObjectMessageCreator;
538  std::map<DtSimReportMessageType, DtSimReportCreatorFcn> myReportCreator;
539 
540 #if DtHLA
542 #endif
543 
544 
546 
547 #ifdef DtDIS
548  int mySiteId;
550 #endif
551  };
552 
554  {
555  return (myVrfMessageInterface);
556  }
557 
559  {
560  return (myVrfMessageInterface);
561  }
562 
564  {
565  return (myVrfTDLMessageInterface);
566  }
567 
569  {
570  return (myVrfTDLMessageInterface);
571  }
572 
574  {
575  return (myRemoteController);
576  }
577 
579  {
580  return (myRemoteController);
581  }
582 
583  inline const std::string& DtVrfDriver::nonVrfObjectsUseUUIDScheme() const
584  {
586  }
587  }
588 }

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)