VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfSimBackendManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2018 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #include <vrfGuiCore/vrfGuiCore.h>
17 
18 #include <vrvCore/DtSimData.h>
19 #include <vrvCore/DtDe.h>
20 #include <vrfutil/sessionStatus.h>
21 
22 #include <boost/function.hpp>
23 #include <boost/signal.hpp>
24 
25 class DtBackend;
27 class DtSimulationAddress;
28 class DtSimMessage;
29 class DtIfLoadComplete;
30 class DtIfSaveComplete;
31 
32 namespace makVrv
33 {
34  class DtBaseSimulation;
35 }
36 
38 const int DtSessionChangedTerrain = 0x00000001;
39 const int DtSessionChangedScenario = 0x00000002;
40 const int DtSessionChangedNumberBEs = 0x00000004;
41 const int DtSessionScenarioJustLoaded = 0x00000008;
42 const int DtSessionChangedSimulationModelSets = 0x00000010;
43 const int DtSessionScenarioJustClosed = 0x00000020;
44 const int DtSessionScenarioClosing = 0x00000040;
45 const int DtSessionScenarioLoading = 0x00000080;
46 const int DtSessionScenarioErrorLoading = 0x00000100;
47 const int DtSessionScenarioImporting = 0x00000200;
48 const int DtSessionScenarioJustImported = 0x00000400;
51 const int DtSessionChangedScenarioFilename = 0x00002000;
52 const int DtSessionScenarioJustRolledBack = 0x00004000;
53 const int DtSessionScenarioRollingBack = 0x00008000;
54 const int DtSessionSimulationStateChanged = 0x00010000;
55 const int DtSessionChangedSimTerrain = 0x00020000;
56 const int DtSessionScenarioReinitializing = 0x00040000;
57 const int DtSessionScenarioJustReinitialized = 0x00080000;
58 
59 namespace makVrf
60 {
61  class DtVrfBackEndState;
62  class DtLocalWeatherManager;
63 
70  {
71  public:
72  typedef std::map<std::string, DtVrfBackendState*> DtVrfSimBackendStates;
73 
74  public:
76  virtual ~DtVrfSimBackendManager();
77 
79  static DtVrfSimBackendManager& instance(makVrv::DtDe& de);
80 
81  public:
83  virtual bool backEndsPresent() const;
84 
86  virtual bool anyBackendsLoading() const;
87 
89  virtual bool anyBackendsCreatingSimulationObjectGroup() const;
90 
92  virtual bool anyBackendsClosing() const;
93 
95  virtual bool allBackendsClosingOrClosed() const;
96 
98  virtual bool anyBackendsLoaded() const;
99 
101  virtual bool allBackendsLoaded() const;
102 
104  virtual bool backendLoaded(const DtSimulationAddress&) const;
105 
107  virtual bool backendSaving(const DtSimulationAddress&) const;
108 
110  virtual bool anyBackendsPlaying() const;
111 
113  virtual bool anyBackendsInControlState(int state) const;
114 
116  virtual bool hasDynamicTerrainServer() const;
117 
119  virtual bool allBackendsCanSimulate() const;
120 
122  virtual bool anyBackendCanSimulate() const;
123 
125  virtual bool backendCanSimulate(const DtSimulationAddress&) const;
126 
128  virtual void duplicateBackendDiscovered(const DtSimulationAddress&);
129 
131  virtual double timeMultiplier() const;
132 
138 
139  virtual void removeAllBackends();
140  virtual void addBackend(const DtBackend*);
141  virtual void backendRemoved(const DtSimulationAddress&);
142  virtual void backendUpdated(const DtSimulationAddress&, const DtBackend*);
144 
145  virtual DtVrfBackendState* stateFor(const DtSimulationAddress&) const;
146 
147  virtual const DtSimulationAddress& selectedBackend() const
148  {
149  return mySelectedBackend;
150  }
151 
152  void setSelectedBackend(const DtSimulationAddress&);
153 
155  virtual void simulationAddresses(std::set<std::string>&);
156 
157  virtual int numberOfBackends() const;
158 
160  virtual void clearSelectedBackend();
161 
163  virtual DtVrfBackendState* firstTimeBackend() const;
164 
166  virtual double simTime() const;
167 
169  virtual double runDurationTime() const;
170 
172  virtual int scenarioRunId() const;
173 
176  virtual double timeOfDay() const;
177 
179  virtual double simStartSimTime() const;
180 
182  const DtVrfSimBackendStates& backendStates() const
183  {
184  return myBackendStates;
185  }
186 
188  const DtVrfSimBackendStates& allBackendStates() const
189  {
190  return myAllBackendStates;
191  }
192 
194  virtual std::map<short, int> currentObjectCounts() const;
195 
197  virtual const std::map<short, int>& currentObjectCount(const DtSimulationAddress&) const;
198 
199  public:
201  virtual void signalWhenAllBackendsClosed();
202 
204  virtual void signalIfAllBackendsClosed();
205  boost::signal<void ()> signal_allBackendsClosed;
206 
209  virtual void signalWhenAllBackendsLoaded();
210 
212  virtual void clearNotificationWhenBackendsLoaded();
213 
216  virtual void signalIfAllBackendsLoaded();
217  boost::signal<void ()> signal_allBackendsLoaded;
218 
220  virtual void signalWhenAllBackendsSaved();
221 
223  virtual void clearNotificationWhenBackendsSaved();
224 
226  virtual void signalIfAllBackendsSaved(bool checkpointSave);
227  boost::signal<void (bool)> signal_allBackendsSaved;
228 
229  std::string sessionScenario() const
230  {
231  return mySessionStatus.scenarioName().c_str();
232  }
233 
234  virtual void setSessionScenario(const std::string&);
235 
236  std::string sessionScenarioFilename() const
237  {
238  return mySessionStatus.scenarioFilename().c_str();
239  }
240 
241  virtual void setSessionScenarioFilename(const std::string&);
242 
243  std::string sessionGuiTerrain() const
244  {
245  return mySessionStatus.guiTerrainName().c_str();
246  }
247 
248  virtual void setSessionGuiTerrain(const std::string&);
249 
250  std::string sessionSimTerrain() const
251  {
252  return mySessionStatus.terrainName().c_str();
253  }
254 
255  virtual void setSessionSimTerrain(const std::string&);
256 
257  const std::vector<DtFilename>& simulationModelSets() const
258  {
259  return mySessionStatus.simulationModelSets();
260  }
261 
262  virtual void setSimulationModelSets(const DtRwNLengthStringVector&);
263 
265  virtual void sessionStatusChanged(const DtSessionStatus& status);
266 
267  virtual time_t dateAndTimeOfDay() const;
268  virtual void setDateAndTimeOfDay(time_t);
269  virtual void resetDateAndTimeOfDay();
270 
271  virtual const std::map<std::string, bool> backendsLoading() const
272  {
273  return myLoadingMap;
274  }
275 
276  virtual const std::map<std::string, bool> backendsClosing() const
277  {
278  return myClosingMap;
279  }
280 
281  public:
282  boost::signal<void (const DtVrfBackendState&)> signal_frameRatesUpdated;
283  boost::signal<void (const DtVrfBackendState&)> signal_backendDiscovered;
284  boost::signal<void (const DtVrfBackendState&)> signal_nonSimulationBackendDiscovered;
285  boost::signal<void (const DtVrfBackendState&)> signal_backendRemoved;
286  boost::signal<void (const DtVrfBackendState&)> signal_nonSimulationBackenRemoved;
287  boost::signal<void (const DtVrfBackendState&, int)> signal_backendUpdated;
288  boost::signal<void (int)> signal_sessionUpdated;
289  boost::signal<void (const DtVrfBackendState&)> signal_duplicateSimulationAddress;
290  boost::signal<void (const DtSimulationAddress& old, const DtSimulationAddress& newaddr)> signal_selectedBackendChanged;
291  boost::signal<void ()> signal_allBackendsAboutToBeRemoved;
292 
293  protected:
294  virtual DtLocalWeatherManager& localWeatherManager() const;
295 
297  virtual void tick();
298 
300  virtual double simTimeFromBackend() const;
301 
302  virtual void updateDateAndTimeOfDay();
303  virtual void slot_dateAndTimeOfDayChanged(int year, int month, int day, int hours, int mins, int secs);
304 
305  virtual void slot_frameRatesUpdated(const DtVrfBackendState&);
306  virtual void simulationBackendRemoved(DtVrfBackendState*);
307  virtual void simulationBackendDiscovered(DtVrfBackendState*);
308  virtual void simulationBackendUpdated(DtSimulationAddress, int);
309  virtual void duplicateSimulationBackendDiscovered(DtSimulationAddress);
310  virtual void processSessionStatusChange(DtSessionStatus);
311 
312  virtual void processLoadCompleteCallback(DtSimMessage*);
313  virtual void processSaveCompleteCallback(DtSimMessage*);
314 
316  virtual void backendSaved(const std::string&, bool checkpointSave);
317 
318  virtual void setBackendSaving(const DtSimulationAddress&, bool b);
319 
321  virtual void updateSessionInformation(int sessionFlags = 0);
322 
324  virtual void clear();
325 
326  protected:
327  makVrv::DtBaseSimulation* mySimulation;
330  DtSimulationAddress mySelectedBackend;
334  std::map<std::string, char> myBackendsWaitingForSave;
335  std::map<std::string, bool> myAlreadyDuplicateWarned;
336  std::map<std::string, bool> myNeedToLoad;
337  std::set<std::string> myNeedToSave;
338 
340  std::map<std::string, bool> myJustLoadedMap;
341  std::map<std::string, bool> myLoadingMap;
342  std::map<std::string, bool> myReinitializingMap;
343  std::map<std::string, bool> myClosingMap;
344  std::map<std::string, bool> myJustClosedMap;
345  std::map<std::string, bool> myJustRolledBackMap;
346  std::map<std::string, bool> myRollingBackMap;
347  std::map<std::string, bool> myImportingMap;
348  std::map<std::string, bool> myCreatingSimulationObjectGroupMap;
349  std::set<std::string> myBackendWasClosing;
350 
351  double mySimTime;
357 
359  };
360 }

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)