VR-Forces 4.6.1 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 
207  virtual void clearNotificationWhenBackendsLoaded();
208 
211  virtual void signalIfAllBackendsLoaded();
212  boost::signal<void ()> signal_allBackendsLoaded;
213 
215  virtual void signalWhenAllBackendsSaved();
216 
218  virtual void clearNotificationWhenBackendsSaved();
219 
221  virtual void signalIfAllBackendsSaved(bool checkpointSave);
222  boost::signal<void (bool)> signal_allBackendsSaved;
223 
224  std::string sessionScenario() const
225  {
226  return mySessionStatus.scenarioName().c_str();
227  }
228 
229  virtual void setSessionScenario(const std::string&);
230 
231  std::string sessionScenarioFilename() const
232  {
233  return mySessionStatus.scenarioFilename().c_str();
234  }
235 
236  virtual void setSessionScenarioFilename(const std::string&);
237 
238  std::string sessionGuiTerrain() const
239  {
240  return mySessionStatus.guiTerrainName().c_str();
241  }
242 
243  virtual void setSessionGuiTerrain(const std::string&);
244 
245  std::string sessionSimTerrain() const
246  {
247  return mySessionStatus.terrainName().c_str();
248  }
249 
250  virtual void setSessionSimTerrain(const std::string&);
251 
252  const std::vector<DtFilename>& simulationModelSets() const
253  {
254  return mySessionStatus.simulationModelSets();
255  }
256 
257  virtual void setSimulationModelSets(const DtRwNLengthStringVector&);
258 
260  virtual void sessionStatusChanged(const DtSessionStatus& status);
261 
262  virtual time_t dateAndTimeOfDay() const;
263  virtual void setDateAndTimeOfDay(time_t);
264  virtual void resetDateAndTimeOfDay();
265 
266  virtual const std::map<std::string, bool> backendsLoading() const
267  {
268  return myLoadingMap;
269  }
270 
271  virtual const std::map<std::string, bool> backendsClosing() const
272  {
273  return myClosingMap;
274  }
275 
276  public:
277  boost::signal<void (const DtVrfBackendState&)> signal_frameRatesUpdated;
278  boost::signal<void (const DtVrfBackendState&)> signal_backendDiscovered;
279  boost::signal<void (const DtVrfBackendState&)> signal_nonSimulationBackendDiscovered;
280  boost::signal<void (const DtVrfBackendState&)> signal_backendRemoved;
281  boost::signal<void (const DtVrfBackendState&)> signal_nonSimulationBackenRemoved;
282  boost::signal<void (const DtVrfBackendState&, int)> signal_backendUpdated;
283  boost::signal<void (int)> signal_sessionUpdated;
284  boost::signal<void (const DtVrfBackendState&)> signal_duplicateSimulationAddress;
285  boost::signal<void (const DtSimulationAddress& old, const DtSimulationAddress& newaddr)> signal_selectedBackendChanged;
286  boost::signal<void ()> signal_allBackendsAboutToBeRemoved;
287 
288  protected:
289  virtual DtLocalWeatherManager& localWeatherManager() const;
290 
292  virtual void tick();
293 
295  virtual double simTimeFromBackend() const;
296 
297  virtual void updateDateAndTimeOfDay();
298  virtual void slot_dateAndTimeOfDayChanged(int year, int month, int day, int hours, int mins, int secs);
299 
300  virtual void slot_frameRatesUpdated(const DtVrfBackendState&);
301  virtual void simulationBackendRemoved(DtVrfBackendState*);
302  virtual void simulationBackendDiscovered(DtVrfBackendState*);
303  virtual void simulationBackendUpdated(DtSimulationAddress, int);
304  virtual void duplicateSimulationBackendDiscovered(DtSimulationAddress);
305  virtual void processSessionStatusChange(DtSessionStatus);
306 
307  virtual void processLoadCompleteCallback(DtSimMessage*);
308  virtual void processSaveCompleteCallback(DtSimMessage*);
309 
311  virtual void backendSaved(const std::string&, bool checkpointSave);
312 
313  virtual void setBackendSaving(const DtSimulationAddress&, bool b);
314 
316  virtual void updateSessionInformation(int sessionFlags = 0);
317 
319  virtual void clear();
320 
321  protected:
322  makVrv::DtBaseSimulation* mySimulation;
325  DtSimulationAddress mySelectedBackend;
329  std::map<std::string, char> myBackendsWaitingForSave;
330  std::map<std::string, bool> myAlreadyDuplicateWarned;
331  std::map<std::string, bool> myNeedToLoad;
332  std::set<std::string> myNeedToSave;
333 
335  std::map<std::string, bool> myJustLoadedMap;
336  std::map<std::string, bool> myLoadingMap;
337  std::map<std::string, bool> myClosingMap;
338  std::map<std::string, bool> myJustClosedMap;
339  std::map<std::string, bool> myJustRolledBackMap;
340  std::map<std::string, bool> myRollingBackMap;
341  std::map<std::string, bool> myImportingMap;
342  std::map<std::string, bool> myCreatingSimulationObjectGroupMap;
343 
344  double mySimTime;
350 
352  };
353 }

Document ID: Generated on Wed Jul 25 16:57:45 EDT 2018 from SVN revision 190790
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)