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) 2022 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 namespace makVrv
24 {
25  class DtSceneObjectAgent;
26  class DtEntityKinematicState;
27  class DtBaseConnection;
28 
32  {
33  public:
34 
37  {
39  DtSceneObjectAgent* sceneObject;
41 
44  , sceneObject( nullptr )
45  , visualizerSet( nullptr )
46  {
47  }
48 
50  DtModelSetData( DtModelSetId ms ) : modelSet( ms )
51  , sceneObject( nullptr )
52  , visualizerSet( nullptr )
53  {
54  }
55 
57  DtModelSetData( const DtModelSetData& ) = delete;
58 
60  DtModelSetData& operator=( const DtModelSetData& ) = delete;
61  };
62 
64  using ModelSetDataArray = std::array<DtModelSetData, MAX_MODEL_SETS>;
65 
68 
70  virtual ~DtEntityElement();
71 
73  DtEntityElement() = delete;
74 
76  DtEntityElement(const DtEntityElement&) = delete;
77 
79  DtEntityElement& operator=(const DtEntityElement&) = delete;
80 
81  public:
89  virtual void visualize( const DtSharedModelSetSettings::ModelSetVisualizedMap& sets ) override;
90 
98  virtual void setModelSetEnabled( DtModelSetId modelSet, bool enabled ) override;
99 
102  virtual void setObjectIsVisible(bool visible);
103  virtual bool objectIsVisible() const;
104 
106  virtual const ModelSetDataArray& modelSetDataArray() const;
107 
110  template <typename VisualizerClass>
111  void findVisualizers( std::vector<VisualizerClass*>& visualizers );
112 
114  template <typename VisualizerClass>
115  void findVisualizersByDynamicCast( std::vector<VisualizerClass*>& visualizers );
116 
118  virtual DtEntityStateListener& entityStateListener();
119 
121  virtual const DtElementEntry::ElementType elementType() const override;
122  static const DtElementEntry::ElementType theElementType();
123 
125  virtual void update2DEmbarkationVisibility();
126 
130  virtual void createVisualizersByModelSetAndType( DtModelSetId modelSet, int visualType);
131  virtual void destroyVisualizersByModelSetAndType( DtModelSetId modelSet, int visualType);
133 
135 
136  virtual const DtModelSetData* findModelSetData( DtModelSetId modelSet ) const ;
137  virtual DtModelSetData* findModelSetData( DtModelSetId modelSet );
138  virtual DtSceneObjectAgent* findSceneObjectForModelSet( DtModelSetId modelSet ) const ;
139  virtual DtEntityVisualizerSet* findVisualizerSetForModelSet( DtModelSetId modelSet ) const ;
141  virtual DtEntityKinematicState* findKinematicState() const;
142 
144 
145  virtual void setSmoothingEnabled( bool enabled );
148 
152  virtual void setGroundClampingEnabled( bool enabled );
154 
158  virtual void setPickable( bool pickable );
160  virtual void setPickable( bool pickable, DtModelSetId modelSet );
162 
164 
165  virtual std::vector<DtUniqueID> sceneObjectUniqueIds();
169  virtual DtUniqueID sceneObjectIdForModelSet( DtModelSetId modelSet );
171 
173  virtual bool isLeafNode() const;
174 
176  virtual void setHierarchyParent(DtElementID parentId);
179  virtual DtElementID hierarchyParent() const;
181 
183  virtual void slot_showLeafNodes3DEnabledChanged(bool onOrOff);
184 
185  protected:
187  virtual void slot_visibilityChanged(bool vis);
188 
191  void slot_setObjectIsVisibleCalled(bool vis, DtShowHideContext::ShowHideContext context);
192 
194  virtual DtEntityKinematicState* createKinState();
195 
197  virtual void processElementParameters();
198 
199  protected:
205  };
206 
207  template<typename VisualizerClass>
208  inline void DtEntityElement::findVisualizers( std::vector<VisualizerClass*>& visualizers )
209  {
210  for( auto& val : myModelSetDataArray )
211  {
212  if( val.visualizerSet )
213  {
214  val.visualizerSet->findVisualizers( visualizers );
215  }
216  }
217  }
218 
219  template<typename VisualizerClass>
220  inline void DtEntityElement::findVisualizersByDynamicCast( std::vector<VisualizerClass*>& visualizers )
221  {
222  for( auto& val : myModelSetDataArray )
223  {
224  if( val.visualizerSet )
225  {
226  val.visualizerSet->findVisualizersByDynamicCast( visualizers );
227  }
228  }
229  }
230 
232 }
233 
DtElementID myHierarchyParent
Definition: DtEntityElement.h:204
std::array< DtModelSetData, MAX_MODEL_SETS > ModelSetDataArray
MAX_MODEL_SETS is defined in DtModelSetEnums.h.
Definition: DtEntityElement.h:64
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:208
ModelSetDataArray myModelSetDataArray
Definition: DtEntityElement.h:202
ShowHideContext
Definition: DtShowHideContext.h:18
Struct contains the scene object and the visualizer set.
Definition: DtEntityElement.h:36
Contains the DtStateListener class declaration.
DtEntityKinematicState * myEntityElementKinematicState
Definition: DtEntityElement.h:201
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:200
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:50
#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:220
A single entity element. An entity element may be visualized using multiple visualizer sets one per m...
Definition: DtEntityElement.h:31
DtEntityVisualizerSet * visualizerSet
Definition: DtEntityElement.h:40
Base class to provide boost signal/slot management.
DtModelSetId modelSet
Definition: DtEntityElement.h:38
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:39
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:43
DtSignalConnectionManager myConnections
Definition: DtEntityElement.h:203
Contains various enum classes relating to model sets.
DtEntityStateListener.
Definition: DtEntityStateListener.h:137
Contains DLL export macros.

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)