VR-Forces 4.1.1 Class Documentation
DtVrlinkDriver.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 <vrvVrl/vrvVrl.h>
13 #include <vrvCore/DtDriver.h>
18 
19 #include <vlutil/vlRunnable.h>
20 
21 #include <string>
22 #include <boost/function.hpp>
23 #include <boost/signal.hpp>
24 
25 class DtThread;
26 class DtThreadStart;
27 class DtEntityType;
28 
29 namespace makVrv
30 {
31  class DtAsynchronousEventQueue;
32  class DtAsynchronousAgentManager;
33  class DtConnection;
34  class DtEntityTypeMapper;
35  class DtObserver;
36  class DtSelectionManager;
37  class DtMouseState;
38 
42  protected DtRunnable
43  {
44  public:
45 
47  DtVrlinkDriver(DtAgentManager& agentManager,
48  const std::string& uniqueName, const std::string& className);
49 
51  virtual ~DtVrlinkDriver();
52 
54  virtual const std::string& className() const;
55 
57  virtual bool observersPublished() const;
58 
60  virtual void setObserversPublished(bool isPublished);
61 
63  virtual bool viewControlEnabled() const;
64 
66  virtual void setViewControlEnabled(bool enabled);
67 
69  virtual void queueDriverFunction(const boost::function<void ()>& function);
70 
72  virtual void queueConnectionFunction(const boost::function<void ()>& function);
73 
75  bool useThreadFlag() const
76  {
77  return myUseThreadFlag;
78  }
79 
80  DtConnection* connection()
81  {
82  return myConnection;
83  }
84 
86  boost::signal<void (DtConnection*)> signal_simulationCreated;
87 
89  boost::signal<void (DtConnection*)> signal_simulationAboutToBeDestroyed;
90 
91  protected:
92 
94  virtual DtConnection* createConnection() = 0;
95 
98  virtual bool onStart();
99 
102  virtual bool onStop();
103 
105  virtual void run();
106 
108  void startPublishingObservers();
109 
111  void stopPublishingObservers();
112 
115  virtual bool onTick();
116 
119  void startThread();
120 
123  void stopThread();
124 
126  void setConnectionState( bool state );
127 
129  virtual void slot_displayEngineAdded( const DtDeRecord& igRecord );
130 
132 
134  virtual void connectToDynamicSignals();
135 
138  virtual void disconnectFromDynamicSignals();
139 
140  virtual void slot_onViewChanged(
142 
143  virtual void slot_onCurrentSelectionChanged(
144  const DtSelectionManager::IdSet& selected,
145  const DtSelectionManager::IdSet& deselected);
146 
147  virtual void slot_onVertexSelected( const DtUniqueID& selected,
148  const DtUniqueID& parentOfSelected);
149 
150  virtual void slot_onVertexDeselected( const DtUniqueID& deselected,
151  const DtUniqueID& parentOfDeselected);
152 
153  virtual void slot_onEntityInfoToggled(
154  const DtSelectionManager::IdSet& entityIds);
155 
158  virtual void slot_onEntityIndicatorMouseDown(DtMouseState& mouseState,
159  const DtUniqueID& id, const std::string& displayEngineName,
160  const std::string& windowName, const std::string& channelName);
161 
162  virtual void slot_onEntityIndicatorMouseUp(DtMouseState& mouseState,
163  const DtUniqueID& id, const std::string& displayEngineName,
164  const std::string& windowName, const std::string& channelName);
165 
166  virtual void slot_onEntityIndicatorMouseDblClick(DtMouseState& mouseState,
167  const DtUniqueID& id, const std::string& displayEngineName,
168  const std::string& windowName, const std::string& channelName);
169 
172  virtual void slot_onTacticalGraphicIndicatorMouseDown(
173  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
174  const std::string& windowName,
175  const std::string& channelName);
176 
177  virtual void slot_onTacticalGraphicIndicatorMouseUp(
178  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
179  const std::string& windowName,
180  const std::string& channelName);
181 
182  virtual void slot_onTacticalGraphicIndicatorMouseDblClick(
183  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
184  const std::string& windowName,
185  const std::string& channelName);
186 
188  virtual void slot_onCoordinateSystemChanged(
189  const std::string& coordinateSystem,
190  const std::string& coordinateParameters );
191 
193  virtual void slot_onObserverObjectAttached(
194  const std::string& observerName, DtUniqueID id);
195 
197  virtual void slot_onObserverDetached(const std::string& observerName);
198 
200  virtual void attachObserverObject(const std::string& observerName,
201  DtUniqueID id);
202 
204  virtual void toggleEntitySelected(const DtUniqueID& id);
205 
206  virtual void performObserverAction(
208 
210 
211  virtual void slot_onObserverDestroyed(DtObserver* observer);
212 
213  virtual void slot_onObserverCreated(DtObserver* observer);
214 
216  virtual void startPublishingObserver( DtObserver* observer );
217 
219  virtual void stopPublishingObserver( DtObserver* observer );
220 
222  virtual void updateObservers();
223 
224  void indicatorMouseDown(DtMouseState& mouseState,
225  const DtUniqueID& id, const std::string& displayEngineName,
226  const std::string& windowName, const std::string& channelName);
227 
228  void indicatorMouseUp(DtMouseState& mouseState,
229  const DtUniqueID& id, const std::string& displayEngineName,
230  const std::string& windowName, const std::string& channelName);
231 
232  void indicatorMouseDblClick(DtMouseState& mouseState,
233  const DtUniqueID& id, const std::string& displayEngineName,
234  const std::string& windowName, const std::string& channelName);
235 
237  typedef std::vector<boost::function<void ()> > FunctionCallList;
238 
239  enum FunctionType {Create, Update, Destroy};
240 
242  virtual void runFunctionQueue(FunctionCallQueue& queue);
243 
244  protected:
245 
246  //Main thread variables.
247  std::string myClassName;
248 
250  //Cross thread variables. They are used between the two threads for
251  //communication.
253  DtThreadStart* myStart;
254  DtThread* myThread;
255 
260 
264 
266 
271 
273 
274  };
275 }

Document ID: Generated on Mon Apr 8 19:24:01 EDT 2013 from SVN revision 125877
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)