VR-Forces 4.8 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) 2012 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/vrvCore.h>
13 #include <vrvCore/DtUniqueID.h>
15 #include <vrvUtil/DtUnicode.h>
16 #include <boost/bind.hpp>
17 
18 namespace makVrv
19 {
20  class DtSceneObjectAgent;
21  class DtBaseConnection;
22  class DtMouseState;
23  class DtStateListener;
24  class DtVisualizerDefinition;
25  class DtVisualizerSchema;
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  int modelSet);
77 
79  virtual ~DtStateVisualizer();
80 
83  virtual void createModelAgents() = 0;
84 
86  virtual void destroyModelAgents() = 0;
87 
90  virtual const TypeInfo& typeInfo() const = 0;
91 
95  virtual void setParent(DtStateVisualizer*);
96 
98  void setModelDefinition(const std::string& definition);
99 
101  const std::string& modelDefinition() const;
102 
107  virtual void implementVisibility(bool visible);
108 
115  virtual bool setVisible(bool visible, int context);
116 
118  virtual void initialize();
119 
121  virtual bool isVisible() const;
122 
124  virtual void setSelected(bool);
125  virtual bool selected() const;
126 
129  void setName(const std::string&);
130  const std::string& name() const;
131 
133  virtual void setPickable(bool);
134  virtual bool pickable() const;
135 
136  virtual void setUniqueID(DtUniqueID id);
137 
139  {
140  return myUniqueID;
141  }
142 
143  int visualizerType() const
144  {
145  return myVisualizerType;
146  }
147 
149  void setShowHideContext(const std::vector<int>& s)
150  {
151  myShowHideContexts = s;
152  }
153 
156  virtual void setVisualizerDefinition(const DtVisualizerDefinition&);
157 
158  //Get the listener for this visualizer.
160  {
161  return myListener;
162  }
163 
166  {
167  return mySimulation;
168  }
169 
171  void setDistribute(bool b)
172  {
173  myDistributeFlag = b;
174  }
175 
176  bool distribute() const
177  {
178  return myDistributeFlag;
179  }
180 
184  boost::signal<void (DtStateVisualizer*, DtStateVisualizer*,
186 
188  boost::signal<void (DtMouseState&, const DtUniqueID&, const std::string&,
189  const std::string&,const std::string&, DtStateVisualizer*)>
191  boost::signal<void (DtMouseState&, const DtUniqueID&, const std::string&,
192  const std::string&,const std::string&, DtStateVisualizer*)>
194  boost::signal<void (DtMouseState&, const DtUniqueID&, const std::string&,
195  const std::string&,const std::string&, DtStateVisualizer*)>
197 
198  protected:
199 
201  virtual void slot_mouseDown(DtMouseState& mouseState,
202  const std::string& displayEngineName, const std::string& windowName,
203  const std::string& channelName);
204  virtual void slot_mouseUp(DtMouseState& mouseState,
205  const std::string& displayEngineName, const std::string& windowName,
206  const std::string& channelName);
207  virtual void slot_mouseDblClick(DtMouseState& mouseState,
208  const std::string& displayEngineName, const std::string& windowName,
209  const std::string& channelName);
210 
211  protected:
215  virtual bool hide(int context);
216 
220  virtual bool show(int context);
221 
224  virtual bool supportsShowHideContext(int) const;
225 
229  virtual void setModelDefinitionForAgents() = 0;
230 
232  template <typename T, typename C>
233  void connectAndUpdate(boost::signal<void (T)>& sig,void (C::*fp)(T),T val)
234  {
235  myConnections.manageConnection(sig.connect(boost::bind(fp,
236  static_cast<C*>(this), _1)));
237  //Call this connection.
238  ((C&)(*this).*fp)(val);
239  }
240 
241  private:
245 
249 
252  DtStateVisualizer& operator=( const DtStateVisualizer& );
253 
254  protected:
255 
258 
260 
262  std::string myName;
263  std::string myModelDefinition;
267 
268  std::vector<int> myShowHideContexts;
269  bool mySelected;
271  bool myVisible;
272 
274  DtSceneObjectAgent* mySceneObjectAgent;
275  };
276 
280  {
281  public:
282 
285  {
286  }
287 
290  {
291  }
292 
294  virtual DtStateVisualizerCreator* clone() const = 0;
295 
297  virtual DtStateVisualizer* create(DtBaseConnection& simulation,
298  DtStateListener& listener, int modelSet) const = 0;
299 
301  virtual const DtStateVisualizer::TypeInfo& visualizerTypeInfo() const = 0;
302 
304  virtual const std::string& tag() = 0;
305 
306  };
307 
308  template <typename StateVisualizer>
310  {
311  public:
312 
315  {
316  }
317 
320  {
321  }
322 
324  {
326  }
327 
330  DtStateListener& listener, int modelSet) const
331  {
332  return new StateVisualizer(simulation, listener, modelSet);
333  }
334 
337  {
338  return StateVisualizer::theTypeInfo();
339  }
340 
341  virtual const std::string& tag()
342  {
343 #ifdef DtDIS
344  const static std::string str("DIS");
345 #elif DtHLA_1516_EVOLVED
346  const static std::string str("HLA1516e");
347 #elif DtHLA_1516
348  const static std::string str("HLA1516");
349 #elif DtHLA
350  const static std::string str("HLA13");
351 #else
352  const static std::string str("");
353 #endif
354  return str;
355  }
356  };
357 
358 }
359 
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:149
boost::signal< void(DtStateVisualizer *, DtStateVisualizer *, DtStateVisualizer *)> signal_reparented
Signaled when the parent of this item changes, called before destroying any model agents...
Definition: DtStateVisualizer.h:185
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
int myModelSet
Definition: DtStateVisualizer.h:265
void connectAndUpdate(boost::signal< void(T)> &sig, void(C::*fp)(T), T val)
Connect a signal and update the entity.
Definition: DtStateVisualizer.h:233
bool myVisible
Definition: DtStateVisualizer.h:271
Abstract DtStateVisualizer creator.
Definition: DtStateVisualizer.h:279
DtSignalConnectionManager myConnections
Definition: DtStateVisualizer.h:264
Definition: DtStateVisualizer.h:309
DtStateListener & myListener
Definition: DtStateVisualizer.h:257
int visualizerType() const
Definition: DtStateVisualizer.h:143
DtStateVisualizer * myParent
Definition: DtStateVisualizer.h:273
DtStateVisualizerCreator()
CTOR.
Definition: DtStateVisualizer.h:284
virtual ~DtStateVisualizerCreatorTemplate()
DTOR.
Definition: DtStateVisualizer.h:319
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:37
std::string myName
Definition: DtStateVisualizer.h:262
binderNoArgs< _Fn > bind(const _Fn &_Func, const _Ty &_Left)
Definition: DtSTLUtilities.h:76
std::string myModelDefinition
Definition: DtStateVisualizer.h:263
bool myPickable
Definition: DtStateVisualizer.h:270
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
boost::signal< void(DtMouseState &, const DtUniqueID &, const std::string &, const std::string &, const std::string &, DtStateVisualizer *)> signal_mouseUp
Definition: DtStateVisualizer.h:193
Type
Visualizer class types that are supportable via visualizers.
Definition: DtStateVisualizer.h:39
virtual const DtStateVisualizer::TypeInfo & visualizerTypeInfo() const
Returns the schema of the visualizer.
Definition: DtStateVisualizer.h:336
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:24
DtBaseConnection & simulation()
Get the connection for this visualizer.
Definition: DtStateVisualizer.h:165
virtual const std::string & tag()
Returns the creator&#39;s tag.
Definition: DtStateVisualizer.h:341
This class encapsulates the state associated with a mouse button event.
Definition: DtMouseState.h:23
int myVisualizerType
Definition: DtStateVisualizer.h:266
DtStateVisualizerCreatorTemplate()
CTOR.
Definition: DtStateVisualizer.h:314
virtual DtStateVisualizerCreator * clone() const
Every derived class must override this method.
Definition: DtStateVisualizer.h:323
const DtUnicode screenName
Definition: DtStateVisualizer.h:68
unsigned long long DtUniqueID
Definition: DtUniqueID.h:22
boost::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:190
The DtStateVisualizer is an abstract class.
Definition: DtStateVisualizer.h:30
Base class to provide boost signal/slot management.
virtual ~DtStateVisualizerCreator()
DTOR.
Definition: DtStateVisualizer.h:289
A definition of a visualizer.
Definition: DtVisualizerDefinition.h:22
boost::signal< void(DtMouseState &, const DtUniqueID &, const std::string &, const std::string &, const std::string &, DtStateVisualizer *)> signal_mouseDblClick
Definition: DtStateVisualizer.h:196
DtUniqueID myUniqueID
Definition: DtStateVisualizer.h:261
Contains makVrv::DtUniqueID type.
const std::string functionalTypeName
Definition: DtStateVisualizer.h:67
Definition: DtStateVisualizer.h:45
void setDistribute(bool b)
Whether or not to distribute over the network.
Definition: DtStateVisualizer.h:171
bool distribute() const
Definition: DtStateVisualizer.h:176
DtSceneObjectAgent * mySceneObjectAgent
Definition: DtStateVisualizer.h:274
The DtStateListener is an abstract class.
Definition: DtStateListener.h:21
std::vector< int > myShowHideContexts
Definition: DtStateVisualizer.h:268
Definition: DtVisualizerSchema.h:22
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:259
virtual DtStateVisualizer * create(DtBaseConnection &simulation, DtStateListener &listener, int modelSet) const
Create function.
Definition: DtStateVisualizer.h:329
DtStateListener & listener()
Definition: DtStateVisualizer.h:159
DtUniqueID uniqueID() const
Definition: DtStateVisualizer.h:138
bool mySelected
Definition: DtStateVisualizer.h:269
DtBaseConnection & mySimulation
Definition: DtStateVisualizer.h:256
Contains DLL export macros.

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)