VR-Forces 4.5 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  {
54  public:
56  DtStateViewMarkingTextProvider(const DtStateViewMarkingTextProvider& orig) : myStateView(orig.myStateView) {};
58  virtual DtString markingText() { return myStateView->state().myMarkingText.c_str(); };
59  virtual DtUUIDMarkingTextProvider* clone() const { return new DtStateViewMarkingTextProvider(*this); };
60 
61  operator DtString () { return markingText(); };
62 
63  protected:
65  };
66 
69  : public makVrv::DtStateViewCollection<makVrv::DtVrlinkSimulatedEntityState>
70  {
71  public:
73  : makVrv::DtStateViewCollection<makVrv::DtVrlinkSimulatedEntityState>(
74  de, makVrv::DtSimEntryUpdater::NoUpdates)
75  {
76  }
77  };
78 
83  : public makVrv::DtStateViewCollection<makVrv::DtVrlinkSimulatedBaseState>
84  {
85  public:
87  makVrv::DtStateViewCollection<makVrv::DtVrlinkSimulatedBaseState>(de, makVrv::DtSimEntryUpdater::NoUpdates)
88  {
89  }
90 
91  bool isCompatible(makVrv::DtSimObjectEntry& entry)
92  {
94  }
95  };
96 
100  {
101  public:
103  makVrv::DtStateViewCollection<DtVrfObjectDataState>(de, makVrv::DtSimEntryUpdater::NoUpdates)
104  {
105  }
106  };
107 
110  {
111  public:
113  makVrv::DtStateViewCollection<DtIffStateData>(de, makVrv::DtSimEntryUpdater::NoUpdates)
114  {
115  }
116  };
117 
120  {
121  public:
123  makVrv::DtStateViewCollection<DtVrlinkSimulatedWeatherState>(de, makVrv::DtSimEntryUpdater::NoUpdates)
124  {
125  }
126  };
127 
131  {
132  public:
134  makVrv::DtStateViewCollection<DtPropulsionNoiseStateData>(de, makVrv::DtSimEntryUpdater::NoUpdates)
135  {
136  }
137  };
138 
141  {
142  public:
144  makVrv::DtStateViewCollection<DtVrlinkEmitterSystems>(de, makVrv::DtSimEntryUpdater::NoUpdates)
145  {
146  }
147  };
148 
151  {
152  public:
154  makVrv::DtStateViewCollection<DtVrlinkActiveSonars>(de, makVrv::DtSimEntryUpdater::NoUpdates)
155  {
156  }
157  };
158 
160  class DT_DLL_VRFGUICORE DtEnvironmentStateViewCollection : public makVrv::DtStateViewCollection<DtVrlinkSimulatedEnvironmentProcess>
161  {
162  public:
164  makVrv::DtStateViewCollection<DtVrlinkSimulatedEnvironmentProcess>(de, makVrv::DtSimEntryUpdater::NoUpdates)
165  {
166  }
167  };
168 
171  {
172  public:
174  makVrv::DtStateViewCollection<DtExtendedStateData>(de, makVrv::DtSimEntryUpdater::NoUpdates)
175  {
176  }
177  };
178 
181  {
182  public:
184  makVrv::DtStateViewCollection<DtVrlinkSimulatedAggregateState>(de, makVrv::DtSimEntryUpdater::NoUpdates)
185  {
186  }
187  };
188 
191  {
192  public:
194  makVrv::DtStateViewCollection<DtSpotReportState>(de, makVrv::DtSimEntryUpdater::AnyUpdates)
195  {
196  }
197  };
198 
199 
222  {
223  public:
224  typedef boost::signal<void (const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*)> StateViewAddedOrRemovedSignal;
225 
226  public:
227 
230 
231  static DtVrfStateViewCollectionManager& instance(makVrv::DtDe& de);
232 
244 
245 
248  virtual DtBoost::shared_ptr<DtObjectDataInterface> lookupObjectData(const makVrv::DtUniqueID& id);
249 
252  virtual DtBoost::shared_ptr<DtObjectDataInterface> lookupSpotReportData(const makVrv::DtUniqueID& id);
253 
256  virtual DtBoost::shared_ptr<DtObjectDataInterface> lookupObjectData(const DtUUID&);
257 
259  virtual DtVector centerOfMass(const boost::unordered_set<DtUUID>& uuids,
260  bool ignoreEmbarked = true);
261 
264  virtual DtBoost::shared_ptr<DtObjectDataInterface> lookupSpotReportData(const std::string& name);
265 
269  template<typename T_ObjectDataInterfaceType>
270  DtBoost::shared_ptr<T_ObjectDataInterfaceType> lookupAndCastObjectData(const makVrv::DtUniqueID& id)
271  {
272  return DtObjectDataInterface::cast<T_ObjectDataInterfaceType>(lookupObjectData(id));
273  }
274 
278  template<typename T_ObjectDataInterfaceType>
279  DtBoost::shared_ptr<T_ObjectDataInterfaceType> lookupAndCastSpotReportData(const makVrv::DtUniqueID& id)
280  {
281  return DtObjectDataInterface::cast<T_ObjectDataInterfaceType>(lookupSpotReportData(id));
282  }
283 
287  template<typename T_ObjectDataInterfaceType>
288  DtBoost::shared_ptr<T_ObjectDataInterfaceType> lookupAndCastObjectData(const DtUUID& uuid)
289  {
290  return DtObjectDataInterface::cast<T_ObjectDataInterfaceType>(lookupObjectData(uuid));
291  }
292 
296  template<typename T_ObjectDataInterfaceType>
297  DtBoost::shared_ptr<T_ObjectDataInterfaceType> lookupAndCastSpotReportData(const std::string& name)
298  {
299  return DtObjectDataInterface::cast<T_ObjectDataInterfaceType>(lookupSpotReportData(name));
300  }
301 
304  virtual DtBoost::shared_ptr<DtObjectDataInterface> lookupObjectData(makVrv::DtStateView<makVrv::DtSimState>* stateView);
306 
309  virtual makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* addMappingBasedOnMarkingTextAndUUID(const std::string& markingText, const DtUUID& uuid);
310 
313  virtual makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* findStateView(const DtUUID&, bool fullSearchIfMissing = false);
314 
316  virtual makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* findStealthStateView(const std::string& address,
317  const std::string& markingText);
318 
320  virtual makVrv::DtStateView<DtSpotReportState>* findSpotReportStateView(const std::string& markingText);
321 
325 
328  makVrv::DtStateView<DtSpotReportState>* findSpotReportStateView(const makVrv::DtUniqueID& id)
329  {
330  if (!mySpotReportStateViewCollection->hasStateView(id))
331  {
332  return 0;
333  }
334 
335  return const_cast<makVrv::DtStateView<DtSpotReportState>*>
336  (mySpotReportStateViewCollection->findStateView(id));
337  }
338 
340  virtual void clearUUIDInformation();
341 
345  DtVrfSimulatedEntityStateViewCollection* simulatedEntityStateViewCollection()
346  {
347  return mySimulatedEntityStateView;
348  }
349 
350  DtVrlinkSimulatedBaseStateViewCollection* simulatedBaseStateViewCollection()
351  {
352  return mySimulatedBaseStateViewCollection;
353  }
354 
355  DtVrfObjectDataStateViewCollection* objectDataStateViewCollection()
356  {
357  return myObjectDataStateViewCollection;
358  }
359 
360  DtEnvironmentStateViewCollection* environmentStateViewCollection()
361  {
362  return myEnvironmentStateViewCollection;
363  }
364 
365  DtExtendedStateDataViewCollection* extendedStateDataViewCollection()
366  {
367  return myExtendedStateDataViewCollection;
368  }
369 
370  DtWeatherStateViewCollection* weatherStateViewCollection()
371  {
372  return myWeatherStateViewCollection;
373  }
374 
375  DtIffStateDataViewCollection* iffStateDataViewCollection()
376  {
377  return myIffStateDataViewCollection;
378  }
379 
380  DtPropulsionNoiseStateDataViewCollection* propulsionNoiseStateDataViewCollection()
381  {
382  return myPropulsionNoiseStateDataViewCollection;
383  }
384 
385  DtEmitterSystemStateViewCollection* emitterSystemStateViewCollection()
386  {
387  return myEmitterSystemStateViewCollection;
388  }
389 
390  DtActiveSonarStateViewCollection* activeSonarStateViewCollection()
391  {
392  return myActiveSonarStateViewCollection;
393  }
394 
395  DtSpotReportStateViewCollection* spotReportStateViewCollection()
396  {
397  return mySpotReportStateViewCollection;
398  }
399 
400  DtAggregateStateViewCollection* aggregateStateViewCollection()
401  {
402  return myAggregateStateViewCollection;
403  }
404 
405  makVrv::DtVrlinkSensorFieldsOfViewStateViewCollection* sensorFieldOfViewStateViewCollection()
406  {
407  return mySensorFieldOfViewStateViewCollection;
408  }
410 
413  makVrv::DtUniqueID parentId(const makVrv::DtUniqueID&) const;
414 
415  makVrv::DtUniqueID displayIdFromSimId(const makVrv::DtUniqueID& id, int modelSet = -1) const;
416  makVrv::DtElementData::SceneObjectIdList displayIdsFromSimId(const makVrv::DtUniqueID& id, int modelSet = -1) const;
417 
419  makVrv::DtUniqueID simIdFromDisplayId(const makVrv::DtUniqueID& id) const;
420 
422  const std::map<makVrv::DtUniqueID, const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*>&
423  stealthStates() const
424  {
425  return myStealthStates;
426  }
427 
429  virtual std::string entityName(const makVrv::DtUniqueID simId) const;
430 
432  virtual DtUUID objectUUID(makVrv::DtUniqueID simId) const;
433 
435  virtual std::string overlayName(const makVrv::DtUniqueID simId) const;
436 
438  virtual makVrv::DtElementEntry::ElementType elementType(const makVrv::DtElementID&) const;
439 
441  virtual makVrv::DtSimEntryUpdater::UpdateRate updateRateFor(const makVrv::DtBaseStateView* state) const;
442 
443  typedef std::vector<makVrv::DtSimEntryUpdater::UpdateRate> UpdateRates;
444  virtual makVrv::DtSimEntryUpdater::UpdateRate minimumRate(const UpdateRates&) const;
445  virtual makVrv::DtSimEntryUpdater::UpdateRate maximumRate(const UpdateRates&) const;
446 
450  virtual void setUpdateRate(makVrv::DtSimEntry*, makVrv::DtSimEntryUpdater::UpdateRate,
451  makVrv::DtBaseStateView* state);
452 
454  virtual void forceUpdateForRelevantInformation(makVrv::DtUniqueID id);
455 
458  virtual StateViewAddedOrRemovedSignal& signalWhenObjectAdded(const DtVrfSelectionFilter&);
459  virtual void processObjectAddedCallbacks(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
460  virtual void removeAddedSignalReference(const DtVrfSelectionFilter&);
461  virtual void waiting();
462 
463  virtual StateViewAddedOrRemovedSignal& signalWhenObjectRemoved(const DtVrfSelectionFilter&);
464  virtual void removeRemovalSignalReference(const DtVrfSelectionFilter&);
465 
466  virtual void processObjectRemovedCallbacks(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
467 
468  virtual void slot_simStateAdded(makVrv::DtSimObjectEntry& e);
469  virtual void slot_simStateToBeRemoved(makVrv::DtSimObjectEntry& e, makVrv::DtSimState&);
470 
471  virtual std::string lookupNameById(makVrv::DtUniqueID id);
472  virtual makVrv::DtUniqueID lookupIdByUUID(const DtUUID&);
473 
475  virtual bool getSupportsWeightVariations(makVrv::DtUniqueID id);
476 
480  virtual const std::vector<makVrv::DtUniqueID>& dIGuyIds();
481 
484  virtual void signalWhenAllObjectsDiscovered(const std::map<short, int>&);
485 
488 
489  virtual DtUUID uuidFromState(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*) const;
490  virtual DtUUID uuidFromState(const makVrv::DtVrlinkSimulatedBaseState*) const;
491 
493  boost::signal <void (const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*)> signal_stateAdded;
494  boost::signal <void (const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*)> signal_stateRemoved;
495 
498  boost::signal <void ()> signal_allObjectsDiscovered;
499 
501  boost::signal <void (const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*, const std::string& newName)> signal_nameChanged;
502 
503  const std::set<makVrv::DtUniqueID>& tacticalGraphicElements() const;
504 
505  protected:
506  virtual void slot_onAttributesChanged( const makVrv::DtElementData::EntryAttributesList& signalList );
507 
508  protected:
523 
524  std::map<short, int> myWaitingForDiscovery;
525 
526  typedef boost::unordered_map<makVrv::DtBaseStateView*, UpdateRates> UpdateRateMap;
527 
529 
532  {
538  };
539 
540  typedef std::vector<StateViewAddedOrRemovedStruct> StateViewAddedOrRemovedCallbacks;
542 
544  std::map<makVrv::DtElementID, bool> myWaiting;
545 
546  typedef boost::unordered_map<DtUUID, makVrv::DtUniqueID> UUIDToIdMap;
547  typedef boost::unordered_map<makVrv::DtUniqueID, DtUUID> IdToUUIDMap;
548 
551 
552  std::map<makVrv::DtUniqueID, const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*> myStealthStates;
553  std::string myStealthType;
554 
555  std::set<makVrv::DtUniqueID> myTacticalGraphicElements;
556 
557  std::vector<makVrv::DtUniqueID> myDIGuyIds;
558  boost::unordered_set<makVrv::DtUniqueID> myIdsToCheckForDIGuy;
559 
560  boost::unordered_set<DtUUID> myDidNotFindStateViewFor;
561  };
562 
563  template<typename T> T findStateFor(makVrv::DtSimEntry* entry)
564  {
565  makVrv::DtSimEntry::SimStateVector::const_iterator pos = entry->simStates().begin();
566  makVrv::DtSimEntry::SimStateVector::const_iterator endPos = entry->simStates().end();
567  for(; pos != endPos; ++pos)
568  {
569  T tState = dynamic_cast<T>(*pos);
570  if(tState)
571  {
572  return tState;
573  }
574  }
575 
576  return 0;
577  }
578 
580  DT_DLL_VRFGUICORE std::vector<DtUUID> convertMarkingTextVectorToUUIDVector(const std::vector<DtString>& v);
581  DT_DLL_VRFGUICORE std::vector<DtUUID> convertMarkingTextVectorToUUIDVector(const std::vector<std::string>& v);
582 
584  DT_DLL_VRFGUICORE std::vector<std::string> convertUUIDVectorToUUIDStringVector(const std::vector<DtUUID>& v);
585 
587  DT_DLL_VRFGUICORE std::vector<std::string> convertUUIDVectorToMarkingTextVector(const std::vector<DtUUID>& v);
588 }

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)