VR-Forces 4.3.1 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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 #include <vrvCore/DtUniqueID.h>
14 #include <vrvUtil/DtUnicode.h>
16 #include <boost/bind.hpp>
17 #include <string>
18 
19 namespace makVrv
20 {
21  class DtSceneObjectAgent;
22  class DtBaseConnection;
23  class DtMouseState;
24  class DtStateListener;
25  class DtVisualizerDefinition;
26 
31  {
32 
33  public:
37  enum Type
38  {
39  AllVisualizerTypes = 0,
40  EntityVisualizerType = 1,
46  UserType = 10000
47  };
48 
53  {
54  TypeInfo(const std::string& fname,
55  const DtUnicode& sname,
57  const DtVisualizerSchema& s)
58  : functionalTypeName(fname)
59  , screenName(sname)
60  , supportedVisualizerType(type)
61  , schema(s)
62  {
63  }
64 
65  const std::string functionalTypeName;
69  };
70 
71  public:
73  DtStateVisualizer(DtBaseConnection& connection, DtStateListener& listener,
74  int modelSet);
75 
77  virtual ~DtStateVisualizer();
78 
81  virtual void createModelAgents() = 0;
82 
84  virtual void destroyModelAgents() = 0;
85 
88  virtual const TypeInfo& typeInfo() const = 0;
89 
93  virtual void setParent(DtStateVisualizer*);
94 
96  void setModelDefinition(const std::string& definition);
97 
99  const std::string& modelDefinition() const;
100 
107  virtual bool setVisible(bool visible, int context);
108 
110  virtual void initialize();
111 
113  virtual bool isVisible() const;
114 
116  virtual void setSelected(bool);
117  virtual bool selected() const;
118 
121  void setName(const std::string&);
122  const std::string& name() const;
123 
125  virtual void setPickable(bool);
126  virtual bool pickable() const;
127 
128  virtual void setUniqueID(DtUniqueID id);
129 
130  DtUniqueID uniqueID() const
131  {
132  return myUniqueID;
133  }
134 
135  int visualizerType() const
136  {
137  return myVisualizerType;
138  }
139 
141  void setShowHideContext(const std::vector<int>& s)
142  {
143  myShowHideContexts = s;
144  }
145 
148  virtual void setVisualizerDefinition(const DtVisualizerDefinition&);
149 
150  //Get the listener for this visualizer.
151  inline DtStateListener& listener()
152  {
153  return myListener;
154  }
155 
157  inline DtBaseConnection& simulation()
158  {
159  return mySimulation;
160  }
161 
163  void setDistribute(bool b)
164  {
165  myDistributeFlag = b;
166  }
167 
168  bool distribute() const
169  {
170  return myDistributeFlag;
171  }
172 
176  boost::signal<void (DtStateVisualizer*, DtStateVisualizer*,
178 
180  boost::signal<void (DtMouseState&, const DtUniqueID&, const std::string&,
181  const std::string&,const std::string&, DtStateVisualizer*)>
183  boost::signal<void (DtMouseState&, const DtUniqueID&, const std::string&,
184  const std::string&,const std::string&, DtStateVisualizer*)>
186  boost::signal<void (DtMouseState&, const DtUniqueID&, const std::string&,
187  const std::string&,const std::string&, DtStateVisualizer*)>
189 
190  protected:
191 
193  virtual void slot_mouseDown(DtMouseState& mouseState,
194  const std::string& displayEngineName, const std::string& windowName,
195  const std::string& channelName);
196  virtual void slot_mouseUp(DtMouseState& mouseState,
197  const std::string& displayEngineName, const std::string& windowName,
198  const std::string& channelName);
199  virtual void slot_mouseDblClick(DtMouseState& mouseState,
200  const std::string& displayEngineName, const std::string& windowName,
201  const std::string& channelName);
202 
203  protected:
207  virtual bool hide(int context);
208 
212  virtual bool show(int context);
213 
216  virtual bool supportsShowHideContext(int) const;
217 
221  virtual void setModelDefinitionForAgents() = 0;
222 
224  template <typename T, typename C>
225  void connectAndUpdate(boost::signal<void (T)>& sig,void (C::*fp)(T),T val)
226  {
227  myConnections.manageConnection(sig.connect(boost::bind(fp,
228  static_cast<C*>(this), _1)));
229  //Call this connection.
230  ((C&)(*this).*fp)(val);
231  }
232 
233  private:
237 
241 
244  DtStateVisualizer& operator=( const DtStateVisualizer& );
245 
246  protected:
247 
250 
252 
254  std::string myName;
255  std::string myModelDefinition;
259 
260  std::vector<int> myShowHideContexts;
261  bool mySelected;
263  bool myVisible;
264 
266  DtSceneObjectAgent* mySceneObjectAgent;
267  };
268 
272  {
273  public:
274 
277  {
278  }
279 
282  {
283  }
284 
286  virtual DtStateVisualizerCreator* clone() const = 0;
287 
289  virtual DtStateVisualizer* create(DtBaseConnection& simulation,
290  DtStateListener& listener, int modelSet) const = 0;
291 
293  virtual const DtStateVisualizer::TypeInfo& visualizerTypeInfo() const = 0;
294 
296  virtual const std::string& tag() = 0;
297 
298  };
299 
300  template <typename StateVisualizer>
302  {
303  public:
304 
307  {
308  }
309 
312  {
313  }
314 
316  {
318  }
319 
322  DtStateListener& listener, int modelSet) const
323  {
324  return new StateVisualizer(simulation, listener, modelSet);
325  }
326 
329  {
330  return StateVisualizer::theTypeInfo();
331  }
332 
333  virtual const std::string& tag()
334  {
335 #ifdef DtDIS
336  const static std::string str("DIS");
337 #elif DtHLA_1516_EVOLVED
338  const static std::string str("HLA1516e");
339 #elif DtHLA_1516
340  const static std::string str("HLA1516");
341 #elif DtHLA
342  const static std::string str("HLA13");
343 #else
344  const static std::string str("");
345 #endif
346  return str;
347  }
348  };
349 
350 }
351 

Document ID: Generated on Wed Jul 29 00:55:00 EDT 2015 from SVN revision 155257
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)