VR-Forces 5.0.2 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtEntityElementProcessor.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2022 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvVrl/vrvVrl.h>
13 
17 
19 
20 #include <boost/unordered_map.hpp>
21 
22 #include <vl/globalObjectDesignator.h>
23 #include <vl/reflectedEntity.h>
24 #include <vl/reflectedEntityList.h>
25 
26 #include <vlutil/vlSmartPointers.h>
27 
28 class DtReflectedObject;
29 
30 namespace makVrv
31 {
32  class DtEntityVisualizerSet;
33  class DtAggregateEchelonManager;
34  class DtEntityFilter;
35  class DtColorValue;
36 
37  namespace DT_PROTOCOL_NAMESPACE
38  {
39  class DtVrlinkEntityElement;
40  class DtVrlinkConnection;
42 
49  {
50  public:
53 
55  virtual ~DtEntityElementProcessor();
56 
58  DtEntityElementProcessor() = delete;
59 
62 
64  DtEntityElementProcessor& operator=(const DtEntityElementProcessor&) = delete;
65 
66  public:
69  static void registerInstance(DtVrlinkConnection& conn,
70  DtEntityElementProcessor* instance);
71 
73  static DtEntityElementProcessor* findInstance(DtVrlinkConnection& conn);
74 
76  static DtEntityElementProcessor& instance( DtVrlinkConnection& conn );
77 
78  public:
79 
81  {
82  return myEntityElementManager;
83  }
84 
86  {
87  return myEntityElementManager;
88  }
89 
91  DtEntityVisualizerSet* findVisualizerSet(const DtGlobalObjectDesignator& id, int modelSet);
92 
95  std::vector<DtEntityVisualizerSet*> findVisualizerSets( const DtGlobalObjectDesignator& id);
96 
98  DtEntityVisualizerSet* findVisualizerSet(const DtUniqueID& sceneObjectId);
99 
101  DtVrlinkEntityStateListener* findListener( const DtElementID& elementId );
102 
104  DtVrlinkEntityElement* findElement( const DtElementID& elementId );
105 
107  DtVrlinkEntityElement* findElement( const DtGlobalObjectDesignator& id );
108  public:
110  boost::signalslib::signal<void( DtVrlinkEntityStateListener& )> signal_entityDiscovered;
111 
113  boost::signalslib::signal<void( DtVrlinkEntityStateListener& )> signal_entityToBeDestroyed;
114 
115  template<typename Container>
117  {
118  typedef Container result_type;
119 
120  template<typename InputIterator>
121  Container operator()( InputIterator first, InputIterator last ) const
122  {
123  return Container( first, last );
124  }
125  };
126 
130  boost::signalslib::signal<bool( const std::string& ),
132  public:
134  virtual void onEntityDiscovered(DtVrlinkEntityStateListener& listener);
135 
137  virtual void onEntityToBeDestroyed(DtVrlinkEntityStateListener& listener);
138 
140  virtual bool onFilterEntity(const std::string& entityId);
141 
142  protected:
144  virtual void slot_completeDiscovery();
145 
146  virtual void slot_addEntityFilter(DtEntityFilter* filter);
147  public:
150  virtual DtReflectedEntityList* findEntityList();
151  virtual const DtReflectedEntityList* findEntityList() const;
152 
155  virtual DtEntityStateRepository* findEntityStateRepository(
156  const DtGlobalObjectDesignator& id );
157 
159  virtual DtVrlinkConnection& connection();
160  protected:
161 
163  void startListening();
164 
166  //reflected entities.
167  void stopListening();
168 
169 #if DtHLA
170  virtual void addDdmRegion( DtDDMRegionSP regionToAdd );
172 
174  virtual void removeDdmRegion( DtDDMRegionSP regionToRemove );
175 #endif
176 
178  static bool discoverFunction( DtReflectedObject* refObj, void* usr );
179 
181  virtual bool discover( DtReflectedObject* refObj );
182  protected:
183  typedef boost::unordered_map<DtUniqueID, DtVrlinkEntityStateListener*>
185  typedef std::vector<DtEntityFilter*> EntityFilterList;
186 
193 
194  //Internal reflected entity list.
196  };
197  }
198 }
Container operator()(InputIterator first, InputIterator last) const
Definition: DtEntityElementProcessor.h:121
Container result_type
Definition: DtEntityElementProcessor.h:118
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
DtAggregateEchelonManager & myEchelonHierarchy
Definition: DtEntityElementProcessor.h:189
ToBeVisualizedMap myToBeVisualized
Definition: DtEntityElementProcessor.h:191
DtReflectedEntityList * myReflectedEntityList
Definition: DtEntityElementProcessor.h:195
DtSignalConnectionManager myConnections
Definition: DtEntityElementProcessor.h:188
std::vector< DtEntityFilter * > EntityFilterList
Definition: DtEntityElementProcessor.h:185
Contains makVrv:DtSelectionManager class.
const DtVrlinkEntityElementManager & entityElementManager() const
Definition: DtEntityElementProcessor.h:80
The class that will be used to keep track of echelon hierarchy. (This was moved from vrvVrl 2022) ...
Definition: DtAggregateEchelonManager.h:32
EntityFilterList myEntityFilterList
Definition: DtEntityElementProcessor.h:192
boost::unordered_map< DtUniqueID, DtVrlinkEntityStateListener * > ToBeVisualizedMap
Definition: DtEntityElementProcessor.h:184
boost::signalslib::signal< bool(const std::string &), AggregateValues< std::vector< bool > > > signal_filterEntity
Emitted in pre-discovery conditions. Aggregates all returned values, and will filter out the entity i...
Definition: DtEntityElementProcessor.h:131
#define DL_DLL_IGCONVRLINK
Definition: dllExport.h:26
#define DT_PROTOCOL_NAMESPACE
Contains DLL export macros.
Definition: vrfDis.h:17
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
Contains makVrv::DtVisualizerCreationSettings class.
boost::signalslib::signal< void(DtVrlinkEntityStateListener &)> signal_entityDiscovered
Emitted whenever an entity is discovered.
Definition: DtEntityElementProcessor.h:110
boost::signalslib::signal< void(DtVrlinkEntityStateListener &)> signal_entityToBeDestroyed
Emitted whenever an entity is to be destroyed.
Definition: DtEntityElementProcessor.h:113
DtVrlinkConnection & myConnection
Definition: DtEntityElementProcessor.h:187
Used to filter out entities in discovery conditions.
Definition: DtEntityFilter.h:27
Base class to provide boost signal/slot management.
The DtEntityElementProcessor creates a reflected entity list, which calls on this class to create DtV...
Definition: DtEntityElementProcessor.h:48
DtVrlinkEntityElementManager & myEntityElementManager
Definition: DtEntityElementProcessor.h:190
DtVrlinkEntityElementManager & entityElementManager()
Definition: DtEntityElementProcessor.h:85
This class is a set of entity visualizers, all of the visualizers in this set must support the entity...
Definition: DtEntityVisualizerSet.h:24
Contains DLL export macros.

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)