VR-Forces 4.3.1 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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 
48 namespace makVrf
49 {
50  class DtVrfBackEndState;
51 
58  {
59  public:
60  typedef std::map<std::string, DtVrfBackendState*> DtVrfSimBackendStates;
61 
62  public:
64  virtual ~DtVrfSimBackendManager();
65 
67  static DtVrfSimBackendManager& instance(makVrv::DtDe& de);
68 
69  public:
71  virtual bool backEndsPresent() const;
72 
74  virtual bool anyBackendsLoading() const;
75 
77  virtual bool anyBackendsClosing() const;
78 
80  virtual bool anyBackendsLoaded() const;
81 
83  virtual bool allBackendsLoaded() const;
84 
86  virtual bool backendLoaded(const DtSimulationAddress&) const;
87 
89  virtual bool backendSaving(const DtSimulationAddress&) const;
90 
92  virtual bool anyBackendsPlaying() const;
93 
95  virtual bool anyBackendsInControlState(int state) const;
96 
98  virtual bool allBackendsCanSimulate() const;
99 
101  virtual bool backendCanSimulate(const DtSimulationAddress&) const;
102 
104  virtual void duplicateBackendDiscovered(const DtSimulationAddress&);
105 
107  virtual double timeMultiplier() const;
108 
114 
115  virtual void removeAllBackends();
116  virtual void addBackend(const DtBackend*);
117  virtual void backendRemoved(const DtSimulationAddress&);
118  virtual void backendUpdated(const DtSimulationAddress&, const DtBackend*);
120 
121  virtual DtVrfBackendState* stateFor(const DtSimulationAddress&) const;
122 
123  virtual const DtSimulationAddress& selectedBackend() const
124  {
125  return mySelectedBackend;
126  }
127 
128  void setSelectedBackend(const DtSimulationAddress&);
129 
130  virtual int numberOfBackends() const;
131 
133  virtual void clearSelectedBackend();
134 
136  virtual double simTime() const;
137 
139  virtual double runDurationTime() const;
140 
143  virtual double timeOfDay() const;
144 
146  virtual double simStartSimTime() const;
147 
148  const DtVrfSimBackendStates& backendStates() const
149  {
150  return myBackendStates;
151  }
152 
154  virtual std::map<short, int> currentObjectCounts() const;
155 
157  virtual const std::map<short, int>& currentObjectCount(const DtSimulationAddress&) const;
158 
159  public:
161  virtual void signalWhenAllBackendsClosed();
162 
164  virtual void signalIfAllBackendsClosed();
165  boost::signal<void ()> signal_allBackendsClosed;
166 
169  virtual void signalWhenAllBackendsLoaded();
170 
173  virtual void signalIfAllBackendsLoaded();
174  boost::signal<void ()> signal_allBackendsLoaded;
175 
177  virtual void signalWhenAllBackendsSaved();
178 
180  virtual void signalIfAllBackendsSaved();
181  boost::signal<void ()> signal_allBackendsSaved;
182 
183  std::string sessionScenario() const
184  {
185  return mySessionStatus.scenarioName().c_str();
186  }
187 
188  virtual void setSessionScenario(const std::string&);
189 
190  std::string sessionGuiTerrain() const
191  {
192  return mySessionStatus.guiTerrainName().c_str();
193  }
194 
195  virtual void setSessionGuiTerrain(const std::string&);
196 
197  std::string sessionSimTerrain() const
198  {
199  return mySessionStatus.terrainName().c_str();
200  }
201 
202  const std::vector<DtFilename>& simulationModelSets() const
203  {
204  return mySessionStatus.simulationModelSets();
205  }
206 
207  virtual void setSimulationModelSets(const DtRwNLengthStringVector&);
208 
210  virtual void sessionStatusChanged(const DtSessionStatus& status);
211 
212  virtual time_t dateAndTimeOfDay() const;
213  virtual void setDateAndTimeOfDay(time_t);
214  virtual void resetDateAndTimeOfDay();
215 
216  virtual const std::map<std::string, bool> backendsLoading() const
217  {
218  return myLoadingMap;
219  }
220 
221  virtual const std::map<std::string, bool> backendsClosing() const
222  {
223  return myClosingMap;
224  }
225 
226  public:
227  boost::signal<void (const DtVrfBackendState&)> signal_frameRatesUpdated;
228  boost::signal<void (const DtVrfBackendState&)> signal_backendDiscovered;
229  boost::signal<void (const DtVrfBackendState&)> signal_backendRemoved;
230  boost::signal<void (const DtVrfBackendState&, int)> signal_backendUpdated;
231  boost::signal<void (int)> signal_sessionUpdated;
232  boost::signal<void (const DtVrfBackendState&)> signal_duplicateSimulationAddress;
233  boost::signal<void (const DtSimulationAddress& old, const DtSimulationAddress& newaddr)> signal_selectedBackendChanged;
234  boost::signal<void ()> signal_allBackendsAboutToBeRemoved;
235 
236  protected:
238  virtual void tick();
239 
241  virtual double simTimeFromBackend() const;
242 
243  virtual void updateDateAndTimeOfDay();
244  virtual void slot_dateAndTimeOfDayChanged(int year, int month, int day, int hours, int mins, int secs);
245 
246  virtual void slot_frameRatesUpdated(const DtVrfBackendState&);
247  virtual void simulationBackendRemoved(DtVrfBackendState*);
248  virtual void simulationBackendDiscovered(DtVrfBackendState*);
249  virtual void simulationBackendUpdated(DtSimulationAddress, int);
250  virtual void duplicateSimulationBackendDiscovered(DtSimulationAddress);
251  virtual void processSessionStatusChange(DtSessionStatus);
252 
253  virtual void processLoadCompleteCallback(DtSimMessage*);
254  virtual void processSaveCompleteCallback(DtSimMessage*);
255 
257  virtual void backendSaved(const std::string&);
258 
259  virtual void setBackendSaving(const DtSimulationAddress&, bool b);
260 
262  virtual void updateSessionInformation(int sessionFlags = 0);
263 
264  protected:
265  makVrv::DtBaseSimulation* mySimulation;
267  DtSimulationAddress mySelectedBackend;
271  std::map<std::string, char> myBackendsWaitingForSave;
272  std::map<std::string, bool> myAlreadyDuplicateWarned;
273  std::map<std::string, bool> myNeedToLoad;
274  std::vector<std::string> myNeedToSave;
275 
277  std::map<std::string, bool> myJustLoadedMap;
278  std::map<std::string, bool> myLoadingMap;
279  std::map<std::string, bool> myClosingMap;
280  std::map<std::string, bool> myJustClosedMap;
281 
282  double mySimTime;
287  };
288 }

Document ID: Generated on Wed Jul 29 00:55:00 EDT 2015 from SVN revision 155257
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)