VR-Forces 5.0.1 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtEntityElement.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2021 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/vrvCore.h>
13 
15 #include <vrvCore/DtElement.h>
20 #include <vrvCore/DtUniqueID.h>
21 
22 #include <boost/unordered_map.hpp>
23 
24 namespace makVrv
25 {
26  class DtSceneObjectAgent;
27  class DtEntityKinematicState;
28  class DtBaseConnection;
29 
33  {
34  public:
35 
39  {
40  int modelSet;
41  DtSceneObjectAgent* sceneObject;
44 
45  DtEntityObjectStruct() : modelSet(0)
46  , sceneObject( nullptr )
47  , visualizerSet( nullptr )
48  , kinematicState( nullptr )
49  {
50  }
51 
53  DtEntityObjectStruct( const DtEntityObjectStruct& ) = delete;
54 
56  DtEntityObjectStruct& operator=( const DtEntityObjectStruct& ) = delete;
57  };
58 
59  using ModelSetToEntityObjectMap = boost::unordered_map<int, DtEntityObjectStruct*>;
60 
63 
65  virtual ~DtEntityElement();
66 
68  DtEntityElement() = delete;
69 
71  DtEntityElement(const DtEntityElement&) = delete;
72 
74  DtEntityElement& operator=(const DtEntityElement&) = delete;
75 
76  public:
78  virtual void visualize( const DtSharedModelSetSettings::ModelSetVisualizedMap& sets ) override;
79 
87  virtual void setModelSetEnabled( int modelSet, bool enabled ) override;
88 
90  virtual void setVisible(bool visible);
91 
93  virtual const ModelSetToEntityObjectMap& entityObjectMap() const;
94 
97  template <typename VisualizerClass>
98  void findVisualizers( std::vector<VisualizerClass*>& visualizers );
99 
101  template <typename VisualizerClass>
102  void findVisualizersByDynamicCast( std::vector<VisualizerClass*>& visualizers );
103 
105  virtual DtEntityStateListener& entityStateListener();
106 
108  virtual const DtElementEntry::ElementType elementType() const override;
109  static const DtElementEntry::ElementType theElementType();
110 
112  virtual void update2DEmbarkationVisibility();
113 
114  virtual void createVisualizersByModelSetAndType(int modelSet, int visualType);
115  virtual void destroyVisualizersByModelSetAndType(int modelSet, int visualType);
116 
118 
119  virtual DtEntityObjectStruct* findObjectStructForModelSet( int modelSet ) const;
120  virtual DtSceneObjectAgent* findSceneObjectForModelSet( int modelSet ) const ;
121  virtual DtEntityVisualizerSet* findVisualizerSetForModelSet( int modelSet ) const ;
122  virtual DtEntityKinematicState* findKinematicStateForModelSet( int modelSet) const;
124 
126 
127  virtual void setSmoothingEnabled( bool enabled );
130  virtual void setSmoothingEnabled( bool enabled, int modelSet );
132 
136  virtual void setGroundClampingEnabled( bool enabled );
138  virtual void setGroundClampingEnabled( bool enabled, int modelSet );
140 
144  virtual void setPickable( bool pickable );
146  virtual void setPickable( bool pickable, int modelSet );
148 
150 
151  virtual std::vector<DtUniqueID> sceneObjectUniqueIds();
155  virtual DtUniqueID sceneObjectIdForModelSet( int modelSet );
157 
158  protected:
160  virtual void slot_visibilityChanged(bool vis);
161 
163  virtual DtEntityKinematicState* createEntityKinState( DtSceneObjectAgent& sceneObject, int modelSet );
164 
166  virtual void processElementParameters();
167  protected:
168 
170 
173 
174  };
175 
176  template<typename VisualizerClass>
177  inline void DtEntityElement::findVisualizers( std::vector<VisualizerClass*>& visualizers )
178  {
179  ModelSetToEntityObjectMap::iterator i = myModelSetToEntityObjectMap.begin();
180  ModelSetToEntityObjectMap::iterator e = myModelSetToEntityObjectMap.end();
181  for( ; i != e; ++i )
182  {
183  i->second->visualizerSet->findVisualizers( visualizers );
184  }
185  }
186 
187  template<typename VisualizerClass>
188  inline void DtEntityElement::findVisualizersByDynamicCast( std::vector<VisualizerClass*>& visualizers )
189  {
190  ModelSetToEntityObjectMap::iterator i = myModelSetToEntityObjectMap.begin();
191  ModelSetToEntityObjectMap::iterator e = myModelSetToEntityObjectMap.end();
192  for( ; i != e; ++i )
193  {
194  i->second->visualizerSet->findVisualizersByDynamicCast( visualizers );
195  }
196  }
197 
199 }
200 
DtEntityKinematicState Controls kinematic state of a scene object This class has no accessors to kine...
Definition: DtEntityKinematicState.h:34
boost::unordered_map< int, DtEntityObjectStruct * > ModelSetToEntityObjectMap
Definition: DtEntityElement.h:59
void findVisualizers(std::vector< VisualizerClass * > &visualizers)
Find all visualizers Note this is for all model sets.
Definition: DtEntityElement.h:177
DtEntityKinematicState * kinematicState
Definition: DtEntityElement.h:43
Contains the DtStateListener class declaration.
Definition: DtElement.h:268
DtEntityObjectStruct()
Definition: DtEntityElement.h:45
DtEntityStateListener & myListener
Definition: DtEntityElement.h:169
The DtElement class implements the common behavior of simulation based elements added to the scene...
Definition: DtElement.h:41
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:39
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
Contains makVrv:DtStateVisualizer class.
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
Contains makVrv::DtElement class.
ElementType
Definition: DtElementEntry.h:26
void findVisualizersByDynamicCast(std::vector< VisualizerClass * > &visualizers)
Find all visualizers in all model sets if they satisfy the dynamic_cast to the VizualizerClass.
Definition: DtEntityElement.h:188
A single entity element. An entity element may be visualized using multiple visualizer sets one per m...
Definition: DtEntityElement.h:32
int modelSet
Definition: DtEntityElement.h:40
Base class to provide boost signal/slot management.
Contains makVrv:DtEntityVisualizerSet class. This class will contain and manage state visualizers...
Contains makVrv::DtUniqueID type.
Contains makVrv:DtEntityStateVisualizer class. Base class for other state visualizers such as articul...
This class is a set of entity visualizers, all of the visualizers in this set must support the entity...
Definition: DtEntityVisualizerSet.h:24
DtSceneObjectAgent * sceneObject
Definition: DtEntityElement.h:41
The DtStateListener is an abstract class. Subclasses implement functionality that will allow data to ...
Definition: DtStateListener.h:25
ModelSetToEntityObjectMap myModelSetToEntityObjectMap
Definition: DtEntityElement.h:171
Struct contains the scene object, the visualizer set, and the kin state object.
Definition: DtEntityElement.h:38
DtSignalConnectionManager myConnections
Definition: DtEntityElement.h:172
DtEntityVisualizerSet * visualizerSet
Definition: DtEntityElement.h:42
std::map< int, bool > ModelSetVisualizedMap
Definition: DtSharedModelSetSettings.h:27
DtEntityStateListener.
Definition: DtEntityStateListener.h:132
Contains DLL export macros.

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)