VR-Forces 4.6 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties 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>
19 #include <vrfGuiCore/orbatState.h>
23 #include <vrvUtil/signalslib.h>
24 
25 #include <vrvCore/DtElementEntry.h>
27 #include <vrvCore/DtEntityState.h>
29 #include <vrvCore/DtElementData.h>
30 
31 
32 #include <boost/function.hpp>
33 #include <boost/unordered_set.hpp>
34 
35 namespace makVrv
36 {
37  class DtDe;
38 }
39 
40 namespace makVrf
41 {
42  class DtVrfSelectionFilter;
43  class DtVrfGuiOrbatManager;
44 
45  class DtAggregateStateViewCollection;
46  class DtPropulsionNoiseStateDataViewCollection;
47  class DtIffStateDataViewCollection;
48  class DtEmitterSystemStateViewCollection;
49  class DtWeatherStateViewCollection;
50  class DtEnvironmentStateViewCollection;
51  class DtActiveSonarStateViewCollection;
53 
54  typedef boost::function<int (const DtEntityType&)> DtMaxMarkingTextLengthFunction;
55 
58  {
59  public:
61  DtStateViewMarkingTextProvider(const DtStateViewMarkingTextProvider& orig) : myStateView(orig.myStateView) {};
63  virtual DtString markingText() { return myStateView->state().myMarkingText.c_str(); };
64  virtual DtUUIDMarkingTextProvider* clone() const { return new DtStateViewMarkingTextProvider(*this); };
65 
66  operator DtString () { return markingText(); };
67 
68  protected:
70  };
71 
74  : public makVrv::DtStateViewCollection<makVrv::DtVrlinkSimulatedEntityState>
75  {
76  public:
78  : makVrv::DtStateViewCollection<makVrv::DtVrlinkSimulatedEntityState>(
79  de, makVrv::DtSimEntryUpdater::NoUpdates)
80  {
81  }
82  };
83 
88  : public makVrv::DtStateViewCollection<makVrv::DtVrlinkSimulatedBaseState>
89  {
90  public:
92  makVrv::DtStateViewCollection<makVrv::DtVrlinkSimulatedBaseState>(de, makVrv::DtSimEntryUpdater::NoUpdates)
93  {
94  }
95 
96  bool isCompatible(makVrv::DtSimObjectEntry& entry)
97  {
99  }
100  };
101 
124  {
125  public:
126  typedef boost::signal<void (const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*)> StateViewAddedOrRemovedSignal;
127 
128  public:
129 
132 
133  static DtVrfStateViewCollectionManager& instance(makVrv::DtDe& de);
134 
146 
147 
150  virtual DtBoost::shared_ptr<DtObjectDataInterface> lookupObjectData(const makVrv::DtUniqueID& id);
151 
154  virtual DtBoost::shared_ptr<DtObjectDataInterface> lookupSpotReportData(const makVrv::DtUniqueID& id);
155 
158  virtual DtBoost::shared_ptr<DtObjectDataInterface> lookupVrfTDLData(const makVrv::DtUniqueID& id);
159 
162  virtual DtBoost::shared_ptr<DtObjectDataInterface> lookupSpotReportData(const std::string& name);
163 
166  virtual DtBoost::shared_ptr<DtObjectDataInterface> lookupVrfTDLData(const std::string& uniqueIdentifier);
167 
170  virtual DtBoost::shared_ptr<DtObjectDataInterface> lookupOrbatData(const makVrv::DtUniqueID& id);
171 
174  virtual DtBoost::shared_ptr<DtObjectDataInterface> lookupOrbatData(const std::string& name);
175 
178  virtual DtBoost::shared_ptr<DtObjectDataInterface> lookupObjectData(const DtUUID&);
179 
181  virtual DtVector centerOfMass(const boost::unordered_set<DtUUID>& uuids,
182  bool ignoreEmbarked = true);
183 
187  template<typename T_ObjectDataInterfaceType>
188  DtBoost::shared_ptr<T_ObjectDataInterfaceType> lookupAndCastObjectData(const makVrv::DtUniqueID& id)
189  {
190  return DtObjectDataInterface::cast<T_ObjectDataInterfaceType>(lookupObjectData(id));
191  }
192 
196  template<typename T_ObjectDataInterfaceType>
197  DtBoost::shared_ptr<T_ObjectDataInterfaceType> lookupAndCastSpotReportData(const makVrv::DtUniqueID& id)
198  {
199  return DtObjectDataInterface::cast<T_ObjectDataInterfaceType>(lookupSpotReportData(id));
200  }
201 
205  template<typename T_ObjectDataInterfaceType>
206  DtBoost::shared_ptr<T_ObjectDataInterfaceType> lookupAndCastVrfTDLData(const makVrv::DtUniqueID& id)
207  {
208  return DtObjectDataInterface::cast<T_ObjectDataInterfaceType>(lookupVrfTDLData(id));
209  }
210 
214  template<typename T_ObjectDataInterfaceType>
215  DtBoost::shared_ptr<T_ObjectDataInterfaceType> lookupAndCastOrvatData(const makVrv::DtUniqueID& id)
216  {
217  return DtObjectDataInterface::cast<T_ObjectDataInterfaceType>(lookupOrbatData(id));
218  }
219 
223  template<typename T_ObjectDataInterfaceType>
224  DtBoost::shared_ptr<T_ObjectDataInterfaceType> lookupAndCastObjectData(const DtUUID& uuid)
225  {
226  return DtObjectDataInterface::cast<T_ObjectDataInterfaceType>(lookupObjectData(uuid));
227  }
228 
232  template<typename T_ObjectDataInterfaceType>
233  DtBoost::shared_ptr<T_ObjectDataInterfaceType> lookupAndCastSpotReportData(const std::string& name)
234  {
235  return DtObjectDataInterface::cast<T_ObjectDataInterfaceType>(lookupSpotReportData(name));
236  }
237 
241  template<typename T_ObjectDataInterfaceType>
242  DtBoost::shared_ptr<T_ObjectDataInterfaceType> lookupAndCastVrfTDLData(const std::string& id)
243  {
244  return DtObjectDataInterface::cast<T_ObjectDataInterfaceType>(lookupVrfTDLData(id));
245  }
246 
250  template<typename T_ObjectDataInterfaceType>
251  DtBoost::shared_ptr<T_ObjectDataInterfaceType> lookupAndCastOrbatData(const std::string& name)
252  {
253  return DtObjectDataInterface::cast<T_ObjectDataInterfaceType>(lookupOrbatData(name));
254  }
255 
258  virtual DtBoost::shared_ptr<DtObjectDataInterface> lookupObjectData(makVrv::DtStateView<makVrv::DtSimState>* stateView);
260 
263  virtual makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* addMappingBasedOnMarkingTextAndUUID(const std::string& markingText, const DtUUID& uuid);
264 
267  virtual makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* findStateView(const DtUUID&, bool fullSearchIfMissing = false);
268 
270  virtual makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* findStealthStateView(const std::string& address,
271  const std::string& markingText);
272 
274  virtual makVrv::DtStateView<DtSpotReportState>* findSpotReportStateView(const std::string& markingText);
275 
277  virtual makVrv::DtStateView<DtVrfTDLMessageDataState>* findVrfTDLDataStateView(const std::string& id);
278 
280  virtual makVrv::DtStateView<DtOrbatState>* findOrbatStateView(const std::string& markingText);
281 
285 
288  makVrv::DtStateView<DtSpotReportState>* findSpotReportStateView(const makVrv::DtUniqueID& id)
289  {
290  if (!mySpotReportStateViewCollection->hasStateView(id))
291  {
292  return 0;
293  }
294 
295  return const_cast<makVrv::DtStateView<DtSpotReportState>*>
296  (mySpotReportStateViewCollection->findStateView(id));
297  }
298 
302  {
303  if (!myVrfTDLDataStateViewCollection->hasStateView(id))
304  {
305  return 0;
306  }
307 
309  (myVrfTDLDataStateViewCollection->findStateView(id));
310  }
311 
314  makVrv::DtStateView<DtExternalDataState>* findExternalDataStateView(const makVrv::DtUniqueID& id)
315  {
316  if (!myExternalDataStateViewCollection->hasStateView(id))
317  {
318  return 0;
319  }
320 
321  return const_cast<makVrv::DtStateView<DtExternalDataState>*>
322  (myExternalDataStateViewCollection->findStateView(id));
323  }
324 
328  {
329  if (!myOrbatStateViewCollection->hasStateView(id))
330  {
331  return 0;
332  }
333 
334  return const_cast<makVrv::DtStateView<DtOrbatState>*>
335  (myOrbatStateViewCollection->findStateView(id));
336  }
337 
339  virtual void clearUUIDInformation();
340 
344  DtVrfSimulatedEntityStateViewCollection* simulatedEntityStateViewCollection()
345  {
346  return mySimulatedEntityStateView;
347  }
348 
349  DtVrlinkSimulatedBaseStateViewCollection* simulatedBaseStateViewCollection()
350  {
351  return mySimulatedBaseStateViewCollection;
352  }
353 
354  DtVrfObjectDataStateViewCollection* objectDataStateViewCollection()
355  {
356  return myObjectDataStateViewCollection;
357  }
358 
359  DtEnvironmentStateViewCollection* environmentStateViewCollection()
360  {
361  return myEnvironmentStateViewCollection;
362  }
363 
364  DtExtendedStateDataViewCollection* extendedStateDataViewCollection()
365  {
366  return myExtendedStateDataViewCollection;
367  }
368 
369  DtWeatherStateViewCollection* weatherStateViewCollection()
370  {
371  return myWeatherStateViewCollection;
372  }
373 
374  DtIffStateDataViewCollection* iffStateDataViewCollection()
375  {
376  return myIffStateDataViewCollection;
377  }
378 
379  DtPropulsionNoiseStateDataViewCollection* propulsionNoiseStateDataViewCollection()
380  {
381  return myPropulsionNoiseStateDataViewCollection;
382  }
383 
384  DtEmitterSystemStateViewCollection* emitterSystemStateViewCollection()
385  {
386  return myEmitterSystemStateViewCollection;
387  }
388 
389  DtActiveSonarStateViewCollection* activeSonarStateViewCollection()
390  {
391  return myActiveSonarStateViewCollection;
392  }
393 
394  DtSpotReportStateViewCollection* spotReportStateViewCollection()
395  {
396  return mySpotReportStateViewCollection;
397  }
398 
399  DtExternalDataStateViewCollection* externalDataStateViewCollection()
400  {
401  return myExternalDataStateViewCollection;
402  }
403 
404  DtVrfTDLMessageDataStateViewCollection* vrfTDLDataStateViewCollection()
405  {
406  return myVrfTDLDataStateViewCollection;
407  }
408 
409  DtOrbatStateViewCollection* orbatStateViewCollection()
410  {
411  return myOrbatStateViewCollection;
412  }
413 
414  DtAggregateStateViewCollection* aggregateStateViewCollection()
415  {
416  return myAggregateStateViewCollection;
417  }
418 
419  makVrv::DtVrlinkSensorFieldsOfViewStateViewCollection* sensorFieldOfViewStateViewCollection()
420  {
421  return mySensorFieldOfViewStateViewCollection;
422  }
424 
427  makVrv::DtUniqueID parentId(const makVrv::DtUniqueID&) const;
428 
429  makVrv::DtUniqueID displayIdFromSimId(const makVrv::DtUniqueID& id, int modelSet = -1) const;
430  makVrv::DtElementData::SceneObjectIdList displayIdsFromSimId(const makVrv::DtUniqueID& id, int modelSet = -1) const;
431 
433  makVrv::DtUniqueID simIdFromDisplayId(const makVrv::DtUniqueID& id) const;
434 
436  const std::map<makVrv::DtUniqueID, const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*>&
437  stealthStates() const
438  {
439  return myStealthStates;
440  }
441 
443  virtual std::string entityName(const makVrv::DtUniqueID simId) const;
444 
446  virtual DtUUID objectUUID(makVrv::DtUniqueID simId) const;
447 
449  virtual std::string overlayName(const makVrv::DtUniqueID simId) const;
450 
452  virtual makVrv::DtElementEntry::ElementType elementType(const makVrv::DtElementID&) const;
453 
455  virtual makVrv::DtSimEntryUpdater::UpdateRate updateRateFor(const makVrv::DtBaseStateView* state) const;
456 
457  typedef std::vector<makVrv::DtSimEntryUpdater::UpdateRate> UpdateRates;
458  virtual makVrv::DtSimEntryUpdater::UpdateRate minimumRate(const UpdateRates&) const;
459  virtual makVrv::DtSimEntryUpdater::UpdateRate maximumRate(const UpdateRates&) const;
460 
464  virtual void setUpdateRate(makVrv::DtSimEntry*, makVrv::DtSimEntryUpdater::UpdateRate,
465  makVrv::DtBaseStateView* state);
466 
468  virtual void forceUpdateForRelevantInformation(makVrv::DtUniqueID id);
469 
472  virtual StateViewAddedOrRemovedSignal& signalWhenObjectAdded(const DtVrfSelectionFilter&);
473  virtual void processObjectAddedCallbacks(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
474  virtual void removeAddedSignalReference(const DtVrfSelectionFilter&);
475  virtual void waiting();
476 
477  virtual StateViewAddedOrRemovedSignal& signalWhenObjectRemoved(const DtVrfSelectionFilter&);
478  virtual void removeRemovalSignalReference(const DtVrfSelectionFilter&);
479 
480  virtual void processObjectRemovedCallbacks(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
481 
482  virtual void slot_simStateAdded(makVrv::DtSimObjectEntry& e);
483  virtual void slot_simStateToBeRemoved(makVrv::DtSimObjectEntry& e, makVrv::DtSimState&);
484 
485  virtual std::string lookupNameById(makVrv::DtUniqueID id);
486  virtual makVrv::DtUniqueID lookupIdByUUID(const DtUUID&);
487 
489  virtual bool getSupportsWeightVariations(makVrv::DtUniqueID id);
490 
494  virtual const std::set<makVrv::DtUniqueID>& dIGuyIds();
495 
498  virtual void signalWhenAllObjectsDiscovered(const std::map<short, int>&);
499 
502 
503  virtual DtUUID uuidFromState(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*) const;
504  virtual DtUUID uuidFromState(const makVrv::DtVrlinkSimulatedBaseState*) const;
505 
507  boost::signal <void (const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*)> signal_stateAdded;
508  boost::signal <void (const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*)> signal_stateRemoved;
509 
511  boost::signal<void (makVrv::DtUniqueID, const DtUUID& oldUUID, const DtUUID& newUUID)> signal_uuidChanged;
512 
515  boost::signal <void ()> signal_allObjectsDiscovered;
516 
518  boost::signal <void (const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*, const std::string& newName)> signal_nameChanged;
519 
520  const std::set<makVrv::DtUniqueID>& tacticalGraphicElements() const;
521 
525  virtual int maxMarkingTextLengthFor(const DtEntityType&) const;
526  virtual void setMaxMarkingTextLengthFunction(DtMaxMarkingTextLengthFunction);
527  virtual DtMaxMarkingTextLengthFunction maxMarkingTextLengthFunction() const;
528 
529  virtual int defaultMaxMarkingTextLengthFunction(const DtEntityType&);
530 
531  protected:
532  virtual void slot_onAttributesChanged( const makVrv::DtElementData::EntryAttributesList& signalList );
533 
534  DtVrfGuiOrbatManager* vrfGuiOrbatManager() const;
535 
537  virtual bool shouldProcessState(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*) const;
538 
540  virtual void slot_attributesChanged(const makVrv::DtElementData::EntryAttributesList& l);
541 
542  protected:
560 
561  std::map<short, int> myWaitingForDiscovery;
562 
563  typedef boost::unordered_map<makVrv::DtBaseStateView*, UpdateRates> UpdateRateMap;
564 
566 
569  {
575  };
576 
577  typedef std::vector<StateViewAddedOrRemovedStruct> StateViewAddedOrRemovedCallbacks;
579 
581  std::map<makVrv::DtElementID, bool> myWaiting;
582 
583  typedef boost::unordered_map<DtUUID, makVrv::DtUniqueID> UUIDToIdMap;
584  typedef boost::unordered_map<makVrv::DtUniqueID, DtUUID> IdToUUIDMap;
585 
588 
590 
591  std::map<makVrv::DtUniqueID, const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*> myStealthStates;
592  std::string myStealthType;
593 
594  std::set<makVrv::DtUniqueID> myTacticalGraphicElements;
595 
596  std::set<makVrv::DtUniqueID> myDIGuyIds;
597  boost::unordered_set<makVrv::DtUniqueID> myIdsToCheckForDIGuy;
598 
599  boost::unordered_set<DtUUID> myDidNotFindStateViewFor;
600 
602  };
603 
604  template<typename T> T findStateFor(makVrv::DtSimEntry* entry)
605  {
606  makVrv::DtSimEntry::SimStateVector::const_iterator pos = entry->simStates().begin();
607  makVrv::DtSimEntry::SimStateVector::const_iterator endPos = entry->simStates().end();
608  for(; pos != endPos; ++pos)
609  {
610  T tState = dynamic_cast<T>(*pos);
611  if(tState)
612  {
613  return tState;
614  }
615  }
616 
617  return 0;
618  }
619 
621  DT_DLL_VRFGUICORE std::vector<DtUUID> convertMarkingTextVectorToUUIDVector(const std::vector<DtString>& v);
622  DT_DLL_VRFGUICORE std::vector<DtUUID> convertMarkingTextVectorToUUIDVector(const std::vector<std::string>& v);
623 
625  DT_DLL_VRFGUICORE std::vector<std::string> convertUUIDVectorToUUIDStringVector(const std::vector<DtUUID>& v);
626 
628  DT_DLL_VRFGUICORE std::vector<std::string> convertUUIDVectorToMarkingTextVector(const std::vector<DtUUID>& v);
629 }

Document ID: Generated on Thu Apr 12 03:15:37 EDT 2018 from SVN revision 187986
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)