VR-Vantage 3.0 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtElement.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 <vrvCore/vrvCore.h>
16 #include <vrvCore/DtElementEntry.h>
18 #include <vrvCore/DtObserverMode.h>
20 
21 #include <vrvUtil/DtUnicode.h>
22 
23 #include <vector>
24 
25 #include <boost/unordered_map.hpp>
26 
27 namespace makVrv
28 {
29  class DtAgentManagerInterface;
30  class DtSharedSettingsManager;
31  class DtElementDefinitionNew;
32 
33  namespace EntityStateListener
34  {
35  enum class DamageState;
36  }
37 
42  {
43  public:
44 
45  using ModelSetToSceneObjectIdMap = boost::unordered_map<DtObserverMode::ModelSets, DtUniqueID>;
46 
48  DtElement( DtBaseConnection& conn, DtElementID elementId );
49 
51  virtual ~DtElement();
52 
54  DtElement() = delete;
55 
57  DtElement( const DtElement& ) = delete;
58 
60  DtElement& operator=( const DtElement& ) = delete;
61 
62  public:
63 
65  virtual void visualize(const DtSharedModelSetSettings::ModelSetVisualizedMap& sets);
66 
68  virtual void setVisible( bool visible );
69 
71  virtual bool visible() const;
72 
75  virtual void setElementId( const DtElementID );
76 
79  inline DtElementID elementID() const
80  {
81  return myElementId;
82  }
83 
85 
86 
90  virtual void updateElementDefinitionFromDefinitions();
91 
94  virtual void updateElementDefinitionFromDefinitions( std::vector<DtUnicode>& definitions );
96 
99  virtual const DtUnicode& elementDefinition() const;
100  virtual void setElementDefinition(const DtUnicode& definition);
101 
103  virtual std::string displayUnitCollectionName() const;
104 
106  virtual void setDisplayUnitCollectionName(const std::string& definition);
107 
109  virtual const DtElementEntry::ElementType elementType() const = 0;
110 
113  virtual void setDriverType(const std::string& driverType);
114 
116  virtual void setElementSubtype(DtElementAttributes::ElementSubtypes subtype);
117 
122  virtual void changeElementAttribute( const DtElementAttribute* attr );
123 
126 
127 
128  virtual ModelSetToSceneObjectIdMap& modelSetToSceneObjectIdMap();
129 
131  virtual void setSceneObjectIdForModelSet( DtObserverMode::ModelSets modelSet, DtUniqueID id );
132 
134  virtual void removeSceneObjectIdForModelSet( DtObserverMode::ModelSets modelSet ) ;
135 
137  virtual DtUniqueID sceneObjectIdForModelSet( DtObserverMode::ModelSets modelSet ) const;
139 
140  protected:
141 
143 
144 
145  virtual void reportElementCreated();
146 
148  virtual void reportDisplayName();
149 
151  virtual void reportConnectionObjectID();
152 
154  virtual void reportConnectionObjectType();
155 
157  virtual void reportOverlayNameChanged();
158 
160  virtual void reportVisibility();
161 
163  virtual void reportDamageStateChanged();
164 
166  virtual void reportDriverType();
167 
170  virtual void reportElementSubtype();
171 
173  virtual void reportElementDefinitionName();
174 
176  virtual void reportDisplayUnitCollectionName();
178 
180  void slot_updateOverlayNameRaw(const char* text);
181 
183  void slot_updateConnectionObjectID( const std::string& id );
184 
187  void slot_updateConnectionObjectType( const std::string& type );
188 
190  void slot_updateDisplayName(const std::string& text);
191 
193  void slot_updateOverlayName(const std::string& pname);
194 
196  void slot_updateDamageState(EntityStateListener::DamageState state);
197 
201  virtual void getDefinitions( std::vector<DtUnicode>& definitions );
202 
203  virtual void setModelSetEnabled( int modelSet, bool enabled ) = 0;
204 
207  virtual bool distribute() const;
208  virtual void setDistribute( const bool distribute );
210 
211  protected:
232  ModelSetToSceneObjectIdMap myModelSetToSceneObjectIdMap;
233  };
234 
238  {
239  public:
240 
243  {
244  // intentional nop
245  }
246 
248  virtual ~DtElementCreator()
249  {
250  // intentional nop
251  }
252 
254  virtual DtElementCreator* clone() const = 0;
255 
257  virtual DtElement* createElement( DtBaseConnection& simulation,
258  DtStateListener& listener ) const = 0;
259 
261  virtual const DtElementEntry::ElementType elementType() const = 0;
262 
264  virtual const std::string& tag() = 0;
265  };
266 
267  template<typename ElementTemplateType>
269  {
270  public:
271  // CTOR
273  {
274  // intentional nop
275  }
276 
279  {
280  // intentional nop
281  }
282 
284  {
286  }
287 
288  virtual DtElement* createElement( DtBaseConnection& simulation,
289  DtStateListener& listener ) const
290  {
291  return new ElementTemplateType( simulation, listener );
292  }
293 
295  {
296  return ElementTemplateType::theElementType();
297  }
298 
299  virtual const std::string& tag()
300  {
301 #ifdef DtDIS
302  const static std::string str( "DIS" );
303 #elif DtHLA_1516_EVOLVED
304  const static std::string str( "HLA1516e" );
305 #elif DtHLA_1516
306  const static std::string str( "HLA1516" );
307 #elif DtHLA
308  const static std::string str( "HLA13" );
309 #else
310  const static std::string str( "" );
311 #endif
312  return str;
313  }
314  };
315 }
316 


Copyright © 2005-2022 MAK Technologies. All Rights Reserved (www.mak.com)