VR-Forces 4.5 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 const int DtSessionScenarioJustRolledBack = 0x00004000;
53 const int DtSessionScenarioRollingBack = 0x00008000;
54 const int DtSessionSimulationStateChanged = 0x00010000;
55 
56 namespace makVrf
57 {
58  class DtVrfBackEndState;
59 
66  {
67  public:
68  typedef std::map<std::string, DtVrfBackendState*> DtVrfSimBackendStates;
69 
70  public:
72  virtual ~DtVrfSimBackendManager();
73 
75  static DtVrfSimBackendManager& instance(makVrv::DtDe& de);
76 
77  public:
79  virtual bool backEndsPresent() const;
80 
82  virtual bool anyBackendsLoading() const;
83 
85  virtual bool anyBackendsCreatingSimulationObjectGroup() const;
86 
88  virtual bool anyBackendsClosing() const;
89 
91  virtual bool anyBackendsLoaded() const;
92 
94  virtual bool allBackendsLoaded() const;
95 
97  virtual bool backendLoaded(const DtSimulationAddress&) const;
98 
100  virtual bool backendSaving(const DtSimulationAddress&) const;
101 
103  virtual bool anyBackendsPlaying() const;
104 
106  virtual bool anyBackendsInControlState(int state) const;
107 
109  virtual bool allBackendsCanSimulate() const;
110 
112  virtual bool anyBackendCanSimulate() const;
113 
115  virtual bool backendCanSimulate(const DtSimulationAddress&) const;
116 
118  virtual void duplicateBackendDiscovered(const DtSimulationAddress&);
119 
121  virtual double timeMultiplier() const;
122 
128 
129  virtual void removeAllBackends();
130  virtual void addBackend(const DtBackend*);
131  virtual void backendRemoved(const DtSimulationAddress&);
132  virtual void backendUpdated(const DtSimulationAddress&, const DtBackend*);
134 
135  virtual DtVrfBackendState* stateFor(const DtSimulationAddress&) const;
136 
137  virtual const DtSimulationAddress& selectedBackend() const
138  {
139  return mySelectedBackend;
140  }
141 
142  void setSelectedBackend(const DtSimulationAddress&);
143 
145  virtual void simulationAddresses(std::set<std::string>&);
146 
147  virtual int numberOfBackends() const;
148 
150  virtual void clearSelectedBackend();
151 
153  virtual DtVrfBackendState* firstTimeBackend() const;
154 
156  virtual double simTime() const;
157 
159  virtual double runDurationTime() const;
160 
162  virtual int scenarioRunId() const;
163 
166  virtual double timeOfDay() const;
167 
169  virtual double simStartSimTime() const;
170 
172  const DtVrfSimBackendStates& backendStates() const
173  {
174  return myBackendStates;
175  }
176 
178  const DtVrfSimBackendStates& allBackendStates() const
179  {
180  return myAllBackendStates;
181  }
182 
184  virtual std::map<short, int> currentObjectCounts() const;
185 
187  virtual const std::map<short, int>& currentObjectCount(const DtSimulationAddress&) const;
188 
189  public:
191  virtual void signalWhenAllBackendsClosed();
192 
194  virtual void signalIfAllBackendsClosed();
195  boost::signal<void ()> signal_allBackendsClosed;
196 
199  virtual void signalWhenAllBackendsLoaded();
200 
203  virtual void signalIfAllBackendsLoaded();
204  boost::signal<void ()> signal_allBackendsLoaded;
205 
207  virtual void signalWhenAllBackendsSaved();
208 
210  virtual void signalIfAllBackendsSaved(bool checkpointSave);
211  boost::signal<void (bool)> signal_allBackendsSaved;
212 
213  std::string sessionScenario() const
214  {
215  return mySessionStatus.scenarioName().c_str();
216  }
217 
218  virtual void setSessionScenario(const std::string&);
219 
220  std::string sessionScenarioFilename() const
221  {
222  return mySessionStatus.scenarioFilename().c_str();
223  }
224 
225  virtual void setSessionScenarioFilename(const std::string&);
226 
227  std::string sessionGuiTerrain() const
228  {
229  return mySessionStatus.guiTerrainName().c_str();
230  }
231 
232  virtual void setSessionGuiTerrain(const std::string&);
233 
234  std::string sessionSimTerrain() const
235  {
236  return mySessionStatus.terrainName().c_str();
237  }
238 
239  const std::vector<DtFilename>& simulationModelSets() const
240  {
241  return mySessionStatus.simulationModelSets();
242  }
243 
244  virtual void setSimulationModelSets(const DtRwNLengthStringVector&);
245 
247  virtual void sessionStatusChanged(const DtSessionStatus& status);
248 
249  virtual time_t dateAndTimeOfDay() const;
250  virtual void setDateAndTimeOfDay(time_t);
251  virtual void resetDateAndTimeOfDay();
252 
253  virtual const std::map<std::string, bool> backendsLoading() const
254  {
255  return myLoadingMap;
256  }
257 
258  virtual const std::map<std::string, bool> backendsClosing() const
259  {
260  return myClosingMap;
261  }
262 
263  public:
264  boost::signal<void (const DtVrfBackendState&)> signal_frameRatesUpdated;
265  boost::signal<void (const DtVrfBackendState&)> signal_backendDiscovered;
266  boost::signal<void (const DtVrfBackendState&)> signal_nonSimulationBackendDiscovered;
267  boost::signal<void (const DtVrfBackendState&)> signal_backendRemoved;
268  boost::signal<void (const DtVrfBackendState&)> signal_nonSimulationBackenRemoved;
269  boost::signal<void (const DtVrfBackendState&, int)> signal_backendUpdated;
270  boost::signal<void (int)> signal_sessionUpdated;
271  boost::signal<void (const DtVrfBackendState&)> signal_duplicateSimulationAddress;
272  boost::signal<void (const DtSimulationAddress& old, const DtSimulationAddress& newaddr)> signal_selectedBackendChanged;
273  boost::signal<void ()> signal_allBackendsAboutToBeRemoved;
274 
275  protected:
277  virtual void tick();
278 
280  virtual double simTimeFromBackend() const;
281 
282  virtual void updateDateAndTimeOfDay();
283  virtual void slot_dateAndTimeOfDayChanged(int year, int month, int day, int hours, int mins, int secs);
284 
285  virtual void slot_frameRatesUpdated(const DtVrfBackendState&);
286  virtual void simulationBackendRemoved(DtVrfBackendState*);
287  virtual void simulationBackendDiscovered(DtVrfBackendState*);
288  virtual void simulationBackendUpdated(DtSimulationAddress, int);
289  virtual void duplicateSimulationBackendDiscovered(DtSimulationAddress);
290  virtual void processSessionStatusChange(DtSessionStatus);
291 
292  virtual void processLoadCompleteCallback(DtSimMessage*);
293  virtual void processSaveCompleteCallback(DtSimMessage*);
294 
296  virtual void backendSaved(const std::string&, bool checkpointSave);
297 
298  virtual void setBackendSaving(const DtSimulationAddress&, bool b);
299 
301  virtual void updateSessionInformation(int sessionFlags = 0);
302 
304  virtual void clear();
305 
306  protected:
307  makVrv::DtBaseSimulation* mySimulation;
310  DtSimulationAddress mySelectedBackend;
314  std::map<std::string, char> myBackendsWaitingForSave;
315  std::map<std::string, bool> myAlreadyDuplicateWarned;
316  std::map<std::string, bool> myNeedToLoad;
317  std::set<std::string> myNeedToSave;
318 
320  std::map<std::string, bool> myJustLoadedMap;
321  std::map<std::string, bool> myLoadingMap;
322  std::map<std::string, bool> myClosingMap;
323  std::map<std::string, bool> myJustClosedMap;
324  std::map<std::string, bool> myJustRolledBackMap;
325  std::map<std::string, bool> myRollingBackMap;
326  std::map<std::string, bool> myImportingMap;
327  std::map<std::string, bool> myCreatingSimulationObjectGroupMap;
328 
329  double mySimTime;
335  };
336 }

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)