VR-Forces 4.10 Class Documentation
 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) 2021 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>
15 #include <vrvCore/DtMouseState.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  virtual ~DtStateVisualizer();
82 
84  virtual DtObserverMode::ModelSets modelSet();
85 
88  virtual void createModelAgents() = 0;
89 
91  virtual void destroyModelAgents() = 0;
92 
95  virtual const TypeInfo& typeInfo() const = 0;
96 
100  virtual void setParent(DtStateVisualizer*);
101 
103  virtual const DtStateVisualizer* parent() const;
104 
106  void setModelDefinition(const std::string& definition);
107 
109  const std::string& modelDefinition() const;
110 
115  virtual void implementVisibility(bool visible);
116 
123  virtual bool setVisible(bool visible, int context);
124 
126  virtual void initialize();
127 
129  virtual bool isVisible() const;
130 
132  virtual void setHasMouseCursor(bool);
133  virtual bool hasMouseCursor() const;
134 
136  virtual void setSelected(bool);
137  virtual bool selected() const;
138 
141  void setName(const std::string&);
142  const std::string& name() const;
143 
145  virtual void setPickable(bool);
146  virtual bool pickable() const;
147 
148  virtual void setUniqueID(DtUniqueID id);
149 
151  {
152  return myUniqueID;
153  }
154 
155  int visualizerType() const
156  {
157  return myVisualizerType;
158  }
159 
161  void setShowHideContext(const std::vector<int>& s)
162  {
163  myShowHideContexts = s;
164  }
165 
168  virtual void setVisualizerDefinition(const DtVisualizerDefinition&);
169 
170  //Get the listener for this visualizer.
172  {
173  return myListener;
174  }
175 
178  {
179  return mySimulation;
180  }
181 
183  void setDistribute(bool b)
184  {
185  myDistributeFlag = b;
186  }
187 
188  bool distribute() const
189  {
190  return myDistributeFlag;
191  }
192 
196  boost::signalslib::signal<void (DtStateVisualizer*, DtStateVisualizer*,
198 
200  boost::signalslib::signal<void (DtMouseState&, const DtUniqueID&, const std::string&,
201  const std::string&,const std::string&, DtStateVisualizer*)>
203  boost::signalslib::signal<void (DtMouseState&, const DtUniqueID&, const std::string&,
204  const std::string&,const std::string&, DtStateVisualizer*)>
206  boost::signalslib::signal<void (DtMouseState&, const DtUniqueID&, const std::string&,
207  const std::string&,const std::string&, DtStateVisualizer*)>
209 
210  protected:
211 
213  virtual void slot_mouseDown(DtMouseState& mouseState,
214  const std::string& displayEngineName, const std::string& windowName,
215  const std::string& channelName);
216  virtual void slot_mouseUp(DtMouseState& mouseState,
217  const std::string& displayEngineName, const std::string& windowName,
218  const std::string& channelName);
219  virtual void slot_mouseDblClick(DtMouseState& mouseState,
220  const std::string& displayEngineName, const std::string& windowName,
221  const std::string& channelName);
222 
223  protected:
227  virtual bool hide(int context);
228 
232  virtual bool show(int context);
233 
236  virtual bool supportsShowHideContext(int) const;
237 
241  virtual void setModelDefinitionForAgents() = 0;
242 
244  template <typename T, typename C>
245  void connectAndUpdate(boost::signalslib::signal<void (T)>& sig,void (C::*fp)(T),T val)
246  {
247  myConnections.manageConnection(sig.connect(boost::bind(fp,
248  static_cast<C*>(this), _1)));
249  //Call this connection.
250  ((C&)(*this).*fp)(val);
251  }
252 
253  private:
256  DtStateVisualizer() = delete;
257 
260  DtStateVisualizer( const DtStateVisualizer& ) = delete;
261 
264  DtStateVisualizer& operator=( const DtStateVisualizer& ) = delete;
265 
266  protected:
267 
270 
272 
274  std::string myName;
275  std::string myModelDefinition;
279 
280  std::vector<int> myShowHideContexts;
281  bool mySelected;
284  bool myVisible;
285 
287  DtSceneObjectAgent* mySceneObjectAgent;
288  };
289 
293  {
294  public:
295 
298  {
299  }
300 
303  {
304  }
305 
307  virtual DtStateVisualizerCreator* clone() const = 0;
308 
310  virtual DtStateVisualizer* create(DtBaseConnection& simulation,
311  DtStateListener& listener, int modelSet) const = 0;
312 
314  virtual const DtStateVisualizer::TypeInfo& visualizerTypeInfo() const = 0;
315 
317  virtual const std::string& tag() = 0;
318 
319  };
320 
321  template <typename StateVisualizer>
323  {
324  public:
325 
328  {
329  }
330 
333  {
334  }
335 
337  {
339  }
340 
343  DtStateListener& listener, int modelSet) const
344  {
345  return new StateVisualizer(simulation, listener, modelSet);
346  }
347 
350  {
351  return StateVisualizer::theTypeInfo();
352  }
353 
354  virtual const std::string& tag()
355  {
356 #ifdef DtDIS
357  const static std::string str("DIS");
358 #elif DtHLA_1516_EVOLVED
359  const static std::string str("HLA1516e");
360 #elif DtHLA_1516
361  const static std::string str("HLA1516");
362 #elif DtHLA
363  const static std::string str("HLA13");
364 #else
365  const static std::string str("");
366 #endif
367  return str;
368  }
369  };
370 
371 }
372 
ModelSets
Definition: DtObserverMode.h:32
A unicode string.
Definition: DtUnicode.h:33
void setShowHideContext(const std::vector< int > &s)
Set show/hide context without changing visibility of item.
Definition: DtStateVisualizer.h:161
boost::signalslib::signal< void(DtMouseState &, const DtUniqueID &, const std::string &, const std::string &, const std::string &, DtStateVisualizer *)> signal_mouseDown
Emitted when the entity&#39;s indicator is clicked.
Definition: DtStateVisualizer.h:202
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:277
bool myHasMouseCursor
Definition: DtStateVisualizer.h:282
bool myVisible
Definition: DtStateVisualizer.h:284
Abstract DtStateVisualizer creator.
Definition: DtStateVisualizer.h:292
DtSignalConnectionManager myConnections
Definition: DtStateVisualizer.h:276
Definition: DtStateVisualizer.h:322
DtStateListener & myListener
Definition: DtStateVisualizer.h:269
int visualizerType() const
Definition: DtStateVisualizer.h:155
DtStateVisualizer * myParent
Definition: DtStateVisualizer.h:286
DtStateVisualizerCreator()
CTOR.
Definition: DtStateVisualizer.h:297
virtual ~DtStateVisualizerCreatorTemplate()
DTOR.
Definition: DtStateVisualizer.h:332
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:34
std::string myName
Definition: DtStateVisualizer.h:274
Contains vrvCore::DtObserverMode class.
binderNoArgs< _Fn > bind(const _Fn &_Func, const _Ty &_Left)
Definition: DtSTLUtilities.h:76
std::string myModelDefinition
Definition: DtStateVisualizer.h:275
This file contains the declaration for the class DtMouseState.
bool myPickable
Definition: DtStateVisualizer.h:283
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
Type
Visualizer class types that are supportable via visualizers.
Definition: DtStateVisualizer.h:41
virtual const DtStateVisualizer::TypeInfo & visualizerTypeInfo() const
Returns the schema of the visualizer.
Definition: DtStateVisualizer.h:349
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtBaseConnection & simulation()
Get the connection for this visualizer.
Definition: DtStateVisualizer.h:177
virtual const std::string & tag()
Returns the creator&#39;s tag.
Definition: DtStateVisualizer.h:354
This class encapsulates the state associated with a mouse button event.
Definition: DtMouseState.h:20
int myVisualizerType
Definition: DtStateVisualizer.h:278
DtStateVisualizerCreatorTemplate()
CTOR.
Definition: DtStateVisualizer.h:327
virtual DtStateVisualizerCreator * clone() const
Every derived class must override this method.
Definition: DtStateVisualizer.h:336
const DtUnicode screenName
Definition: DtStateVisualizer.h:70
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
The DtStateVisualizer is an abstract class.
Definition: DtStateVisualizer.h:32
Base class to provide boost signal/slot management.
virtual ~DtStateVisualizerCreator()
DTOR.
Definition: DtStateVisualizer.h:302
A definition of a visualizer.
Definition: DtVisualizerDefinition.h:22
DtUniqueID myUniqueID
Definition: DtStateVisualizer.h:273
Contains makVrv::DtUniqueID type.
const std::string functionalTypeName
Definition: DtStateVisualizer.h:69
Definition: DtStateVisualizer.h:47
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:197
void setDistribute(bool b)
Whether or not to distribute over the network.
Definition: DtStateVisualizer.h:183
bool distribute() const
Definition: DtStateVisualizer.h:188
void connectAndUpdate(boost::signalslib::signal< void(T)> &sig, void(C::*fp)(T), T val)
Connect a signal and update the entity.
Definition: DtStateVisualizer.h:245
DtSceneObjectAgent * mySceneObjectAgent
Definition: DtStateVisualizer.h:287
boost::signalslib::signal< void(DtMouseState &, const DtUniqueID &, const std::string &, const std::string &, const std::string &, DtStateVisualizer *)> signal_mouseUp
Definition: DtStateVisualizer.h:205
The DtStateListener is an abstract class.
Definition: DtStateListener.h:21
std::vector< int > myShowHideContexts
Definition: DtStateVisualizer.h:280
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:271
virtual DtStateVisualizer * create(DtBaseConnection &simulation, DtStateListener &listener, int modelSet) const
Create function.
Definition: DtStateVisualizer.h:342
boost::signalslib::signal< void(DtMouseState &, const DtUniqueID &, const std::string &, const std::string &, const std::string &, DtStateVisualizer *)> signal_mouseDblClick
Definition: DtStateVisualizer.h:208
DtStateListener & listener()
Definition: DtStateVisualizer.h:171
DtUniqueID uniqueID() const
Definition: DtStateVisualizer.h:150
bool mySelected
Definition: DtStateVisualizer.h:281
DtBaseConnection & mySimulation
Definition: DtStateVisualizer.h:268
Contains DLL export macros.

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)