VR-Forces 5.0.3 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtTacticalGraphicElement.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 
14 #include <vrvCore/DtElement.h>
15 
16 #include <vrvCore/DtUniqueID.h>
17 #include <vrvCore/DtObserverMode.h>
19 
22 
24 
25 #include <boost/unordered_map.hpp>
26 
27 namespace makVrv
28 {
29  class DtSceneObjectAgent;
30  class DtTacticalGraphicStateListener;
31  class DtEnvironmentalKinematicState;
32 
36  {
37  public:
41  {
42  int modelSet;
43  DtSceneObjectAgent* sceneObject;
46 
48  , sceneObject( nullptr )
49  , visualizerSet( nullptr )
50  , kinematicState( nullptr )
51  {
52  }
53 
56 
59  };
60 
61  using ModelSetToTacticalGraphicObjectMap = boost::unordered_map<int, DtTacticalGraphicObjectStruct*>;
62 
65 
67  virtual ~DtTacticalGraphicElement();
68 
70  DtTacticalGraphicElement() = delete;
71 
74 
76  DtTacticalGraphicElement& operator=( const DtTacticalGraphicElement& ) = delete;
77  public:
79  virtual void visualize( const DtSharedModelSetSettings::ModelSetVisualizedMap& sets ) override;
80 
88  virtual void setModelSetEnabled( int modelSet, bool enabled ) override;
89 
90  virtual void createVisualizersByModelSetAndType( int modelSet, int visualType );
91  virtual void destroyVisualizersByModelSetAndType( int modelSet, int visualType );
92 
95  template <typename VisualizerClass>
96  void findVisualizers( std::vector<VisualizerClass*>& visualizers );
97 
99  template <typename VisualizerClass>
100  void findVisualizersByDynamicCast( std::vector<VisualizerClass*>& visualizers );
101 
103  virtual void setVisible( bool vis ) override;
104 
106  virtual const ModelSetToTacticalGraphicObjectMap& tacticalGraphicObjectMap() const;
107 
109 
110  virtual DtTacticalGraphicObjectStruct* findObjectStructForModelSet( int modelSet ) const;
111  virtual DtSceneObjectAgent* findSceneObjectForModelSet( int modelSet ) const ;
112  virtual DtTacticalGraphicVisualizerSet* findVisualizerSetForModelSet( int modelSet ) const ;
113  virtual DtEnvironmentalKinematicState* findKinematicStateForModelSet( int modelSet) const;
115 
117  virtual DtTacticalGraphicStateListener& tacticalGraphicStateListener();
118 
120  virtual const DtElementEntry::ElementType elementType() const override;
121  static const DtElementEntry::ElementType theElementType();
122 
125  virtual void slot_forceChanged( DtForceType force );
126 
129  virtual DtEnvironmentalKinematicState* createKinState( DtSceneObjectAgent* sceneObject, const int modelSet);
130 
134  virtual void setPickable( bool pickable );
136  virtual void setPickable( bool pickable, int modelSet );
138 
140 
141  virtual std::vector<DtUniqueID> sceneObjectUniqueIds();
145  virtual DtUniqueID sceneObjectIdForModelSet( int modelSet );
147  protected:
149  void setKindAndCategory( int kind, int category );
150 
152  void reportKindAndCategory();
153 
155  virtual void slot_visibilityChanged(bool vis);
156 
157  protected:
159 
162 
163  std::pair<int, int> myKindCategory;
164  };
165 
166  template<typename VisualizerClass>
167  inline void DtTacticalGraphicElement::findVisualizers( std::vector<VisualizerClass*>& visualizers )
168  {
169  auto i = myModelSetToTacticalGraphicObjectMap.begin();
171  for( ; i != e; ++i )
172  {
173  i->second->visualizerSet->findVisualizers( visualizers );
174  }
175  }
176 
177  template<typename VisualizerClass>
178  inline void DtTacticalGraphicElement::findVisualizersByDynamicCast( std::vector<VisualizerClass*>& visualizers )
179  {
180  auto i = myModelSetToTacticalGraphicObjectMap.begin();
182  for( ; i != e; ++i )
183  {
184  i->second->visualizerSet->findVisualizersByDynamicCast( visualizers );
185  }
186  }
187 
189 }
190 
DtTacticalGraphicObjectStruct()
Definition: DtTacticalGraphicElement.h:47
DtTacticalGraphicVisualizerSet * visualizerSet
Definition: DtTacticalGraphicElement.h:44
Struct contains the scene object, the visualizer set, and the kin state object.
Definition: DtTacticalGraphicElement.h:40
ModelSetToTacticalGraphicObjectMap myModelSetToTacticalGraphicObjectMap
Definition: DtTacticalGraphicElement.h:160
DtSceneObjectAgent * sceneObject
Definition: DtTacticalGraphicElement.h:43
boost::unordered_map< int, DtTacticalGraphicObjectStruct * > ModelSetToTacticalGraphicObjectMap
Definition: DtTacticalGraphicElement.h:61
The DtTacticalGraphicStateListener is a class that deals with basic TacticalGraphic process code (suc...
Definition: DtTacticalGraphicStateListener.h:24
std::pair< int, int > myKindCategory
Definition: DtTacticalGraphicElement.h:163
DtSignalConnectionManager myConnections
Definition: DtTacticalGraphicElement.h:161
Definition: DtElement.h:268
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:38
Contains vrvCore::DtObserverMode class.
DtEnvironmentalKinematicState Controls kinematic state of a scene object. This class has no accessors...
Definition: DtEnvironmentalKinematicState.h:34
Contains the DtTacticalGraphicVisualizerSet class declaration.
int modelSet
Definition: DtTacticalGraphicElement.h:42
#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
void findVisualizers(std::vector< VisualizerClass * > &visualizers)
Find all visualizers Note this is for all model sets.
Definition: DtTacticalGraphicElement.h:167
Contains makVrv::DtElement class.
ElementType
Definition: DtElementEntry.h:26
Contains makVrv:DtEnvironmentalStateListener class.
A single tactical graphic element. A tactical graphic element may be visualized using multiple visual...
Definition: DtTacticalGraphicElement.h:35
Base class to provide boost signal/slot management.
void findVisualizersByDynamicCast(std::vector< VisualizerClass * > &visualizers)
Find all visualizers in all model sets if they satisfy the dynamic_cast to the VizualizerClass.
Definition: DtTacticalGraphicElement.h:178
A visualizer is created for each entity state listener which it will drive it.
Definition: DtTacticalGraphicVisualizerSet.h:27
DtEnvironmentalKinematicState * kinematicState
Definition: DtTacticalGraphicElement.h:45
Contains makVrv::DtUniqueID type.
DtTacticalGraphicStateListener & myListener
Definition: DtTacticalGraphicElement.h:158
The DtStateListener is an abstract class. Subclasses implement functionality that will allow data to ...
Definition: DtStateListener.h:25
std::map< int, bool > ModelSetVisualizedMap
Definition: DtSharedModelSetSettings.h:27
Contains DLL export macros.

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)