VR-Forces Development_Version 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 const int DtSessionScenarioImporting = 0x00000200;
48 const int DtSessionScenarioJustImported = 0x00000400;
51 const int DtSessionChangedScenarioFilename = 0x00002000;
52 
53 namespace makVrf
54 {
55  class DtVrfBackEndState;
56 
63  {
64  public:
65  typedef std::map<std::string, DtVrfBackendState*> DtVrfSimBackendStates;
66 
67  public:
69  virtual ~DtVrfSimBackendManager();
70 
72  static DtVrfSimBackendManager& instance(makVrv::DtDe& de);
73 
74  public:
76  virtual bool backEndsPresent() const;
77 
79  virtual bool anyBackendsLoading() const;
80 
82  virtual bool anyBackendsCreatingSimulationObjectGroup() const;
83 
85  virtual bool anyBackendsClosing() const;
86 
88  virtual bool anyBackendsLoaded() const;
89 
91  virtual bool allBackendsLoaded() const;
92 
94  virtual bool backendLoaded(const DtSimulationAddress&) const;
95 
97  virtual bool backendSaving(const DtSimulationAddress&) const;
98 
100  virtual bool anyBackendsPlaying() const;
101 
103  virtual bool anyBackendsInControlState(int state) const;
104 
106  virtual bool allBackendsCanSimulate() const;
107 
109  virtual bool backendCanSimulate(const DtSimulationAddress&) const;
110 
112  virtual void duplicateBackendDiscovered(const DtSimulationAddress&);
113 
115  virtual double timeMultiplier() const;
116 
122 
123  virtual void removeAllBackends();
124  virtual void addBackend(const DtBackend*);
125  virtual void backendRemoved(const DtSimulationAddress&);
126  virtual void backendUpdated(const DtSimulationAddress&, const DtBackend*);
128 
129  virtual DtVrfBackendState* stateFor(const DtSimulationAddress&) const;
130 
131  virtual const DtSimulationAddress& selectedBackend() const
132  {
133  return mySelectedBackend;
134  }
135 
136  void setSelectedBackend(const DtSimulationAddress&);
137 
138  virtual int numberOfBackends() const;
139 
141  virtual void clearSelectedBackend();
142 
144  virtual double simTime() const;
145 
147  virtual double runDurationTime() const;
148 
151  virtual double timeOfDay() const;
152 
154  virtual double simStartSimTime() const;
155 
156  const DtVrfSimBackendStates& backendStates() const
157  {
158  return myBackendStates;
159  }
160 
162  virtual std::map<short, int> currentObjectCounts() const;
163 
165  virtual const std::map<short, int>& currentObjectCount(const DtSimulationAddress&) const;
166 
167  public:
169  virtual void signalWhenAllBackendsClosed();
170 
172  virtual void signalIfAllBackendsClosed();
173  boost::signal<void ()> signal_allBackendsClosed;
174 
177  virtual void signalWhenAllBackendsLoaded();
178 
181  virtual void signalIfAllBackendsLoaded();
182  boost::signal<void ()> signal_allBackendsLoaded;
183 
185  virtual void signalWhenAllBackendsSaved();
186 
188  virtual void signalIfAllBackendsSaved();
189  boost::signal<void ()> signal_allBackendsSaved;
190 
191  std::string sessionScenario() const
192  {
193  return mySessionStatus.scenarioName().c_str();
194  }
195 
196  virtual void setSessionScenario(const std::string&);
197 
198  std::string sessionScenarioFilename() const
199  {
200  return mySessionStatus.scenarioFilename().c_str();
201  }
202 
203  virtual void setSessionScenarioFilename(const std::string&);
204 
205  std::string sessionGuiTerrain() const
206  {
207  return mySessionStatus.guiTerrainName().c_str();
208  }
209 
210  virtual void setSessionGuiTerrain(const std::string&);
211 
212  std::string sessionSimTerrain() const
213  {
214  return mySessionStatus.terrainName().c_str();
215  }
216 
217  const std::vector<DtFilename>& simulationModelSets() const
218  {
219  return mySessionStatus.simulationModelSets();
220  }
221 
222  virtual void setSimulationModelSets(const DtRwNLengthStringVector&);
223 
225  virtual void sessionStatusChanged(const DtSessionStatus& status);
226 
227  virtual time_t dateAndTimeOfDay() const;
228  virtual void setDateAndTimeOfDay(time_t);
229  virtual void resetDateAndTimeOfDay();
230 
231  virtual const std::map<std::string, bool> backendsLoading() const
232  {
233  return myLoadingMap;
234  }
235 
236  virtual const std::map<std::string, bool> backendsClosing() const
237  {
238  return myClosingMap;
239  }
240 
241  public:
242  boost::signal<void (const DtVrfBackendState&)> signal_frameRatesUpdated;
243  boost::signal<void (const DtVrfBackendState&)> signal_backendDiscovered;
244  boost::signal<void (const DtVrfBackendState&)> signal_backendRemoved;
245  boost::signal<void (const DtVrfBackendState&, int)> signal_backendUpdated;
246  boost::signal<void (int)> signal_sessionUpdated;
247  boost::signal<void (const DtVrfBackendState&)> signal_duplicateSimulationAddress;
248  boost::signal<void (const DtSimulationAddress& old, const DtSimulationAddress& newaddr)> signal_selectedBackendChanged;
249  boost::signal<void ()> signal_allBackendsAboutToBeRemoved;
250 
251  protected:
253  virtual void tick();
254 
256  virtual double simTimeFromBackend() const;
257 
258  virtual void updateDateAndTimeOfDay();
259  virtual void slot_dateAndTimeOfDayChanged(int year, int month, int day, int hours, int mins, int secs);
260 
261  virtual void slot_frameRatesUpdated(const DtVrfBackendState&);
262  virtual void simulationBackendRemoved(DtVrfBackendState*);
263  virtual void simulationBackendDiscovered(DtVrfBackendState*);
264  virtual void simulationBackendUpdated(DtSimulationAddress, int);
265  virtual void duplicateSimulationBackendDiscovered(DtSimulationAddress);
266  virtual void processSessionStatusChange(DtSessionStatus);
267 
268  virtual void processLoadCompleteCallback(DtSimMessage*);
269  virtual void processSaveCompleteCallback(DtSimMessage*);
270 
272  virtual void backendSaved(const std::string&);
273 
274  virtual void setBackendSaving(const DtSimulationAddress&, bool b);
275 
277  virtual void updateSessionInformation(int sessionFlags = 0);
278 
279  protected:
280  makVrv::DtBaseSimulation* mySimulation;
282  DtSimulationAddress mySelectedBackend;
286  std::map<std::string, char> myBackendsWaitingForSave;
287  std::map<std::string, bool> myAlreadyDuplicateWarned;
288  std::map<std::string, bool> myNeedToLoad;
289  std::vector<std::string> myNeedToSave;
290 
292  std::map<std::string, bool> myJustLoadedMap;
293  std::map<std::string, bool> myLoadingMap;
294  std::map<std::string, bool> myClosingMap;
295  std::map<std::string, bool> myJustClosedMap;
296  std::map<std::string, bool> myImportingMap;
297  std::map<std::string, bool> myCreatingSimulationObjectGroupMap;
298 
299  double mySimTime;
304  };
305 }

Document ID: Generated on Tue Mar 8 22:13:38 EST 2016 from SVN revision 162938
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)