VR-Forces 4.6 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) 2014 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 
57 namespace makVrf
58 {
59  class DtVrfBackEndState;
60  class DtLocalWeatherManager;
61 
68  {
69  public:
70  typedef std::map<std::string, DtVrfBackendState*> DtVrfSimBackendStates;
71 
72  public:
74  virtual ~DtVrfSimBackendManager();
75 
77  static DtVrfSimBackendManager& instance(makVrv::DtDe& de);
78 
79  public:
81  virtual bool backEndsPresent() const;
82 
84  virtual bool anyBackendsLoading() const;
85 
87  virtual bool anyBackendsCreatingSimulationObjectGroup() const;
88 
90  virtual bool anyBackendsClosing() const;
91 
93  virtual bool anyBackendsLoaded() const;
94 
96  virtual bool allBackendsLoaded() const;
97 
99  virtual bool backendLoaded(const DtSimulationAddress&) const;
100 
102  virtual bool backendSaving(const DtSimulationAddress&) const;
103 
105  virtual bool anyBackendsPlaying() const;
106 
108  virtual bool anyBackendsInControlState(int state) const;
109 
111  virtual bool hasDynamicTerrainServer() const;
112 
114  virtual bool allBackendsCanSimulate() const;
115 
117  virtual bool anyBackendCanSimulate() const;
118 
120  virtual bool backendCanSimulate(const DtSimulationAddress&) const;
121 
123  virtual void duplicateBackendDiscovered(const DtSimulationAddress&);
124 
126  virtual double timeMultiplier() const;
127 
133 
134  virtual void removeAllBackends();
135  virtual void addBackend(const DtBackend*);
136  virtual void backendRemoved(const DtSimulationAddress&);
137  virtual void backendUpdated(const DtSimulationAddress&, const DtBackend*);
139 
140  virtual DtVrfBackendState* stateFor(const DtSimulationAddress&) const;
141 
142  virtual const DtSimulationAddress& selectedBackend() const
143  {
144  return mySelectedBackend;
145  }
146 
147  void setSelectedBackend(const DtSimulationAddress&);
148 
150  virtual void simulationAddresses(std::set<std::string>&);
151 
152  virtual int numberOfBackends() const;
153 
155  virtual void clearSelectedBackend();
156 
158  virtual DtVrfBackendState* firstTimeBackend() const;
159 
161  virtual double simTime() const;
162 
164  virtual double runDurationTime() const;
165 
167  virtual int scenarioRunId() const;
168 
171  virtual double timeOfDay() const;
172 
174  virtual double simStartSimTime() const;
175 
177  const DtVrfSimBackendStates& backendStates() const
178  {
179  return myBackendStates;
180  }
181 
183  const DtVrfSimBackendStates& allBackendStates() const
184  {
185  return myAllBackendStates;
186  }
187 
189  virtual std::map<short, int> currentObjectCounts() const;
190 
192  virtual const std::map<short, int>& currentObjectCount(const DtSimulationAddress&) const;
193 
194  public:
196  virtual void signalWhenAllBackendsClosed();
197 
199  virtual void signalIfAllBackendsClosed();
200  boost::signal<void ()> signal_allBackendsClosed;
201 
204  virtual void signalWhenAllBackendsLoaded();
205 
208  virtual void signalIfAllBackendsLoaded();
209  boost::signal<void ()> signal_allBackendsLoaded;
210 
212  virtual void signalWhenAllBackendsSaved();
213 
215  virtual void signalIfAllBackendsSaved(bool checkpointSave);
216  boost::signal<void (bool)> signal_allBackendsSaved;
217 
218  std::string sessionScenario() const
219  {
220  return mySessionStatus.scenarioName().c_str();
221  }
222 
223  virtual void setSessionScenario(const std::string&);
224 
225  std::string sessionScenarioFilename() const
226  {
227  return mySessionStatus.scenarioFilename().c_str();
228  }
229 
230  virtual void setSessionScenarioFilename(const std::string&);
231 
232  std::string sessionGuiTerrain() const
233  {
234  return mySessionStatus.guiTerrainName().c_str();
235  }
236 
237  virtual void setSessionGuiTerrain(const std::string&);
238 
239  std::string sessionSimTerrain() const
240  {
241  return mySessionStatus.terrainName().c_str();
242  }
243 
244  virtual void setSessionSimTerrain(const std::string&);
245 
246  const std::vector<DtFilename>& simulationModelSets() const
247  {
248  return mySessionStatus.simulationModelSets();
249  }
250 
251  virtual void setSimulationModelSets(const DtRwNLengthStringVector&);
252 
254  virtual void sessionStatusChanged(const DtSessionStatus& status);
255 
256  virtual time_t dateAndTimeOfDay() const;
257  virtual void setDateAndTimeOfDay(time_t);
258  virtual void resetDateAndTimeOfDay();
259 
260  virtual const std::map<std::string, bool> backendsLoading() const
261  {
262  return myLoadingMap;
263  }
264 
265  virtual const std::map<std::string, bool> backendsClosing() const
266  {
267  return myClosingMap;
268  }
269 
270  public:
271  boost::signal<void (const DtVrfBackendState&)> signal_frameRatesUpdated;
272  boost::signal<void (const DtVrfBackendState&)> signal_backendDiscovered;
273  boost::signal<void (const DtVrfBackendState&)> signal_nonSimulationBackendDiscovered;
274  boost::signal<void (const DtVrfBackendState&)> signal_backendRemoved;
275  boost::signal<void (const DtVrfBackendState&)> signal_nonSimulationBackenRemoved;
276  boost::signal<void (const DtVrfBackendState&, int)> signal_backendUpdated;
277  boost::signal<void (int)> signal_sessionUpdated;
278  boost::signal<void (const DtVrfBackendState&)> signal_duplicateSimulationAddress;
279  boost::signal<void (const DtSimulationAddress& old, const DtSimulationAddress& newaddr)> signal_selectedBackendChanged;
280  boost::signal<void ()> signal_allBackendsAboutToBeRemoved;
281 
282  protected:
283  virtual DtLocalWeatherManager& localWeatherManager() const;
284 
286  virtual void tick();
287 
289  virtual double simTimeFromBackend() const;
290 
291  virtual void updateDateAndTimeOfDay();
292  virtual void slot_dateAndTimeOfDayChanged(int year, int month, int day, int hours, int mins, int secs);
293 
294  virtual void slot_frameRatesUpdated(const DtVrfBackendState&);
295  virtual void simulationBackendRemoved(DtVrfBackendState*);
296  virtual void simulationBackendDiscovered(DtVrfBackendState*);
297  virtual void simulationBackendUpdated(DtSimulationAddress, int);
298  virtual void duplicateSimulationBackendDiscovered(DtSimulationAddress);
299  virtual void processSessionStatusChange(DtSessionStatus);
300 
301  virtual void processLoadCompleteCallback(DtSimMessage*);
302  virtual void processSaveCompleteCallback(DtSimMessage*);
303 
305  virtual void backendSaved(const std::string&, bool checkpointSave);
306 
307  virtual void setBackendSaving(const DtSimulationAddress&, bool b);
308 
310  virtual void updateSessionInformation(int sessionFlags = 0);
311 
313  virtual void clear();
314 
315  protected:
316  makVrv::DtBaseSimulation* mySimulation;
319  DtSimulationAddress mySelectedBackend;
323  std::map<std::string, char> myBackendsWaitingForSave;
324  std::map<std::string, bool> myAlreadyDuplicateWarned;
325  std::map<std::string, bool> myNeedToLoad;
326  std::set<std::string> myNeedToSave;
327 
329  std::map<std::string, bool> myJustLoadedMap;
330  std::map<std::string, bool> myLoadingMap;
331  std::map<std::string, bool> myClosingMap;
332  std::map<std::string, bool> myJustClosedMap;
333  std::map<std::string, bool> myJustRolledBackMap;
334  std::map<std::string, bool> myRollingBackMap;
335  std::map<std::string, bool> myImportingMap;
336  std::map<std::string, bool> myCreatingSimulationObjectGroupMap;
337 
338  double mySimTime;
344 
346  };
347 }

Document ID: Generated on Thu Apr 12 03:15:37 EDT 2018 from SVN revision 187986
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)