VR-Forces Development_Version 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>
38 
39 #include <boost/function.hpp>
40 #include <boost/unordered_set.hpp>
41 
42 namespace makVrv
43 {
44  class DtDe;
45 }
46 
47 namespace makVrf
48 {
49  class DtVrfSelectionFilter;
50 
53  : public makVrv::DtStateViewCollection<makVrv::DtVrlinkSimulatedEntityState>
54  {
55  public:
57  : makVrv::DtStateViewCollection<makVrv::DtVrlinkSimulatedEntityState>(
58  de, makVrv::DtSimEntryUpdater::NoUpdates)
59  {
60  }
61  };
62 
67  : public makVrv::DtStateViewCollection<makVrv::DtVrlinkSimulatedBaseState>
68  {
69  public:
71  makVrv::DtStateViewCollection<makVrv::DtVrlinkSimulatedBaseState>(de, makVrv::DtSimEntryUpdater::NoUpdates)
72  {
73  }
74 
75  bool isCompatible(makVrv::DtSimObjectEntry& entry)
76  {
78  }
79  };
80 
84  {
85  public:
87  makVrv::DtStateViewCollection<DtVrfObjectDataState>(de, makVrv::DtSimEntryUpdater::NoUpdates)
88  {
89  }
90  };
91 
94  {
95  public:
97  makVrv::DtStateViewCollection<DtIffStateData>(de, makVrv::DtSimEntryUpdater::NoUpdates)
98  {
99  }
100  };
101 
104  {
105  public:
107  makVrv::DtStateViewCollection<DtVrlinkSimulatedWeatherState>(de, makVrv::DtSimEntryUpdater::NoUpdates)
108  {
109  }
110  };
111 
115  {
116  public:
118  makVrv::DtStateViewCollection<DtPropulsionNoiseStateData>(de, makVrv::DtSimEntryUpdater::NoUpdates)
119  {
120  }
121  };
122 
125  {
126  public:
128  makVrv::DtStateViewCollection<DtVrlinkEmitterSystems>(de, makVrv::DtSimEntryUpdater::NoUpdates)
129  {
130  }
131  };
132 
135  {
136  public:
138  makVrv::DtStateViewCollection<DtVrlinkActiveSonars>(de, makVrv::DtSimEntryUpdater::NoUpdates)
139  {
140  }
141  };
142 
144  class DT_DLL_VRFGUICORE DtEnvironmentStateViewCollection : public makVrv::DtStateViewCollection<DtVrlinkSimulatedEnvironmentProcess>
145  {
146  public:
148  makVrv::DtStateViewCollection<DtVrlinkSimulatedEnvironmentProcess>(de, makVrv::DtSimEntryUpdater::NoUpdates)
149  {
150  }
151  };
152 
155  {
156  public:
158  makVrv::DtStateViewCollection<DtExtendedStateData>(de, makVrv::DtSimEntryUpdater::NoUpdates)
159  {
160  }
161  };
162 
165  {
166  public:
168  makVrv::DtStateViewCollection<DtVrlinkSimulatedAggregateState>(de, makVrv::DtSimEntryUpdater::NoUpdates)
169  {
170  }
171  };
172 
175  {
176  public:
178  makVrv::DtStateViewCollection<DtSpotReportState>(de, makVrv::DtSimEntryUpdater::AnyUpdates)
179  {
180  }
181  };
182 
183 
206  {
207  public:
208  typedef boost::signal<void (const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*)> StateViewAddedOrRemovedSignal;
209 
210  public:
211 
214 
215  static DtVrfStateViewCollectionManager& instance(makVrv::DtDe& de);
216 
228 
229 
232  virtual DtBoost::shared_ptr<DtObjectDataInterface> lookupObjectData(const makVrv::DtUniqueID& id);
233 
236  virtual DtBoost::shared_ptr<DtObjectDataInterface> lookupSpotReportData(const makVrv::DtUniqueID& id);
237 
240  virtual DtBoost::shared_ptr<DtObjectDataInterface> lookupObjectData(const DtUUID&);
241 
243  virtual DtVector centerOfMass(const boost::unordered_set<DtUUID>& uuids,
244  bool ignoreEmbarked = true);
245 
248  virtual DtBoost::shared_ptr<DtObjectDataInterface> lookupSpotReportData(const std::string& name);
249 
253  template<typename T_ObjectDataInterfaceType>
254  DtBoost::shared_ptr<T_ObjectDataInterfaceType> lookupAndCastObjectData(const makVrv::DtUniqueID& id)
255  {
256  return DtObjectDataInterface::cast<T_ObjectDataInterfaceType>(lookupObjectData(id));
257  }
258 
262  template<typename T_ObjectDataInterfaceType>
263  DtBoost::shared_ptr<T_ObjectDataInterfaceType> lookupAndCastSpotReportData(const makVrv::DtUniqueID& id)
264  {
265  return DtObjectDataInterface::cast<T_ObjectDataInterfaceType>(lookupSpotReportData(id));
266  }
267 
271  template<typename T_ObjectDataInterfaceType>
272  DtBoost::shared_ptr<T_ObjectDataInterfaceType> lookupAndCastObjectData(const DtUUID& uuid)
273  {
274  return DtObjectDataInterface::cast<T_ObjectDataInterfaceType>(lookupObjectData(uuid));
275  }
276 
280  template<typename T_ObjectDataInterfaceType>
281  DtBoost::shared_ptr<T_ObjectDataInterfaceType> lookupAndCastSpotReportData(const std::string& name)
282  {
283  return DtObjectDataInterface::cast<T_ObjectDataInterfaceType>(lookupSpotReportData(name));
284  }
285 
288  virtual DtBoost::shared_ptr<DtObjectDataInterface> lookupObjectData(makVrv::DtStateView<makVrv::DtSimState>* stateView);
290 
293 
295  virtual makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* findStealthStateView(const std::string& address,
296  const std::string& markingText);
297 
299  virtual makVrv::DtStateView<DtSpotReportState>* findSpotReportStateView(const std::string& markingText);
300 
304 
307  makVrv::DtStateView<DtSpotReportState>* findSpotReportStateView(const makVrv::DtUniqueID& id)
308  {
309  if (!mySpotReportStateViewCollection->hasStateView(id))
310  {
311  return 0;
312  }
313 
314  return const_cast<makVrv::DtStateView<DtSpotReportState>*>
315  (mySpotReportStateViewCollection->findStateView(id));
316  }
317 
319  virtual void clearUUIDInformation();
320 
324  DtVrfSimulatedEntityStateViewCollection* simulatedEntityStateViewCollection()
325  {
326  return mySimulatedEntityStateView;
327  }
328 
329  DtVrlinkSimulatedBaseStateViewCollection* simulatedBaseStateViewCollection()
330  {
331  return mySimulatedBaseStateViewCollection;
332  }
333 
334  DtVrfObjectDataStateViewCollection* objectDataStateViewCollection()
335  {
336  return myObjectDataStateViewCollection;
337  }
338 
339  DtEnvironmentStateViewCollection* environmentStateViewCollection()
340  {
341  return myEnvironmentStateViewCollection;
342  }
343 
344  DtExtendedStateDataViewCollection* extendedStateDataViewCollection()
345  {
346  return myExtendedStateDataViewCollection;
347  }
348 
349  DtWeatherStateViewCollection* weatherStateViewCollection()
350  {
351  return myWeatherStateViewCollection;
352  }
353 
354  DtIffStateDataViewCollection* iffStateDataViewCollection()
355  {
356  return myIffStateDataViewCollection;
357  }
358 
359  DtPropulsionNoiseStateDataViewCollection* propulsionNoiseStateDataViewCollection()
360  {
361  return myPropulsionNoiseStateDataViewCollection;
362  }
363 
364  DtEmitterSystemStateViewCollection* emitterSystemStateViewCollection()
365  {
366  return myEmitterSystemStateViewCollection;
367  }
368 
369  DtActiveSonarStateViewCollection* activeSonarStateViewCollection()
370  {
371  return myActiveSonarStateViewCollection;
372  }
373 
374  DtSpotReportStateViewCollection* spotReportStateViewCollection()
375  {
376  return mySpotReportStateViewCollection;
377  }
378 
379  DtAggregateStateViewCollection* aggregateStateViewCollection()
380  {
381  return myAggregateStateViewCollection;
382  }
383 
384  makVrv::DtVrlinkSensorFieldsOfViewStateViewCollection* sensorFieldOfViewStateViewCollection()
385  {
386  return mySensorFieldOfViewStateViewCollection;
387  }
389 
392  makVrv::DtUniqueID parentId(const makVrv::DtUniqueID&) const;
393 
394  makVrv::DtUniqueID displayIdFromSimId(const makVrv::DtUniqueID& id, int modelSet = -1) const;
395  makVrv::DtElementData::SceneObjectIdList displayIdsFromSimId(const makVrv::DtUniqueID& id, int modelSet = -1) const;
396 
398  makVrv::DtUniqueID simIdFromDisplayId(const makVrv::DtUniqueID& id) const;
399 
401  const std::map<makVrv::DtUniqueID, const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*>&
402  stealthStates() const
403  {
404  return myStealthStates;
405  }
406 
408  virtual std::string entityName(const makVrv::DtUniqueID simId) const;
409 
411  virtual DtUUID objectUUID(const makVrv::DtUniqueID simId) const;
412 
414  virtual std::string overlayName(const makVrv::DtUniqueID simId) const;
415 
417  virtual makVrv::DtElementEntry::ElementType elementType(const makVrv::DtElementID&) const;
418 
420  virtual makVrv::DtSimEntryUpdater::UpdateRate updateRateFor(const makVrv::DtBaseStateView* state) const;
421 
422  typedef std::vector<makVrv::DtSimEntryUpdater::UpdateRate> UpdateRates;
423  virtual makVrv::DtSimEntryUpdater::UpdateRate minimumRate(const UpdateRates&) const;
424  virtual makVrv::DtSimEntryUpdater::UpdateRate maximumRate(const UpdateRates&) const;
425 
429  virtual void setUpdateRate(makVrv::DtSimEntry*, makVrv::DtSimEntryUpdater::UpdateRate,
430  makVrv::DtBaseStateView* state);
431 
433  virtual void forceUpdateForRelevantInformation(makVrv::DtUniqueID id);
434 
437  virtual StateViewAddedOrRemovedSignal& signalWhenObjectAdded(const DtVrfSelectionFilter&);
438  virtual void processObjectAddedCallbacks(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
439  virtual void removeAddedSignalReference(const DtVrfSelectionFilter&);
440  virtual void waiting();
441 
442  virtual StateViewAddedOrRemovedSignal& signalWhenObjectRemoved(const DtVrfSelectionFilter&);
443  virtual void removeRemovalSignalReference(const DtVrfSelectionFilter&);
444 
445  virtual void processObjectRemovedCallbacks(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
446 
447  virtual void slot_simStateAdded(makVrv::DtSimObjectEntry& e);
448  virtual void slot_simStateToBeRemoved(makVrv::DtSimObjectEntry& e, makVrv::DtSimState&);
449 
450  virtual std::string lookupNameById(makVrv::DtUniqueID id);
451  virtual makVrv::DtUniqueID lookupIdByUUID(const DtUUID&);
452 
455  virtual void signalWhenAllObjectsDiscovered(const std::map<short, int>&);
456 
459 
460  virtual DtUUID uuidFromState(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*) const;
461  virtual DtUUID uuidFromState(const makVrv::DtVrlinkSimulatedBaseState*) const;
462 
464  boost::signal <void (const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*)> signal_stateAdded;
465  boost::signal <void (const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*)> signal_stateRemoved;
466 
469  boost::signal <void ()> signal_allObjectsDiscovered;
470 
472  boost::signal <void (const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*)> signal_nameChanged;
473 
474  const std::set<makVrv::DtUniqueID>& tacticalGraphicElements() const;
475 
476  protected:
477  virtual void slot_onAttributesChanged( const makVrv::DtElementData::EntryAttributesList& signalList );
478 
479  protected:
494 
495  std::map<short, int> myWaitingForDiscovery;
496 
497  typedef boost::unordered_map<makVrv::DtBaseStateView*, UpdateRates> UpdateRateMap;
498 
500 
503  {
509  };
510 
511  typedef std::vector<StateViewAddedOrRemovedStruct> StateViewAddedOrRemovedCallbacks;
513 
515  std::map<makVrv::DtElementID, bool> myWaiting;
516 
517  typedef boost::unordered_map<DtUUID, makVrv::DtUniqueID> UUIDToIdMap;
518  typedef boost::unordered_map<makVrv::DtUniqueID, DtUUID> IdToUUIDMap;
519 
522 
523  std::map<makVrv::DtUniqueID, const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*> myStealthStates;
524  std::string myStealthType;
525 
526  std::set<makVrv::DtUniqueID> myTacticalGraphicElements;
527  };
528 
529  template<typename T> T findStateFor(makVrv::DtSimEntry* entry)
530  {
531  makVrv::DtSimEntry::SimStateVector::const_iterator pos = entry->simStates().begin();
532  makVrv::DtSimEntry::SimStateVector::const_iterator endPos = entry->simStates().end();
533  for(; pos != endPos; ++pos)
534  {
535  T tState = dynamic_cast<T>(*pos);
536  if(tState)
537  {
538  return tState;
539  }
540  }
541 
542  return 0;
543  }
544 
546  DT_DLL_VRFGUICORE std::vector<DtUUID> convertMarkingTextVectorToUUIDVector(const std::vector<DtString>& v);
547  DT_DLL_VRFGUICORE std::vector<DtUUID> convertMarkingTextVectorToUUIDVector(const std::vector<std::string>& v);
548 
550  DT_DLL_VRFGUICORE std::vector<std::string> convertUUIDVectorToUUIDStringVector(const std::vector<DtUUID>& v);
551 
553  DT_DLL_VRFGUICORE std::vector<std::string> convertUUIDVectorToMarkingTextVector(const std::vector<DtUUID>& v);
554 }

Document ID: Generated on Mon Jul 4 01:00:18 EDT 2016 from SVN revision 166489
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)