VR-Forces 5.0.2 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) 2022 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/vrvCore.h>
13 #include <vrvCore/DtUniqueID.h>
14 #include <vrvCore/DtObserverMode.h>
17 #include <vrvUtil/DtUnicode.h>
18 #include <boost/bind.hpp>
19 
20 
21 namespace makVrv
22 {
23  class DtSceneObjectAgent;
24  class DtBaseConnection;
25  class DtStateListener;
26  class DtVisualizerDefinition;
27  class DtVisualizerSchema;
28 
33  {
34 
35  public:
41  enum Type
42  {
43  AllVisualizerTypes = 0,
44  EntityVisualizerType = 1,
50  UserType = 10000
51  };
52 
57  {
58  TypeInfo(const std::string& fname,
59  const DtUnicode& sname,
61  const DtVisualizerSchema& s)
62  : functionalTypeName(fname)
63  , screenName(sname)
64  , supportedVisualizerType(type)
65  , schema(s)
66  {
67  }
68 
69  const std::string functionalTypeName;
73  };
74 
75  public:
77  DtStateVisualizer(DtBaseConnection& connection, DtStateListener& listener,
78  int modelSet);
79 
81  DtStateVisualizer( DtBaseConnection& connection, DtStateListener& listener,
82  DtSceneObjectAgent* sceneObjectAgent, int modelSet );
83 
85  virtual ~DtStateVisualizer();
86 
88  virtual DtObserverMode::ModelSets modelSet();
89 
92  virtual void createModelAgents() = 0;
93 
95  virtual void destroyModelAgents() = 0;
96 
99  virtual const TypeInfo& typeInfo() const = 0;
100 
104  virtual void setParent(DtStateVisualizer*);
105 
106  virtual void setSceneObjectAgent( DtSceneObjectAgent* sceneObject );
107 
109  virtual const DtStateVisualizer* parent() const;
110 
112  void setModelDefinition(const std::string& definition);
113 
115  const std::string& modelDefinition() const;
116 
117 
122  virtual void implementVisibility(bool visible);
123 
125  virtual void initialize();
126 
130  virtual void slot_setSelected(bool b) {}
131 
134  void setName(const std::string&);
135  const std::string& name() const;
136 
138  virtual void setPickable(bool);
139  virtual bool pickable() const;
140 
141  virtual void setSceneObjectID(DtUniqueID id);
142 
143  virtual DtUniqueID sceneObjectID() const
144  {
145  return mySceneObjectID;
146  }
147 
148  int visualizerType() const
149  {
150  return myVisualizerType;
151  }
152 
156  virtual void setVisualizerDefinition(const DtVisualizerDefinition&);
157 
158  //Get the listener for this visualizer.
160  {
161  return myListener;
162  }
163 
164  inline const DtStateListener& listener() const
165  {
166  return myListener;
167  }
168 
171  {
172  return mySimulation;
173  }
174 
176  void setDistribute(bool b)
177  {
178  myDistributeFlag = b;
179  }
180 
181  bool distribute() const
182  {
183  return myDistributeFlag;
184  }
185 
187  virtual bool setVisualizerIsVisible(bool vis, DtVisualizerShowHideContext::VisualizerShowHideContext context);
188 
192  boost::signalslib::signal<void (DtStateVisualizer*, DtStateVisualizer*,
194 
195  protected:
196 
200  virtual void setModelDefinitionForAgents() = 0;
201 
203  virtual void connectToListenerSignals();
204 
207  virtual void makeVisible();
208 
210  virtual bool isVisible() const;
211 
212 
215  virtual void setInitialValuesFromVisualizerDefinition();
216 
218  template <typename T, typename C>
219  void connectAndUpdate(boost::signalslib::signal<void (T)>& sig,void (C::*fp)(T),T val)
220  {
221  myConnections.manageConnection(sig.connect(boost::bind(fp,
222  static_cast<C*>(this), _1)));
223  //Call this connection.
224  ((C&)(*this).*fp)(val);
225  }
226 
227  private:
230  DtStateVisualizer() = delete;
231 
234  DtStateVisualizer( const DtStateVisualizer& ) = delete;
235 
238  DtStateVisualizer& operator=( const DtStateVisualizer& ) = delete;
239 
240  protected:
241 
244 
246 
248  std::string myName;
249  std::string myModelDefinition;
254  bool myVisible;
257  DtSceneObjectAgent* mySceneObjectAgent;
259  typedef std::vector<DtVisualizerShowHideContext::VisualizerShowHideContext> ShowHideContextVector;
261 
262  };
263 
267  {
268  public:
269 
272  {
273  }
274 
277  {
278  }
279 
281  virtual DtStateVisualizerCreator* clone() const = 0;
282 
284  virtual DtStateVisualizer* create(DtBaseConnection& simulation,
285  DtStateListener& listener, int modelSet) const = 0;
286 
289  DtStateListener& listener, DtSceneObjectAgent* sceneObjectAgent, int modelSet ) const
290  {
291  // Please override for updated visualizers
292  // XXX not pure virtual yet XXX
293  return nullptr;
294  };
295 
297  virtual const DtStateVisualizer::TypeInfo& visualizerTypeInfo() const = 0;
298 
300  virtual const std::string& tag() = 0;
301 
302  };
303 
304  template <typename StateVisualizer>
306  {
307  public:
308 
311  {
312  }
313 
316  {
317  }
318 
320  {
322  }
323 
326  DtStateListener& listener, int modelSet) const
327  {
328  return new StateVisualizer(simulation, listener, modelSet);
329  }
330 
333  DtStateListener& listener, DtSceneObjectAgent* sceneObjectAgent, int modelSet ) const
334  {
335  return new StateVisualizer( simulation, listener, sceneObjectAgent, modelSet );
336  }
337 
340  {
341  return StateVisualizer::theTypeInfo();
342  }
343 
344  virtual const std::string& tag()
345  {
346 #ifdef DtDIS
347  const static std::string str("DIS");
348 #elif DtHLA_1516_EVOLVED
349  const static std::string str("HLA1516e");
350 #elif DtHLA_1516
351  const static std::string str("HLA1516");
352 #elif DtHLA
353  const static std::string str("HLA13");
354 #else
355  const static std::string str("");
356 #endif
357  return str;
358  }
359  };
360 
361 }
362 
std::vector< DtVisualizerShowHideContext::VisualizerShowHideContext > ShowHideContextVector
Definition: DtStateVisualizer.h:259
ModelSets
Definition: DtObserverMode.h:32
A unicode string. DtUnicode stores a UTF-16 encoded unicode string. Code Point, a Unicode character...
Definition: DtUnicode.h:33
virtual DtStateVisualizer * create(DtBaseConnection &simulation, DtStateListener &listener, DtSceneObjectAgent *sceneObjectAgent, int modelSet) const
Create function.
Definition: DtStateVisualizer.h:288
const DtStateVisualizer::Type supportedVisualizerType
Definition: DtStateVisualizer.h:71
TypeInfo(const std::string &fname, const DtUnicode &sname, DtStateVisualizer::Type type, const DtVisualizerSchema &s)
Definition: DtStateVisualizer.h:58
int myModelSet
Definition: DtStateVisualizer.h:251
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:130
bool myVisible
Definition: DtStateVisualizer.h:254
Contains integers that determine the context with which to show/hide a visualizer.
Abstract DtStateVisualizer creator.
Definition: DtStateVisualizer.h:266
DtSignalConnectionManager myConnections
Definition: DtStateVisualizer.h:250
Definition: DtStateVisualizer.h:305
DtUniqueID mySceneObjectID
Definition: DtStateVisualizer.h:247
DtStateListener & myListener
Definition: DtStateVisualizer.h:243
int visualizerType() const
Definition: DtStateVisualizer.h:148
DtStateVisualizer * myParent
Definition: DtStateVisualizer.h:256
DtStateVisualizerCreator()
CTOR.
Definition: DtStateVisualizer.h:271
virtual ~DtStateVisualizerCreatorTemplate()
DTOR.
Definition: DtStateVisualizer.h:315
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:38
std::string myName
Definition: DtStateVisualizer.h:248
Contains vrvCore::DtObserverMode class.
binderNoArgs< _Fn > bind(const _Fn &_Func, const _Ty &_Left)
Definition: DtSTLUtilities.h:76
std::string myModelDefinition
Definition: DtStateVisualizer.h:249
virtual DtUniqueID sceneObjectID() const
Definition: DtStateVisualizer.h:143
bool myPickable
Definition: DtStateVisualizer.h:253
#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:41
virtual const DtStateVisualizer::TypeInfo & visualizerTypeInfo() const
Returns the schema of the visualizer.
Definition: DtStateVisualizer.h:339
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtBaseConnection & simulation()
Get the connection for this visualizer.
Definition: DtStateVisualizer.h:170
virtual const std::string & tag()
Returns the creator&#39;s tag.
Definition: DtStateVisualizer.h:344
virtual DtStateVisualizer * create(DtBaseConnection &simulation, DtStateListener &listener, DtSceneObjectAgent *sceneObjectAgent, int modelSet) const
Create function.
Definition: DtStateVisualizer.h:332
int myVisualizerType
Definition: DtStateVisualizer.h:252
DtStateVisualizerCreatorTemplate()
CTOR.
Definition: DtStateVisualizer.h:310
virtual DtStateVisualizerCreator * clone() const
Every derived class must override this method.
Definition: DtStateVisualizer.h:319
const DtUnicode screenName
Definition: DtStateVisualizer.h:70
The DtStateVisualizer is an abstract class. Developers derive from this to create logic that &quot;directs...
Definition: DtStateVisualizer.h:32
Base class to provide boost signal/slot management.
virtual ~DtStateVisualizerCreator()
DTOR.
Definition: DtStateVisualizer.h:276
A definition of a visualizer. Visualizer definition are always members of a visualizer definition set...
Definition: DtVisualizerDefinition.h:22
const DtStateListener & listener() const
Definition: DtStateVisualizer.h:164
Contains makVrv::DtUniqueID type.
const std::string functionalTypeName
Definition: DtStateVisualizer.h:69
Definition: DtStateVisualizer.h:47
VisualizerShowHideContext
Definition: DtShowHideContext.h:39
boost::signalslib::signal< void(DtStateVisualizer *, DtStateVisualizer *, DtStateVisualizer *)> signal_reparented
Signaled when the parent of this item changes, called before destroying any model agents...
Definition: DtStateVisualizer.h:193
void setDistribute(bool b)
Whether or not to distribute over the network.
Definition: DtStateVisualizer.h:176
bool distribute() const
Definition: DtStateVisualizer.h:181
void connectAndUpdate(boost::signalslib::signal< void(T)> &sig, void(C::*fp)(T), T val)
Connect a signal and update the entity.
Definition: DtStateVisualizer.h:219
DtSceneObjectAgent * mySceneObjectAgent
Definition: DtStateVisualizer.h:257
The DtStateListener is an abstract class. Subclasses implement functionality that will allow data to ...
Definition: DtStateListener.h:25
ShowHideContextVector myVisualizerShowHideContexts
Definition: DtStateVisualizer.h:260
bool myInitialInitializeDone
Definition: DtStateVisualizer.h:258
Definition: DtVisualizerSchema.h:19
const DtVisualizerSchema & schema
Definition: DtStateVisualizer.h:72
Struct to hold metadata about each functional visualizer type This allows users of the factory to get...
Definition: DtStateVisualizer.h:56
bool myDistributeFlag
Definition: DtStateVisualizer.h:245
virtual DtStateVisualizer * create(DtBaseConnection &simulation, DtStateListener &listener, int modelSet) const
Create function.
Definition: DtStateVisualizer.h:325
const DtVisualizerDefinition * myVisualizerDefinition
Definition: DtStateVisualizer.h:255
DtStateListener & listener()
Definition: DtStateVisualizer.h:159
DtBaseConnection & mySimulation
Definition: DtStateVisualizer.h:242
Contains DLL export macros.

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)