VR-Forces 4.3.1 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
vrfStateViewCollectionManager.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 <vlutil/vlExceptions.h>
14 
15 #include <vrfGuiCore/vrfGuiCore.h>
30 #include <vrvUtil/signalslib.h>
31 
32 #include <vrvCore/DtSimData.h>
33 #include <vrvCore/DtElementEntry.h>
35 #include <vrvCore/DtEntityState.h>
36 #include <vrvCore/DtElementData.h>
37 
38 #include <boost/function.hpp>
39 
40 namespace makVrv
41 {
42  class DtDe;
43 }
44 
45 namespace makVrf
46 {
47  class DtVrfSelectionFilter;
48 
51  : public makVrv::DtStateViewCollection<makVrv::DtVrlinkSimulatedEntityState>
52  {
53  public:
55  : makVrv::DtStateViewCollection<makVrv::DtVrlinkSimulatedEntityState>(
56  de, makVrv::DtSimEntryUpdater::NoUpdates)
57  {
58  }
59  };
60 
65  : public makVrv::DtStateViewCollection<makVrv::DtVrlinkSimulatedBaseState>
66  {
67  public:
69  makVrv::DtStateViewCollection<makVrv::DtVrlinkSimulatedBaseState>(de, makVrv::DtSimEntryUpdater::NoUpdates)
70  {
71  }
72 
73  bool isCompatible(makVrv::DtSimObjectEntry& entry)
74  {
76  }
77  };
78 
82  {
83  public:
85  makVrv::DtStateViewCollection<DtVrfObjectDataState>(de, makVrv::DtSimEntryUpdater::NoUpdates)
86  {
87  }
88  };
89 
92  {
93  public:
95  makVrv::DtStateViewCollection<DtIffStateData>(de, makVrv::DtSimEntryUpdater::NoUpdates)
96  {
97  }
98  };
99 
102  {
103  public:
105  makVrv::DtStateViewCollection<DtVrlinkSimulatedWeatherState>(de, makVrv::DtSimEntryUpdater::NoUpdates)
106  {
107  }
108  };
109 
113  {
114  public:
116  makVrv::DtStateViewCollection<DtPropulsionNoiseStateData>(de, makVrv::DtSimEntryUpdater::NoUpdates)
117  {
118  }
119  };
120 
123  {
124  public:
126  makVrv::DtStateViewCollection<DtVrlinkEmitterSystems>(de, makVrv::DtSimEntryUpdater::NoUpdates)
127  {
128  }
129  };
130 
133  {
134  public:
136  makVrv::DtStateViewCollection<DtVrlinkActiveSonars>(de, makVrv::DtSimEntryUpdater::NoUpdates)
137  {
138  }
139  };
140 
142  class DT_DLL_VRFGUICORE DtEnvironmentStateViewCollection : public makVrv::DtStateViewCollection<DtVrlinkSimulatedEnvironmentProcess>
143  {
144  public:
146  makVrv::DtStateViewCollection<DtVrlinkSimulatedEnvironmentProcess>(de, makVrv::DtSimEntryUpdater::NoUpdates)
147  {
148  }
149  };
150 
153  {
154  public:
156  makVrv::DtStateViewCollection<DtExtendedStateData>(de, makVrv::DtSimEntryUpdater::NoUpdates)
157  {
158  }
159  };
160 
163  {
164  public:
166  makVrv::DtStateViewCollection<DtVrlinkSimulatedAggregateState>(de, makVrv::DtSimEntryUpdater::NoUpdates)
167  {
168  }
169  };
170 
173  {
174  public:
176  makVrv::DtStateViewCollection<DtSpotReportState>(de, makVrv::DtSimEntryUpdater::AnyUpdates)
177  {
178  }
179  };
180 
181 
204  {
205  public:
206  typedef boost::signal<void (const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*)> StateViewAddedOrRemovedSignal;
207 
208  public:
209 
212 
213  static DtVrfStateViewCollectionManager& instance(makVrv::DtDe& de);
214 
226 
227 
230  virtual DtBoost::shared_ptr<DtObjectDataInterface> lookupObjectData(const makVrv::DtUniqueID& id);
231 
234  virtual DtBoost::shared_ptr<DtObjectDataInterface> lookupSpotReportData(const makVrv::DtUniqueID& id);
235 
238  virtual DtBoost::shared_ptr<DtObjectDataInterface> lookupObjectData(const std::string& name);
239 
242  virtual DtBoost::shared_ptr<DtObjectDataInterface> lookupSpotReportData(const std::string& name);
243 
247  template<typename T_ObjectDataInterfaceType>
248  DtBoost::shared_ptr<T_ObjectDataInterfaceType> lookupAndCastObjectData(const makVrv::DtUniqueID& id)
249  {
250  return DtObjectDataInterface::cast<T_ObjectDataInterfaceType>(lookupObjectData(id));
251  }
252 
256  template<typename T_ObjectDataInterfaceType>
257  DtBoost::shared_ptr<T_ObjectDataInterfaceType> lookupAndCastSpotReportData(const makVrv::DtUniqueID& id)
258  {
259  return DtObjectDataInterface::cast<T_ObjectDataInterfaceType>(lookupSpotReportData(id));
260  }
261 
265  template<typename T_ObjectDataInterfaceType>
266  DtBoost::shared_ptr<T_ObjectDataInterfaceType> lookupAndCastObjectData(const std::string& name)
267  {
268  return DtObjectDataInterface::cast<T_ObjectDataInterfaceType>(lookupObjectData(name));
269  }
270 
274  template<typename T_ObjectDataInterfaceType>
275  DtBoost::shared_ptr<T_ObjectDataInterfaceType> lookupAndCastSpotReportData(const std::string& name)
276  {
277  return DtObjectDataInterface::cast<T_ObjectDataInterfaceType>(lookupSpotReportData(name));
278  }
279 
282  virtual DtBoost::shared_ptr<DtObjectDataInterface> lookupObjectData(makVrv::DtStateView<makVrv::DtSimState>* stateView);
284 
286  makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* findStateView(const std::string& markingText);
287 
289  makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* findStealthStateView(const std::string& address,
290  const std::string& markingText);
291 
293  makVrv::DtStateView<DtSpotReportState>* findSpotReportStateView(const std::string& markingText);
294 
298 
301  makVrv::DtStateView<DtSpotReportState>* findSpotReportStateView(const makVrv::DtUniqueID& id)
302  {
303  if (!mySpotReportStateViewCollection->hasStateView(id))
304  {
305  return 0;
306  }
307 
308  return const_cast<makVrv::DtStateView<DtSpotReportState>*>
309  (mySpotReportStateViewCollection->findStateView(id));
310  }
311 
315  DtVrfSimulatedEntityStateViewCollection* simulatedEntityStateViewCollection()
316  {
317  return mySimulatedEntityStateView;
318  }
319 
320  DtVrlinkSimulatedBaseStateViewCollection* simulatedBaseStateViewCollection()
321  {
322  return mySimulatedBaseStateViewCollection;
323  }
324 
325  DtVrfObjectDataStateViewCollection* objectDataStateViewCollection()
326  {
327  return myObjectDataStateViewCollection;
328  }
329 
330  DtEnvironmentStateViewCollection* environmentStateViewCollection()
331  {
332  return myEnvironmentStateViewCollection;
333  }
334 
335  DtExtendedStateDataViewCollection* extendedStateDataViewCollection()
336  {
337  return myExtendedStateDataViewCollection;
338  }
339 
340  DtWeatherStateViewCollection* weatherStateViewCollection()
341  {
342  return myWeatherStateViewCollection;
343  }
344 
345  DtIffStateDataViewCollection* iffStateDataViewCollection()
346  {
347  return myIffStateDataViewCollection;
348  }
349 
350  DtPropulsionNoiseStateDataViewCollection* propulsionNoiseStateDataViewCollection()
351  {
352  return myPropulsionNoiseStateDataViewCollection;
353  }
354 
355  DtEmitterSystemStateViewCollection* emitterSystemStateViewCollection()
356  {
357  return myEmitterSystemStateViewCollection;
358  }
359 
360  DtActiveSonarStateViewCollection* activeSonarStateViewCollection()
361  {
362  return myActiveSonarStateViewCollection;
363  }
364 
365  DtSpotReportStateViewCollection* spotReportStateViewCollection()
366  {
367  return mySpotReportStateViewCollection;
368  }
369 
370  DtAggregateStateViewCollection* aggregateStateViewCollection()
371  {
372  return myAggregateStateViewCollection;
373  }
375 
378  makVrv::DtUniqueID parentId(const makVrv::DtUniqueID&) const;
379 
380  makVrv::DtUniqueID displayIdFromSimId(const makVrv::DtUniqueID& id, int modelSet = -1) const;
381  makVrv::DtElementData::SceneObjectIdList displayIdsFromSimId(const makVrv::DtUniqueID& id, int modelSet = -1) const;
382 
384  makVrv::DtUniqueID simIdFromDisplayId(const makVrv::DtUniqueID& id) const;
385 
387  const std::map<makVrv::DtUniqueID, const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*>&
388  stealthStates() const
389  {
390  return myStealthStates;
391  }
392 
394  virtual std::string entityName(const makVrv::DtUniqueID simId) const;
395 
397  virtual std::string overlayName(const makVrv::DtUniqueID simId) const;
398 
400  virtual makVrv::DtElementEntry::ElementType elementType(const makVrv::DtElementID&) const;
401 
403  virtual makVrv::DtSimEntryUpdater::UpdateRate updateRateFor(const makVrv::DtBaseStateView* state) const;
404 
405  typedef std::vector<makVrv::DtSimEntryUpdater::UpdateRate> UpdateRates;
406  virtual makVrv::DtSimEntryUpdater::UpdateRate minimumRate(const UpdateRates&) const;
407  virtual makVrv::DtSimEntryUpdater::UpdateRate maximumRate(const UpdateRates&) const;
408 
412  virtual void setUpdateRate(makVrv::DtSimEntry*, makVrv::DtSimEntryUpdater::UpdateRate,
413  makVrv::DtBaseStateView* state);
414 
416  virtual void forceUpdateForRelevantInformation(makVrv::DtUniqueID id);
417 
420  virtual StateViewAddedOrRemovedSignal& signalWhenObjectAdded(const DtVrfSelectionFilter&);
421  virtual void processObjectAddedCallbacks(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
422  virtual void removeAddedSignalReference(const DtVrfSelectionFilter&);
423  virtual void waiting();
424 
425  virtual StateViewAddedOrRemovedSignal& signalWhenObjectRemoved(const DtVrfSelectionFilter&);
426  virtual void removeRemovalSignalReference(const DtVrfSelectionFilter&);
427 
428  virtual void processObjectRemovedCallbacks(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
429 
430  virtual void slot_simStateAdded(makVrv::DtSimObjectEntry& e);
431  virtual void slot_simStateToBeRemoved(makVrv::DtSimObjectEntry& e, makVrv::DtSimState&);
432 
433  virtual std::string lookupNameById(makVrv::DtUniqueID id);
434  virtual makVrv::DtUniqueID lookupIdByName(std::string name);
435 
438  virtual void signalWhenAllObjectsDiscovered(const std::map<short, int>&);
439 
441  boost::signal <void (const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*)> signal_stateAdded;
442  boost::signal <void (const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*)> signal_stateRemoved;
443 
446  boost::signal <void ()> signal_allObjectsDiscovered;
447 
448  protected:
449  virtual void slot_onAttributesChanged( const makVrv::DtElementData::EntryAttributesList& signalList );
450 
451  protected:
465 
466  std::map<short, int> myWaitingForDiscovery;
467 
468  typedef boost::unordered_map<makVrv::DtBaseStateView*, UpdateRates> UpdateRateMap;
469 
471 
474  {
480  };
481 
482  typedef std::vector<StateViewAddedOrRemovedStruct> StateViewAddedOrRemovedCallbacks;
484 
486  std::map<makVrv::DtElementID, bool> myWaiting;
487 
488  typedef std::map<std::string, makVrv::DtUniqueID> NameToIdMap;
489  typedef std::map<makVrv::DtUniqueID, std::string> IdToNameMap;
490 
493 
494  std::map<makVrv::DtUniqueID, const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*> myStealthStates;
495  std::string myStealthType;
496  };
497 
498  template<typename T> T findStateFor(makVrv::DtSimEntry* entry)
499  {
500  makVrv::DtSimEntry::SimStateVector::const_iterator pos = entry->simStates().begin();
501  makVrv::DtSimEntry::SimStateVector::const_iterator endPos = entry->simStates().end();
502  for(; pos != endPos; ++pos)
503  {
504  T tState = dynamic_cast<T>(*pos);
505  if(tState)
506  {
507  return tState;
508  }
509  }
510 
511  return 0;
512  }
513 }

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)