VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtStateVisualizer.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 #include <vrvCore/DtUniqueID.h>
16 #include <vrvUtil/DtUnicode.h>
17 
18 namespace makVrv
19 {
20  class DtSceneObjectAgent;
21  class DtBaseConnection;
22  class DtStateListener;
23  class DtVisualizerDefinition;
24  class DtVisualizerSchema;
25  enum class DtModelSetId;
26 
31  {
32 
33  public:
39  enum Type
40  {
41  AllVisualizerTypes = 0,
42  EntityVisualizerType = 1,
48  UserType = 10000
49  };
50 
55  {
56  TypeInfo(const std::string& fname,
57  const DtUnicode& sname,
59  const DtVisualizerSchema& s)
60  : functionalTypeName(fname)
61  , screenName(sname)
62  , supportedVisualizerType(type)
63  , schema(s)
64  {
65  }
66 
67  const std::string functionalTypeName;
71  };
72 
73  public:
75  DtStateVisualizer( DtBaseConnection& connection, DtStateListener& listener,
76  DtSceneObjectAgent* sceneObjectAgent, DtModelSetId modelSet );
77 
79  virtual ~DtStateVisualizer();
80 
82  virtual DtModelSetId modelSet();
83 
86  virtual void createModelAgents() = 0;
87 
89  virtual void destroyModelAgents() = 0;
90 
93  virtual const TypeInfo& typeInfo() const = 0;
94 
95  virtual void setSceneObjectAgent( DtSceneObjectAgent* sceneObject );
96 
98  void setModelDefinition(const std::string& definition);
99 
101  const std::string& modelDefinition() const;
102 
103 
108  virtual void implementVisibility(bool visible);
109 
111  virtual void initialize();
112 
116  virtual void slot_setSelected(bool b) {}
117 
120  void setName(const std::string&);
121  const std::string& name() const;
122 
124  virtual void setPickable(bool);
125  virtual bool pickable() const;
126 
127 
128  virtual DtUniqueID sceneObjectID() const
129  {
130  return mySceneObjectID;
131  }
132 
133  int visualizerType() const
134  {
135  return myVisualizerType;
136  }
137 
141  virtual void setVisualizerDefinition(const DtVisualizerDefinition&);
142 
143  //Get the listener for this visualizer.
145  {
146  return myListener;
147  }
148 
149  inline const DtStateListener& listener() const
150  {
151  return myListener;
152  }
153 
156  {
157  return mySimulation;
158  }
159 
161  void setDistribute(bool b)
162  {
163  myDistributeFlag = b;
164  }
165 
166  bool distribute() const
167  {
168  return myDistributeFlag;
169  }
170 
172  virtual bool isVisible() const;
173 
175  virtual bool setVisualizerIsVisible(bool vis, DtVisualizerShowHideContext::VisualizerShowHideContext context);
176 
177  protected:
178 
182  virtual void setModelDefinitionForAgents() = 0;
183 
185  virtual void connectToListenerSignals();
186 
189  virtual void makeVisible();
190 
191 
194  virtual void setInitialValuesFromVisualizerDefinition();
195 
197  template <typename T, typename C>
198  void connectAndUpdate(boost::signalslib::signal<void (T)>& sig,void (C::*fp)(T),T val)
199  {
200  myConnections.manageConnection(sig.connect(boost::bind(fp,
201  static_cast<C*>(this), boost::placeholders::_1)));
202  //Call this connection.
203  ((C&)(*this).*fp)(val);
204  }
205 
206  private:
209  DtStateVisualizer() = delete;
210 
213  DtStateVisualizer( const DtStateVisualizer& ) = delete;
214 
217  DtStateVisualizer& operator=( const DtStateVisualizer& ) = delete;
218 
219  protected:
220 
223 
225 
227  std::string myName;
228  std::string myModelDefinition;
233  bool myVisible;
235  DtSceneObjectAgent* mySceneObjectAgent;
237  typedef std::vector<DtVisualizerShowHideContext::VisualizerShowHideContext> ShowHideContextVector;
239 
240  };
241 
245  {
246  public:
247 
250  {
251  }
252 
255  {
256  }
257 
259  virtual DtStateVisualizerCreator* clone() const = 0;
260 
262  virtual DtStateVisualizer* create( DtBaseConnection& simulation,
263  DtStateListener& listener, DtSceneObjectAgent* sceneObjectAgent, DtModelSetId modelSet ) const = 0;
264 
266  virtual const DtStateVisualizer::TypeInfo& visualizerTypeInfo() const = 0;
267 
269  virtual const std::string& tag() = 0;
270 
271  };
272 
273  template <typename StateVisualizer>
275  {
276  public:
277 
280  {
281  }
282 
285  {
286  }
287 
289  {
291  }
292 
295  DtStateListener& listener, DtSceneObjectAgent* sceneObjectAgent, DtModelSetId modelSet ) const
296  {
297  return new StateVisualizer( simulation, listener, sceneObjectAgent, modelSet );
298  }
299 
302  {
303  return StateVisualizer::theTypeInfo();
304  }
305 
306  virtual const std::string& tag()
307  {
308  static const std::string theEmptyString;
309  return theEmptyString;
310  }
311  };
312 
313 }
314 
std::vector< DtVisualizerShowHideContext::VisualizerShowHideContext > ShowHideContextVector
Definition: DtStateVisualizer.h:237
A unicode string. DtUnicode stores a UTF-16 encoded unicode string. Code Point, a Unicode character...
Definition: DtUnicode.h:33
const DtStateVisualizer::Type supportedVisualizerType
Definition: DtStateVisualizer.h:69
TypeInfo(const std::string &fname, const DtUnicode &sname, DtStateVisualizer::Type type, const DtVisualizerSchema &s)
Definition: DtStateVisualizer.h:56
virtual void slot_setSelected(bool b)
This can be overridden by visualizers that need to be notified of selection changes; it is also used ...
Definition: DtStateVisualizer.h:116
bool myVisible
Definition: DtStateVisualizer.h:233
Contains integers that determine the context with which to show/hide a visualizer.
Abstract DtStateVisualizer creator.
Definition: DtStateVisualizer.h:244
DtSignalConnectionManager myConnections
Definition: DtStateVisualizer.h:229
Definition: DtStateVisualizer.h:274
DtUniqueID mySceneObjectID
Definition: DtStateVisualizer.h:226
DtStateListener & myListener
Definition: DtStateVisualizer.h:222
int visualizerType() const
Definition: DtStateVisualizer.h:133
DtModelSetId myModelSet
Definition: DtStateVisualizer.h:230
DtStateVisualizerCreator()
CTOR.
Definition: DtStateVisualizer.h:249
virtual ~DtStateVisualizerCreatorTemplate()
DTOR.
Definition: DtStateVisualizer.h:284
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:35
std::string myName
Definition: DtStateVisualizer.h:227
virtual DtStateVisualizer * create(DtBaseConnection &simulation, DtStateListener &listener, DtSceneObjectAgent *sceneObjectAgent, DtModelSetId modelSet) const
Create function.
Definition: DtStateVisualizer.h:294
std::string myModelDefinition
Definition: DtStateVisualizer.h:228
virtual DtUniqueID sceneObjectID() const
Definition: DtStateVisualizer.h:128
bool myPickable
Definition: DtStateVisualizer.h:232
#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
virtual const DtStateVisualizer::TypeInfo & visualizerTypeInfo() const
Returns the schema of the visualizer.
Definition: DtStateVisualizer.h:301
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtBaseConnection & simulation()
Get the connection for this visualizer.
Definition: DtStateVisualizer.h:155
virtual const std::string & tag()
Returns the creator&#39;s tag.
Definition: DtStateVisualizer.h:306
int myVisualizerType
Definition: DtStateVisualizer.h:231
DtStateVisualizerCreatorTemplate()
CTOR.
Definition: DtStateVisualizer.h:279
virtual DtStateVisualizerCreator * clone() const
Every derived class must override this method.
Definition: DtStateVisualizer.h:288
const DtUnicode screenName
Definition: DtStateVisualizer.h:68
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
The DtStateVisualizer is an abstract class. Developers derive from this to create logic that &quot;directs...
Definition: DtStateVisualizer.h:30
Base class to provide boost signal/slot management.
virtual ~DtStateVisualizerCreator()
DTOR.
Definition: DtStateVisualizer.h:254
A definition of a visualizer. Visualizer definition are always members of a visualizer definition set...
Definition: DtVisualizerDefinition.h:26
const DtStateListener & listener() const
Definition: DtStateVisualizer.h:149
Contains makVrv::DtUniqueID type.
const std::string functionalTypeName
Definition: DtStateVisualizer.h:67
Definition: DtStateVisualizer.h:45
VisualizerShowHideContext
Definition: DtShowHideContext.h:41
void setDistribute(bool b)
Whether or not to distribute over the network.
Definition: DtStateVisualizer.h:161
bool distribute() const
Definition: DtStateVisualizer.h:166
DtModelSetId
Definition: DtModelSetEnums.h:19
void connectAndUpdate(boost::signalslib::signal< void(T)> &sig, void(C::*fp)(T), T val)
Connect a signal and update the entity.
Definition: DtStateVisualizer.h:198
DtSceneObjectAgent * mySceneObjectAgent
Definition: DtStateVisualizer.h:235
The DtStateListener is an abstract class. Subclasses implement functionality that will allow data to ...
Definition: DtStateListener.h:26
ShowHideContextVector myVisualizerShowHideContexts
Definition: DtStateVisualizer.h:238
bool myInitialInitializeDone
Definition: DtStateVisualizer.h:236
Definition: DtVisualizerSchema.h:19
const DtVisualizerSchema & schema
Definition: DtStateVisualizer.h:70
Struct to hold metadata about each functional visualizer type This allows users of the factory to get...
Definition: DtStateVisualizer.h:54
bool myDistributeFlag
Definition: DtStateVisualizer.h:224
const DtVisualizerDefinition * myVisualizerDefinition
Definition: DtStateVisualizer.h:234
DtStateListener & listener()
Definition: DtStateVisualizer.h:144
DtBaseConnection & mySimulation
Definition: DtStateVisualizer.h:221
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)