VR-Forces 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) 2024 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>
22 
23 #include <array>
24 
25 namespace makVrv
26 {
27  class DtSceneObjectAgent;
28  class DtEntityKinematicState;
29  class DtBaseConnection;
30 
34  {
35  public:
36 
39  {
41  DtSceneObjectAgent* sceneObject;
43 
46  , sceneObject( nullptr )
47  , visualizerSet( nullptr )
48  {
49  }
50 
52  DtModelSetData( DtModelSetId ms ) : modelSet( ms )
53  , sceneObject( nullptr )
54  , visualizerSet( nullptr )
55  {
56  }
57 
59  DtModelSetData( const DtModelSetData& ) = delete;
60 
62  DtModelSetData& operator=( const DtModelSetData& ) = delete;
63  };
64 
66  using ModelSetDataArray = std::array<DtModelSetData, MAX_MODEL_SETS>;
67 
70 
72  virtual ~DtEntityElement();
73 
75  DtEntityElement() = delete;
76 
78  DtEntityElement(const DtEntityElement&) = delete;
79 
81  DtEntityElement& operator=(const DtEntityElement&) = delete;
82 
83  public:
91  virtual void visualize( const DtSharedModelSetSettings::ModelSetVisualizedMap& sets ) override;
92 
100  virtual void setModelSetEnabled( DtModelSetId modelSet, bool enabled ) override;
101 
104  virtual void setObjectIsVisible(bool visible);
105  virtual bool objectIsVisible() const;
106 
108  virtual const ModelSetDataArray& modelSetDataArray() const;
109 
112  template <typename VisualizerClass>
113  void findVisualizers( std::vector<VisualizerClass*>& visualizers );
114 
116  template <typename VisualizerClass>
117  void findVisualizersByDynamicCast( std::vector<VisualizerClass*>& visualizers );
118 
120  virtual DtEntityStateListener& entityStateListener();
121 
123  virtual const DtElementEntry::ElementType elementType() const override;
124  static const DtElementEntry::ElementType theElementType();
125 
127  virtual void update2DEmbarkationVisibility();
128 
132  virtual void createVisualizersByModelSetAndType( DtModelSetId modelSet, int visualType);
133  virtual void destroyVisualizersByModelSetAndType( DtModelSetId modelSet, int visualType);
135 
137 
138  virtual const DtModelSetData* findModelSetData( DtModelSetId modelSet ) const ;
139  virtual DtModelSetData* findModelSetData( DtModelSetId modelSet );
140  virtual DtSceneObjectAgent* findSceneObjectForModelSet( DtModelSetId modelSet ) const ;
141  virtual DtEntityVisualizerSet* findVisualizerSetForModelSet( DtModelSetId modelSet ) const ;
143  virtual DtEntityKinematicState* findKinematicState() const;
144 
146 
147  virtual void setSmoothingEnabled( bool enabled );
150 
154  virtual void setGroundClampingEnabled( bool enabled );
156 
160  virtual void setPickable( bool pickable );
162  virtual void setPickable( bool pickable, DtModelSetId modelSet );
164 
166 
167  virtual std::vector<DtUniqueID> sceneObjectUniqueIds();
171  virtual DtUniqueID sceneObjectIdForModelSet( DtModelSetId modelSet );
173 
175  virtual bool isLeafNode() const;
176 
178  virtual void setHierarchyParent(DtElementID parentId);
181  virtual DtElementID hierarchyParent() const;
183 
185  virtual void slot_showLeafNodes3DEnabledChanged(bool onOrOff);
186 
187  protected:
189  virtual void slot_visibilityChanged(bool vis);
190 
193  void slot_setObjectIsVisibleCalled(bool vis, DtShowHideContext::ShowHideContext context);
194 
196  virtual DtEntityKinematicState* createKinState();
197 
199  virtual void processElementParameters();
200 
201  protected:
207  };
208 
209  template<typename VisualizerClass>
210  inline void DtEntityElement::findVisualizers( std::vector<VisualizerClass*>& visualizers )
211  {
212  for( auto& val : myModelSetDataArray )
213  {
214  if( val.visualizerSet )
215  {
216  val.visualizerSet->findVisualizers( visualizers );
217  }
218  }
219  }
220 
221  template<typename VisualizerClass>
222  inline void DtEntityElement::findVisualizersByDynamicCast( std::vector<VisualizerClass*>& visualizers )
223  {
224  for( auto& val : myModelSetDataArray )
225  {
226  if( val.visualizerSet )
227  {
228  val.visualizerSet->findVisualizersByDynamicCast( visualizers );
229  }
230  }
231  }
232 
234 }
235 
DtElementID myHierarchyParent
Definition: DtEntityElement.h:206
std::array< DtModelSetData, MAX_MODEL_SETS > ModelSetDataArray
MAX_MODEL_SETS is defined in DtModelSetEnums.h.
Definition: DtEntityElement.h:66
DtEntityKinematicState Controls kinematic state of all scene objects for an element This class has no...
Definition: DtEntityKinematicState.h:60
void findVisualizers(std::vector< VisualizerClass * > &visualizers)
Find all visualizers Note this is for all model sets.
Definition: DtEntityElement.h:210
ModelSetDataArray myModelSetDataArray
Definition: DtEntityElement.h:204
ShowHideContext
Definition: DtShowHideContext.h:18
Struct contains the scene object and the visualizer set.
Definition: DtEntityElement.h:38
Contains the DtStateListener class declaration.
DtEntityKinematicState * myEntityElementKinematicState
Definition: DtEntityElement.h:203
DtUniqueID DtElementID
The ElementID is a specific type of unique ID used to represent VR-Vantage uniquely defined elements...
Definition: DtUniqueID.h:23
Definition: DtElement.h:277
DtEntityStateListener & myListener
Definition: DtEntityElement.h:202
The DtElement class implements the common behavior of simulation based elements added to the scene...
Definition: DtElement.h:44
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:35
DtModelSetData(DtModelSetId ms)
constructor
Definition: DtEntityElement.h:52
#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
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
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:222
A single entity element. An entity element may be visualized using multiple visualizer sets one per m...
Definition: DtEntityElement.h:33
DtEntityVisualizerSet * visualizerSet
Definition: DtEntityElement.h:42
Base class to provide boost signal/slot management.
DtModelSetId modelSet
Definition: DtEntityElement.h:40
Contains makVrv:DtEntityVisualizerSet class. This class will contain and manage state visualizers...
std::map< DtModelSetId, bool > ModelSetVisualizedMap
Definition: DtSharedModelSetSettings.h:28
DtSceneObjectAgent * sceneObject
Definition: DtEntityElement.h:41
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
DtModelSetId
Definition: DtModelSetEnums.h:19
The DtStateListener is an abstract class. Subclasses implement functionality that will allow data to ...
Definition: DtStateListener.h:26
DtModelSetData()
constructor
Definition: DtEntityElement.h:45
DtSignalConnectionManager myConnections
Definition: DtEntityElement.h:205
Contains various enum classes relating to model sets.
DtEntityStateListener.
Definition: DtEntityStateListener.h:137
Contains DLL export macros.

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)