VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtVisualizerSet.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2024 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
9 #pragma once
10 
14 #include <vrvCore/DtMouseState.h>
15 
17 
18 namespace makVrv
19 {
20  class DtBaseConnection;
21  class DtStateListener;
22  class DtStateVisualizerFactory;
23  class DtElementDefinition;
24  class DtVisualizerDefinitionSet;
25  class DtVisualizerDefinition;
26  class DtSceneObjectAgent;
27 
32  {
33  public:
34 
35  using VisualizerList = std::vector<DtStateVisualizer*> ;
36 
39  DtSceneObjectAgent* sceneObject, DtModelSetId modelSet, bool distribute );
40 
42  virtual ~DtVisualizerSet();
43 
45  virtual void visualizeElementDefinition(const DtUnicode& elementName,
46  const DtElementDefinition& def,
48 
50  virtual void visualizeElementDefinition(const DtUnicode& elementName,
51  const DtElementDefinition& def);
52 
58  virtual void createVisualizersByType( int visualType );
59 
62  virtual void destroyVisualizersByType( int visualType );
63 
65  const DtElementDefinition* definition() const;
66  virtual void setElementDefinition( const DtElementDefinition* def );
67 
69  DtModelSetId modelSet() const;
70 
72  template <typename VisualizerClass>
73  inline void findVisualizers(std::vector<VisualizerClass*>& visualizers);
74 
78  template <typename VisualizerClass>
79  inline void findVisualizersByDynamicCast(std::vector<VisualizerClass*>& visualizers);
80 
82  virtual void findVisualizers(const DtVisualizerSchema&,
83  VisualizerList& visualizers);
84 
86  virtual DtUniqueID sceneObjectID() const;
87 
89  virtual void setPickable( bool pickable );
90 
92  bool pickable() const;
93 
96  virtual bool addVisualizer(const DtVisualizerDefinition& def);
97 
99  virtual void destroyAllModelVisualizers();
100 
102  virtual DtStateVisualizer::Type supportsVisualizerType() const;
103 
105  DtStateListener& listener() const;
106 
112  virtual void setVisible(bool visible, DtVisualizerShowHideContext::VisualizerShowHideContext);
113 
116  virtual bool anyVisualizersVisible() const;
117 
118  protected:
120  void destroyAllModelVisualizersInternal();
121  public:
124  virtual void visualizeVisualizerDefinitionSet(const DtUnicode& elementName,
125  const DtVisualizerDefinitionSet& set,
127  protected:
129  virtual DtStateVisualizer* createVisualizerFromDefinition(const DtVisualizerDefinition& def);
130 
134  virtual void addVisualizer(const std::string& schemaName,
135  DtStateVisualizer* visualizer);
136 
138  virtual bool suppressVisualizerCreation( const DtVisualizerDefinition* visDef,
140  creationMap) const;
141 
144  virtual int findVisualType( const DtVisualizerDefinition& visDef ) const;
145 
148  template <typename T, typename C>
149  void connectAndUpdate(boost::signalslib::signal<void (T)>& sig, void (C::*fp)(T), T val)
150  {
151  myConnections.manageConnection(sig.connect(boost::bind(fp, static_cast<C*>(this), boost::placeholders::_1)));
152  ((C&)(*this).*fp)(val);
153  }
154 
155  protected:
156 
159  const DtUnicode* chooseRandomString(const std::vector<DtUnicode>& stringList);
160 
161  protected:
162  typedef boost::unordered_multimap<std::string,DtStateVisualizer* >StateVisualizerMap;
163 
170 
172  bool myVisible;
174 
175  DtSceneObjectAgent* mySceneObjectAgent;
176 
178 
179  std::string myVisualTypeString;
180  };
181 
182  template <typename VisualizerClass>
184  std::vector<VisualizerClass*>& visualizers)
185  {
186  std::pair<StateVisualizerMap::iterator,
187  StateVisualizerMap::iterator> range = myVisualizers.equal_range(
188  VisualizerClass::theTypeInfo().schema.name());
189 
190  for(; range.first != range.second; ++range.first)
191  {
192  VisualizerClass* instance = dynamic_cast<VisualizerClass*>(
193  range.first->second);
194  if(instance)
195  {
196  visualizers.push_back(instance);
197  }
198  }
199  }
200 
201  template <typename VisualizerClass>
203  std::vector<VisualizerClass*>& visualizers)
204  {
205  StateVisualizerMap::const_iterator iter = myVisualizers.begin();
206 
207  for(; iter != myVisualizers.end(); ++iter)
208  {
209  VisualizerClass* instance = dynamic_cast<VisualizerClass*>(iter->second);
210 
211  if (instance)
212  {
213  visualizers.push_back(instance);
214  }
215  }
216  }
217 }
DtStateVisualizerFactory & myCachedFactory
Definition: DtVisualizerSet.h:165
Contains makVrv::DtVisualizerSchema class.
void findVisualizers(std::vector< VisualizerClass * > &visualizers)
Find all instances of a Visualizer by schema name.
Definition: DtVisualizerSet.h:183
A unicode string. DtUnicode stores a UTF-16 encoded unicode string. Code Point, a Unicode character...
Definition: DtUnicode.h:33
DtSignalConnectionManager myConnections
Definition: DtVisualizerSet.h:168
boost::unordered_multimap< std::string, DtStateVisualizer * > StateVisualizerMap
Definition: DtVisualizerSet.h:162
bool myVisible
Definition: DtVisualizerSet.h:172
Contains integers that determine the context with which to show/hide a visualizer.
std::unordered_map< DtModelSetId, ModelSetVisualizerCreationMap > VisualTypeVisualizerCreationMap
Map that indicates whether a visualizer should be created, by visual type, for all given model sets...
Definition: DtVisualizerCreationSettings.h:43
DtModelSetId myModelSet
Definition: DtVisualizerSet.h:177
The makVrv::DtVisualizerDefinitionSet is a collection of makVrv::DtVisualizerDefinition instances...
Definition: DtVisualizerDefinitionSet.h:28
DtSceneObjectAgent * mySceneObjectAgent
Definition: DtVisualizerSet.h:175
const DtElementDefinition * myDefinition
Definition: DtVisualizerSet.h:169
A factory for DtStateVisualizer&#39;s.
Definition: DtStateVisualizerFactory.h:30
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:35
StateVisualizerMap myVisualizers
Definition: DtVisualizerSet.h:167
This file contains the declaration for the class DtMouseState.
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
Type
Visualizer class types that are supportable via visualizers. Each visualizer can be created by an ins...
Definition: DtStateVisualizer.h:39
Contains makVrv:DtStateVisualizer class.
The element definition class contains the element definition information. The makVrv::DtElementDefini...
Definition: DtElementDefinition.h:26
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
std::string myVisualTypeString
Definition: DtVisualizerSet.h:179
Contains makVrv::DtVisualizerCreationSettings class.
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
void connectAndUpdate(boost::signalslib::signal< void(T)> &sig, void(C::*fp)(T), T val)
Utility function for connect a signal to an update function as well as calling the update function...
Definition: DtVisualizerSet.h:149
bool myPickable
Definition: DtVisualizerSet.h:171
This contains all the DtVisualizers used to visualize an element in a particular model set...
Definition: DtVisualizerSet.h:31
The DtStateVisualizer is an abstract class. Developers derive from this to create logic that &quot;directs...
Definition: DtStateVisualizer.h:30
std::vector< DtStateVisualizer * > VisualizerList
Definition: DtVisualizerSet.h:35
DtStateListener & myStateListener
Definition: DtVisualizerSet.h:166
DtBaseConnection & myBaseConnection
Definition: DtVisualizerSet.h:164
void findVisualizersByDynamicCast(std::vector< VisualizerClass * > &visualizers)
Find all instance of a visualizer by dynamically casting to the class type rather than doing the fast...
Definition: DtVisualizerSet.h:202
A definition of a visualizer. Visualizer definition are always members of a visualizer definition set...
Definition: DtVisualizerDefinition.h:26
VisualizerShowHideContext
Definition: DtShowHideContext.h:41
DtModelSetId
Definition: DtModelSetEnums.h:19
The DtStateListener is an abstract class. Subclasses implement functionality that will allow data to ...
Definition: DtStateListener.h:26
Definition: DtVisualizerSchema.h:19
bool myDistribute
Definition: DtVisualizerSet.h:173

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)