VR-Forces Development_Version 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>
17 #include <vlutil/vlThread.h>
18 
19 #include <vlutil/vlRunnable.h>
20 
21 #include <boost/function.hpp>
22 #include <boost/signal.hpp>
23 
24 class DtThread;
25 class DtEntityType;
26 
27 namespace makVrv
28 {
29  class DtAsynchronousEventQueue;
30  class DtAsynchronousAgentManager;
31  class DtConnection;
32  class DtEntityTypeMapper;
33  class DtObserver;
34  class DtSelectionManager;
35  class DtMouseState;
36 
40  protected DtRunnable
41  {
42  public:
43 
45  DtVrlinkDriver(DtAgentManager& agentManager,
46  const std::string& uniqueName, const std::string& className);
47 
49  virtual ~DtVrlinkDriver();
50 
52  virtual const std::string& className() const;
53 
55  virtual bool observersPublished() const;
56 
58  virtual void setObserversPublished(bool isPublished);
59 
62  virtual bool overrideGlobalViewControl() const;
63 
66  virtual void setOverrideGlobalViewControl(bool enabled);
67 
71  virtual bool viewControlEnabled() const;
72 
75  virtual void setLocalViewControlEnabled(bool enabled);
76 
79  bool localViewControlEnabled() const;
80 
87  void setUseTopoForFlatEarthVectorConversion( bool flag );
88  bool useTopoForFlatEarthVectorConversion() const;
89 
90 
92  virtual void queueDriverFunction(const boost::function<void ()>& function);
93 
95  virtual void queueConnectionFunction(const boost::function<void ()>& function);
96 
98  bool useThreadFlag() const
99  {
100  return myUseThreadFlag;
101  }
102 
103  DtConnection* connection()
104  {
105  return myConnection;
106  }
107 
109  boost::signal<void (DtConnection*)> signal_simulationCreated;
110 
112  boost::signal<void (DtConnection*)> signal_simulationAboutToBeDestroyed;
113 
114  protected:
115 
117  virtual DtConnection* createConnection() = 0;
118 
121  virtual bool onStart();
122 
125  virtual bool onStop();
126 
128  virtual void run();
129 
131  void startPublishingObservers();
132 
134  void stopPublishingObservers();
135 
138  virtual bool onTick();
139 
142  void startThread();
143 
146  void stopThread();
147 
149  void setConnectionState( bool state );
150 
152  virtual void slot_displayEngineAdded( const DtDeRecord& igRecord );
153 
155  virtual void slot_globalViewControlEnabledSet( bool );
156 
158 
160  virtual void connectToDynamicSignals();
161 
164  virtual void disconnectFromDynamicSignals();
165 
166  virtual void slot_onViewChanged(
168 
169  virtual void slot_onCurrentSelectionChanged(
170  const DtSelectionManager::IdSet& selected,
171  const DtSelectionManager::IdSet& deselected);
172 
173  virtual void slot_onVertexSelected( const DtUniqueID& selected,
174  const DtUniqueID& parentOfSelected);
175 
176  virtual void slot_onVertexDeselected( const DtUniqueID& deselected,
177  const DtUniqueID& parentOfDeselected);
178 
179  virtual void slot_onEntityInfoToggled(
180  const DtSelectionManager::IdSet& entityIds);
181 
184  virtual void slot_onEntityIndicatorMouseDown(DtMouseState& mouseState,
185  const DtUniqueID& id, const std::string& displayEngineName,
186  const std::string& windowName, const std::string& channelName);
187 
188  virtual void slot_onEntityIndicatorMouseUp(DtMouseState& mouseState,
189  const DtUniqueID& id, const std::string& displayEngineName,
190  const std::string& windowName, const std::string& channelName);
191 
192  virtual void slot_onEntityIndicatorMouseDblClick(DtMouseState& mouseState,
193  const DtUniqueID& id, const std::string& displayEngineName,
194  const std::string& windowName, const std::string& channelName);
195 
198  virtual void slot_onTacticalGraphicIndicatorMouseDown(
199  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
200  const std::string& windowName,
201  const std::string& channelName);
202 
203  virtual void slot_onTacticalGraphicIndicatorMouseUp(
204  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
205  const std::string& windowName,
206  const std::string& channelName);
207 
208  virtual void slot_onTacticalGraphicIndicatorMouseDblClick(
209  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
210  const std::string& windowName,
211  const std::string& channelName);
212 
214  virtual void slot_onCoordinateSystemChanged(
215  const std::string& coordinateSystem,
216  const std::string& coordinateParameters );
217 
219  virtual void slot_onObserverObjectAttached(
220  const std::string& observerName, DtUniqueID id);
221 
223  virtual void slot_onObserverDetached(const std::string& observerName);
224 
226  virtual void attachObserverObject(const std::string& observerName,
227  DtUniqueID id);
228 
230  virtual void toggleEntitySelected(const DtUniqueID& id);
231 
232  virtual void performObserverAction(
234 
236 
237  virtual void slot_onObserverDestroyed(DtObserver* observer);
238 
239  virtual void slot_onObserverCreated(DtObserver* observer);
240 
242  virtual void startPublishingObserver( DtObserver* observer );
243 
245  virtual void stopPublishingObserver( DtObserver* observer );
246 
248  virtual void updateObservers();
249 
250  void indicatorMouseDown(DtMouseState& mouseState,
251  const DtUniqueID& id, const std::string& displayEngineName,
252  const std::string& windowName, const std::string& channelName);
253 
254  void indicatorMouseUp(DtMouseState& mouseState,
255  const DtUniqueID& id, const std::string& displayEngineName,
256  const std::string& windowName, const std::string& channelName);
257 
258  void indicatorMouseDblClick(DtMouseState& mouseState,
259  const DtUniqueID& id, const std::string& displayEngineName,
260  const std::string& windowName, const std::string& channelName);
261 
263  typedef std::vector<boost::function<void ()> > FunctionCallList;
264 
265  enum FunctionType {Create, Update, Destroy};
266 
268  virtual void runFunctionQueue(FunctionCallQueue& queue);
269 
270  protected:
271 
272  //Main thread variables.
273  std::string myClassName;
274 
276  //Cross thread variables. They are used between the two threads for
277  //communication.
279  DtThreadStartSP myStart;
280  DtThread* myThread;
281 
286 
290 
292 
300 
302 
303  };
304 }

Document ID: Generated on Tue Mar 8 22:13:38 EST 2016 from SVN revision 162938
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)