VR-Forces 4.5 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  virtual bool localViewControlEnabled() const;
80 
83  virtual void setConnectionFrameTime( double frameTime );
84 
87  virtual double connectionFrameTime() const;
88 
95  void setUseTopoForFlatEarthVectorConversion( bool flag );
96  bool useTopoForFlatEarthVectorConversion() const;
97 
98 
100  virtual void queueDriverFunction(const boost::function<void ()>& function);
101 
103  virtual void queueConnectionFunction(const boost::function<void ()>& function);
104 
106  bool useThreadFlag() const
107  {
108  return myUseThreadFlag;
109  }
110 
111  DtConnection* connection()
112  {
113  return myConnection;
114  }
115 
117  boost::signal<void (DtConnection*)> signal_simulationCreated;
118 
120  boost::signal<void (DtConnection*)> signal_simulationAboutToBeDestroyed;
121 
122  protected:
123 
125  virtual DtConnection* createConnection() = 0;
126 
129  virtual bool onStart();
130 
133  virtual bool onStop();
134 
136  virtual void run();
137 
139  void startPublishingObservers();
140 
142  void stopPublishingObservers();
143 
146  virtual bool onTick();
147 
150  void startThread();
151 
154  void stopThread();
155 
157  void setConnectionState( bool state );
158 
160  virtual void slot_displayEngineAdded( const DtDeRecord& igRecord );
161 
163  virtual void slot_globalViewControlEnabledSet( bool );
164 
166 
168  virtual void connectToDynamicSignals();
169 
172  virtual void disconnectFromDynamicSignals();
173 
174  virtual void slot_onViewChanged(
176 
177  virtual void slot_onCurrentSelectionChanged(
178  const DtSelectionManager::IdSet& selected,
179  const DtSelectionManager::IdSet& deselected);
180 
181  virtual void slot_onVertexSelected( const DtUniqueID& selected,
182  const DtUniqueID& parentOfSelected);
183 
184  virtual void slot_onVertexDeselected( const DtUniqueID& deselected,
185  const DtUniqueID& parentOfDeselected);
186 
187  virtual void slot_onEntityInfoToggled(
188  const DtSelectionManager::IdSet& entityIds);
189 
192  virtual void slot_onEntityIndicatorMouseDown(DtMouseState& mouseState,
193  const DtUniqueID& id, const std::string& displayEngineName,
194  const std::string& windowName, const std::string& channelName);
195 
196  virtual void slot_onEntityIndicatorMouseUp(DtMouseState& mouseState,
197  const DtUniqueID& id, const std::string& displayEngineName,
198  const std::string& windowName, const std::string& channelName);
199 
200  virtual void slot_onEntityIndicatorMouseDblClick(DtMouseState& mouseState,
201  const DtUniqueID& id, const std::string& displayEngineName,
202  const std::string& windowName, const std::string& channelName);
203 
206  virtual void slot_onTacticalGraphicIndicatorMouseDown(
207  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
208  const std::string& windowName,
209  const std::string& channelName);
210 
211  virtual void slot_onTacticalGraphicIndicatorMouseUp(
212  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
213  const std::string& windowName,
214  const std::string& channelName);
215 
216  virtual void slot_onTacticalGraphicIndicatorMouseDblClick(
217  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
218  const std::string& windowName,
219  const std::string& channelName);
220 
222  virtual void slot_onCoordinateSystemChanged(
223  const std::string& coordinateSystem,
224  const std::string& coordinateParameters );
225 
227  virtual void slot_onObserverObjectAttached(
228  const std::string& observerName, DtUniqueID id);
229 
231  virtual void slot_onObserverDetached(const std::string& observerName);
232 
234  virtual void attachObserverObject(const std::string& observerName,
235  DtUniqueID id);
236 
238  virtual void toggleEntitySelected(const DtUniqueID& id);
239 
240  virtual void performObserverAction(
242 
244 
245  virtual void slot_onObserverDestroyed(DtObserver* observer);
246 
247  virtual void slot_onObserverCreated(DtObserver* observer);
248 
250  virtual void startPublishingObserver( DtObserver* observer );
251 
253  virtual void stopPublishingObserver( DtObserver* observer );
254 
256  virtual void updateObservers();
257 
258  void indicatorMouseDown(DtMouseState& mouseState,
259  const DtUniqueID& id, const std::string& displayEngineName,
260  const std::string& windowName, const std::string& channelName);
261 
262  void indicatorMouseUp(DtMouseState& mouseState,
263  const DtUniqueID& id, const std::string& displayEngineName,
264  const std::string& windowName, const std::string& channelName);
265 
266  void indicatorMouseDblClick(DtMouseState& mouseState,
267  const DtUniqueID& id, const std::string& displayEngineName,
268  const std::string& windowName, const std::string& channelName);
269 
271  typedef std::vector<boost::function<void ()> > FunctionCallList;
272 
273  enum FunctionType {Create, Update, Destroy};
274 
276  virtual void runFunctionQueue(FunctionCallQueue& queue);
277 
278  protected:
279 
280  //Main thread variables.
281  std::string myClassName;
282 
284  //Cross thread variables. They are used between the two threads for
285  //communication.
287  DtThreadStartSP myStart;
288  DtThread* myThread;
289 
294 
298 
300 
309 
311 
312  };
313 }

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)