VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtElementAttributeManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2019 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
13 #include <vrvCore/DtElementEntry.h>
14 
16 
17 #include <boost/unordered_map.hpp>
18 #include <boost/unordered_set.hpp>
19 #include <boost/signals.hpp>
20 
21 namespace makVrv
22 {
23  class DtDe;
24  class DtElementAttribute;
25  class DtElementChanges;
26  class DtElementEntry;
27 
34  {
35  public:
36 
38  typedef std::vector<DtElementAttribute*> AttributeList;
40  typedef std::pair<DtElementEntry*, AttributeList> EntryAttributes;
41  typedef std::vector<EntryAttributes> EntryAttributesList;
43 
46 
49  friend class DtElementData;
50 
51  protected:
52 
56 
57  public:
59  virtual ~DtElementAttributeManager();
60 
62  virtual DtElementEntry::ElementType elementType(DtElementID elementId) const;
64  virtual DtElementEntry::ElementType elementType(const DtElementEntry& entry) const;
66 
68 
75  virtual bool getElementDisplayName(DtElementID elementId, std::string& value) const;
76 
83  virtual bool getElementDisplayName(const DtElementEntry& entry, std::string& value) const;
84 
87  virtual bool getElementIdFromDisplayName(const std::string& displayName, DtElementID& elementId) const;
88 
94  virtual bool getElementObjectId(const DtElementEntry& entry, std::string& value) const;
95 
99  virtual bool getElementObjectId(DtElementID elementId, std::string& value) const;
100 
106  virtual bool getElementObjectType(const DtElementEntry& entry, std::string& value) const;
107 
111  virtual bool getElementObjectType(DtElementID elementId, std::string& value) const;
112 
121  virtual bool getElementSubtype(const DtElementEntry& entry, DtElementAttributes::ElementSubtypes& value) const;
122 
126  virtual bool getElementSubtype(DtElementID elementId, DtElementAttributes::ElementSubtypes& value) const;
127 
131  virtual bool getElementElementDefinitionName(const DtElementEntry& entry, DtUnicode& value) const;
132 
136  virtual bool getElementElementDefinitionName(DtElementID elementId, DtUnicode& value) const;
137 
142  virtual bool getElementDriverType(const DtElementEntry& entry, std::string& value) const;
143 
147  virtual bool getElementDriverType(DtElementID elementId, std::string& value) const;
148 
151  virtual bool getElementObjectVisibility(const DtElementEntry& entry, bool& value) const;
152 
156  virtual bool getElementObjectVisibility(DtElementID elementId, bool& value) const;
157 
160  virtual bool getElementIndicatorVisibility(const DtElementEntry& entry, bool& value) const;
161 
165  virtual bool getElementIndicatorVisibility(DtElementID elementId, bool& value) const;
166 
169  virtual bool getElementHeightAboveTerrainLinesEnabled(const DtElementEntry& entry, bool& value) const;
170 
174  virtual bool getElementHeightAboveTerrainLinesEnabled(DtElementID elementId, bool& value) const;
175 
179  virtual bool getElementIndicatorsOnSelect(const DtElementEntry& entry, bool& value) const;
180 
184  virtual bool getElementIndicatorsOnSelect(DtElementID elementId, bool& value) const;
185 
189  virtual bool getElementOverlayName(const DtElementEntry& entry, std::string& value) const;
190 
194  virtual bool getElementOverlayName(DtElementID elementId, std::string& value) const;
195 
201  virtual bool getElementKindAndCategory(const DtElementEntry& entry, std::pair<int, int>& value) const;
202 
206  virtual bool getElementKindAndCategory(DtElementID elementId, std::pair<int, int>& value) const;
207 
211  virtual bool getElementLocalScaleEnabled(const DtElementEntry& entry, bool& value) const;
212 
216  virtual bool getElementLocalScaleEnabled(DtElementID elementId, bool& value) const;
217 
221  virtual bool getElementLocalScaleAmount(const DtElementEntry& entry, float& value) const;
222 
226  virtual bool getElementLocalScaleAmount(DtElementID elementId, float& value) const;
227 
233  virtual bool getElementDamageState(const DtElementEntry& entry, int& value) const;
234 
238  virtual bool getElementDamageState(DtElementID elementId, int& value) const;
240 
242 
247  virtual void startNamedElementIteration() const;
248 
251  virtual bool getNextElementIdAndDisplayName(DtElementID& id, std::string& displayName) const;
253 
256  boost::signal< void(const EntryAttributesList&) > signal_attributesChanged;
257 
258  private:
261 
264 
267 
268  protected:
269 
271  virtual void applyElementAttributeChanges(const DtElementChanges::ElementAttributeMap& attributeChanges);
272 
274  virtual void applyElementRemovals(const DtElementChanges::UniqueIdList& elementsRemoved);
275 
278  virtual void addToElementIdDisplayNameMaps(DtElementID elementId, const std::string& displayName);
279 
281  virtual void removeFromElementIdDisplayNameMaps(DtElementID elementId);
282 
285  virtual void reportElementEntryNotFound(DtElementID elementId) const;
286 
287  protected:
288 
290 
292  // Unordered map from display name attribute to element ID
293  typedef boost::unordered_map< std::string, DtElementID > DisplayNameToElementIdMap;
296 
298  // Unordered map from element ID to display name attribute
299  typedef boost::unordered_map< DtElementID, std::string > ElementIdToDisplayNameMap;
302 
304  mutable ElementIdToDisplayNameMap::const_iterator myMutatableDisplayNameIterator;
305 
306  };
307 
310  {
311  public:
314 
317 
319  static DtElementAttributeManagerCreator& instance(DtDe& de);
320 
322  virtual DtElementAttributeManager* create(DtDe& de) const;
323  };
324 }
ElementIdToDisplayNameMap::const_iterator myMutatableDisplayNameIterator
Mutable iterator used on by startNamedElementIteration / getNextElementIdAndDisplayName.
Definition: DtElementAttributeManager.h:304
Virtual base class.
Definition: DtVirtualBaseClass.h:22
A unicode string.
Definition: DtUnicode.h:33
DisplayNameToElementIdMap myDisplayNameToElementIdMap
Definition: DtElementAttributeManager.h:294
boost::unordered_map< DtElementID, std::string > ElementIdToDisplayNameMap
Definition: DtElementAttributeManager.h:299
Creator class for the Network IO.
Definition: DtElementAttributeManager.h:309
std::pair< DtElementEntry *, AttributeList > EntryAttributes
Definition: DtElementAttributeManager.h:40
The element data is all the information about all elements in the scene.
Definition: DtElementData.h:29
std::vector< DtUniqueID > UniqueIdList
Definition: DtElementChanges.h:37
DtElementEntry holds the non-simulation-specific data about an element, including its element type an...
Definition: DtElementEntry.h:22
DtUniqueID DtElementID
The ElementID is a specific type of unique ID used to represent VR-Vantage uniquely defined elements...
Definition: DtUniqueID.h:26
ElementSubtypes
Definition: DtElementAttributes.h:50
Contains makVrv::DtVirtualBaseClass class.
The element attribute manager is used to provide access to element attribute data.
Definition: DtElementAttributeManager.h:33
boost::signal< void(const EntryAttributesList &) > signal_attributesChanged
Signal raised when attributes are changed.
Definition: DtElementAttributeManager.h:256
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
std::map< DtUniqueID, AttributeList > ElementAttributeMap
Definition: DtElementChanges.h:39
std::vector< EntryAttributes > EntryAttributesList
Definition: DtElementAttributeManager.h:41
boost::unordered_map< std::string, DtElementID > DisplayNameToElementIdMap
Definition: DtElementAttributeManager.h:293
ElementType
Definition: DtElementEntry.h:26
Contains makVrv::DtElementAttributes class.
DtDe & myDe
Definition: DtElementAttributeManager.h:289
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
std::vector< DtElementAttribute * > AttributeList
Define the type used to signal changes to one or more attributes for one or more elements.
Definition: DtElementAttributeManager.h:39
Contains makVrv::DtElementChanges class.
ElementIdToDisplayNameMap myElementIdToDisplayNameMap
Definition: DtElementAttributeManager.h:300
Contains makVrv::DtElementEntry class.

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)