VR-Forces 4.6.1 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtVrlinkDriver.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2018 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 toggleEntitySelected(const DtUniqueID& id);
228 
229  virtual void performObserverAction(
231 
233 
234  virtual void slot_onObserverDestroyed(DtObserver* observer);
235 
236  virtual void slot_onObserverCreated(DtObserver* observer);
237 
239  virtual void startPublishingObserver( DtObserver* observer );
240 
242  virtual void stopPublishingObserver( DtObserver* observer );
243 
245  virtual void updateObservers();
246 
249  virtual void slot_pause();
250 
253  virtual void slot_resume();
254 
255  void indicatorMouseDown(DtMouseState& mouseState,
256  const DtUniqueID& id, const std::string& displayEngineName,
257  const std::string& windowName, const std::string& channelName);
258 
259  void indicatorMouseUp(DtMouseState& mouseState,
260  const DtUniqueID& id, const std::string& displayEngineName,
261  const std::string& windowName, const std::string& channelName);
262 
263  void indicatorMouseDblClick(DtMouseState& mouseState,
264  const DtUniqueID& id, const std::string& displayEngineName,
265  const std::string& windowName, const std::string& channelName);
266 
268  typedef std::vector<boost::function<void ()> > FunctionCallList;
269 
270  enum FunctionType {Create, Update, Destroy};
271 
273  virtual void runFunctionQueue(FunctionCallQueue& queue);
274 
275  protected:
276 
277  //Main thread variables.
278  std::string myClassName;
279 
281  //Cross thread variables. They are used between the two threads for
282  //communication.
284  DtThreadStartSP myStart;
285  DtThread* myThread;
286 
291 
295 
297 
300  double myLastSimTime; // only used when single threaded
307 
309 
310  };
311 }

Document ID: Generated on Wed Jul 25 16:57:45 EDT 2018 from SVN revision 190790
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)