VR-Forces 4.3.1 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DtVrlinkDriver.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2014 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 #include <vlutil/vlThread.h>
19 
20 #include <vlutil/vlRunnable.h>
21 
22 #include <string>
23 #include <boost/function.hpp>
24 #include <boost/signal.hpp>
25 
26 class DtThread;
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 
64  virtual bool overrideGlobalViewControl() const;
65 
68  virtual void setOverrideGlobalViewControl(bool enabled);
69 
73  virtual bool viewControlEnabled() const;
74 
77  virtual void setLocalViewControlEnabled(bool enabled);
78 
81  bool localViewControlEnabled() const;
82 
89  void setUseTopoForFlatEarthVectorConversion( bool flag );
90  bool useTopoForFlatEarthVectorConversion() const;
91 
92 
94  virtual void queueDriverFunction(const boost::function<void ()>& function);
95 
97  virtual void queueConnectionFunction(const boost::function<void ()>& function);
98 
100  bool useThreadFlag() const
101  {
102  return myUseThreadFlag;
103  }
104 
105  DtConnection* connection()
106  {
107  return myConnection;
108  }
109 
111  boost::signal<void (DtConnection*)> signal_simulationCreated;
112 
114  boost::signal<void (DtConnection*)> signal_simulationAboutToBeDestroyed;
115 
116  protected:
117 
119  virtual DtConnection* createConnection() = 0;
120 
123  virtual bool onStart();
124 
127  virtual bool onStop();
128 
130  virtual void run();
131 
133  void startPublishingObservers();
134 
136  void stopPublishingObservers();
137 
140  virtual bool onTick();
141 
144  void startThread();
145 
148  void stopThread();
149 
151  void setConnectionState( bool state );
152 
154  virtual void slot_displayEngineAdded( const DtDeRecord& igRecord );
155 
157  virtual void slot_globalViewControlEnabledSet( bool );
158 
160 
162  virtual void connectToDynamicSignals();
163 
166  virtual void disconnectFromDynamicSignals();
167 
168  virtual void slot_onViewChanged(
170 
171  virtual void slot_onCurrentSelectionChanged(
172  const DtSelectionManager::IdSet& selected,
173  const DtSelectionManager::IdSet& deselected);
174 
175  virtual void slot_onVertexSelected( const DtUniqueID& selected,
176  const DtUniqueID& parentOfSelected);
177 
178  virtual void slot_onVertexDeselected( const DtUniqueID& deselected,
179  const DtUniqueID& parentOfDeselected);
180 
181  virtual void slot_onEntityInfoToggled(
182  const DtSelectionManager::IdSet& entityIds);
183 
186  virtual void slot_onEntityIndicatorMouseDown(DtMouseState& mouseState,
187  const DtUniqueID& id, const std::string& displayEngineName,
188  const std::string& windowName, const std::string& channelName);
189 
190  virtual void slot_onEntityIndicatorMouseUp(DtMouseState& mouseState,
191  const DtUniqueID& id, const std::string& displayEngineName,
192  const std::string& windowName, const std::string& channelName);
193 
194  virtual void slot_onEntityIndicatorMouseDblClick(DtMouseState& mouseState,
195  const DtUniqueID& id, const std::string& displayEngineName,
196  const std::string& windowName, const std::string& channelName);
197 
200  virtual void slot_onTacticalGraphicIndicatorMouseDown(
201  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
202  const std::string& windowName,
203  const std::string& channelName);
204 
205  virtual void slot_onTacticalGraphicIndicatorMouseUp(
206  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
207  const std::string& windowName,
208  const std::string& channelName);
209 
210  virtual void slot_onTacticalGraphicIndicatorMouseDblClick(
211  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
212  const std::string& windowName,
213  const std::string& channelName);
214 
216  virtual void slot_onCoordinateSystemChanged(
217  const std::string& coordinateSystem,
218  const std::string& coordinateParameters );
219 
221  virtual void slot_onObserverObjectAttached(
222  const std::string& observerName, DtUniqueID id);
223 
225  virtual void slot_onObserverDetached(const std::string& observerName);
226 
228  virtual void attachObserverObject(const std::string& observerName,
229  DtUniqueID id);
230 
232  virtual void toggleEntitySelected(const DtUniqueID& id);
233 
234  virtual void performObserverAction(
236 
238 
239  virtual void slot_onObserverDestroyed(DtObserver* observer);
240 
241  virtual void slot_onObserverCreated(DtObserver* observer);
242 
244  virtual void startPublishingObserver( DtObserver* observer );
245 
247  virtual void stopPublishingObserver( DtObserver* observer );
248 
250  virtual void updateObservers();
251 
252  void indicatorMouseDown(DtMouseState& mouseState,
253  const DtUniqueID& id, const std::string& displayEngineName,
254  const std::string& windowName, const std::string& channelName);
255 
256  void indicatorMouseUp(DtMouseState& mouseState,
257  const DtUniqueID& id, const std::string& displayEngineName,
258  const std::string& windowName, const std::string& channelName);
259 
260  void indicatorMouseDblClick(DtMouseState& mouseState,
261  const DtUniqueID& id, const std::string& displayEngineName,
262  const std::string& windowName, const std::string& channelName);
263 
265  typedef std::vector<boost::function<void ()> > FunctionCallList;
266 
267  enum FunctionType {Create, Update, Destroy};
268 
270  virtual void runFunctionQueue(FunctionCallQueue& queue);
271 
272  protected:
273 
274  //Main thread variables.
275  std::string myClassName;
276 
278  //Cross thread variables. They are used between the two threads for
279  //communication.
281  DtThreadStartSP myStart;
282  DtThread* myThread;
283 
288 
292 
294 
302 
304 
305  };
306 }

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)