VR-Forces 4.8 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) 2020 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  class DtColorValue;
37 
41  protected DtRunnable
42  {
43  public:
44 
46  DtVrlinkDriver(DtAgentManager& agentManager,
47  const std::string& uniqueName, const std::string& className);
48 
50  virtual ~DtVrlinkDriver();
51 
53  virtual const std::string& className() const;
54 
56  virtual bool observersPublished() const;
57 
59  virtual void setObserversPublished(bool isPublished);
60 
63  virtual bool overrideGlobalViewControl() const;
64 
67  virtual void setOverrideGlobalViewControl(bool enabled);
68 
72  virtual bool viewControlEnabled() const;
73 
76  virtual void setLocalViewControlEnabled(bool enabled);
77 
80  virtual bool localViewControlEnabled() const;
81 
84  virtual void setConnectionFrameTime( double frameTime );
85 
88  virtual double connectionFrameTime() const;
89 
96  void setUseTopoForFlatEarthVectorConversion( bool flag );
97  bool useTopoForFlatEarthVectorConversion() const;
98 
99 
101  virtual void queueDriverFunction(const boost::function<void ()>& function);
102 
104  virtual void queueConnectionFunction(const boost::function<void ()>& function);
105 
107  bool useThreadFlag() const
108  {
109  return myUseThreadFlag;
110  }
111 
113  {
114  return myConnection;
115  }
116 
118  boost::signal<void (DtConnection*)> signal_simulationCreated;
119 
121  boost::signal<void (DtConnection*)> signal_simulationAboutToBeDestroyed;
122 
123  protected:
124 
126  virtual DtConnection* createConnection() = 0;
127 
130  virtual bool onStart();
131 
134  virtual bool onStop();
135 
137  virtual void run();
138 
140  void startPublishingObservers();
141 
143  void stopPublishingObservers();
144 
147  virtual bool onTick();
148 
151  void startThread();
152 
155  void stopThread();
156 
158  void setConnectionState( bool state );
159 
161  virtual void slot_displayEngineAdded( const DtDeRecord& igRecord );
162 
164  virtual void slot_globalViewControlEnabledSet( bool );
165 
167 
169  virtual void connectToDynamicSignals();
170 
173  virtual void disconnectFromDynamicSignals();
174 
175  virtual void slot_onViewChanged(
177 
178  virtual void slot_onCurrentSelectionChanged(
179  const DtSelectionManager::IdSet& selected,
180  const DtSelectionManager::IdSet& deselected);
181 
182  virtual void slot_onVertexSelected( const DtUniqueID& selected,
183  const DtUniqueID& parentOfSelected);
184 
185  virtual void slot_onVertexDeselected( const DtUniqueID& deselected,
186  const DtUniqueID& parentOfDeselected);
187 
188  virtual void slot_onEntityInfoToggled(
189  const DtSelectionManager::IdSet& entityIds);
190 
192  virtual void slot_entityTrackHistoryColorOverride(
193  const DtUniqueID& entityId, const DtColorValue& color, bool overrideColor);
194 
197  virtual void slot_onEntityIndicatorMouseDown(DtMouseState& mouseState,
198  const DtUniqueID& id, const std::string& displayEngineName,
199  const std::string& windowName, const std::string& channelName);
200 
201  virtual void slot_onEntityIndicatorMouseUp(DtMouseState& mouseState,
202  const DtUniqueID& id, const std::string& displayEngineName,
203  const std::string& windowName, const std::string& channelName);
204 
205  virtual void slot_onEntityIndicatorMouseDblClick(DtMouseState& mouseState,
206  const DtUniqueID& id, const std::string& displayEngineName,
207  const std::string& windowName, const std::string& channelName);
208 
211  virtual void slot_onTacticalGraphicIndicatorMouseDown(
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_onTacticalGraphicIndicatorMouseUp(
217  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
218  const std::string& windowName,
219  const std::string& channelName);
220 
221  virtual void slot_onTacticalGraphicIndicatorMouseDblClick(
222  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
223  const std::string& windowName,
224  const std::string& channelName);
225 
227  virtual void slot_onCoordinateSystemChanged(
228  const std::string& coordinateSystem,
229  const std::string& coordinateParameters );
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 
254  virtual void slot_pause();
255 
258  virtual void slot_resume();
259 
260  void indicatorMouseDown(DtMouseState& mouseState,
261  const DtUniqueID& id, const std::string& displayEngineName,
262  const std::string& windowName, const std::string& channelName);
263 
264  void indicatorMouseUp(DtMouseState& mouseState,
265  const DtUniqueID& id, const std::string& displayEngineName,
266  const std::string& windowName, const std::string& channelName);
267 
268  void indicatorMouseDblClick(DtMouseState& mouseState,
269  const DtUniqueID& id, const std::string& displayEngineName,
270  const std::string& windowName, const std::string& channelName);
271 
273  typedef std::vector<boost::function<void ()> > FunctionCallList;
274 
275  enum FunctionType {Create, Update, Destroy};
276 
278  virtual void runFunctionQueue(FunctionCallQueue& queue);
279 
280  protected:
281 
282  //Main thread variables.
283  std::string myClassName;
284 
286  //Cross thread variables. They are used between the two threads for
287  //communication.
289  DtThreadStartSP myStart;
290  DtThread* myThread;
291 
296 
300 
302 
305  double myLastSimTime; // only used when single threaded
312 
314 
315  };
316 }
The base class for protocol specific VRLink Simulations.
Definition: DtConnection.h:41
boost::function< void(DtObserver &)> ObserverAction
Definition: DtViewStateProcessor.h:32
#define DT_DLL_VRVVRL
Definition: vrvVrl.h:19
An asynchronous interface to the scene manager.
Definition: DtAsynchronousAgentManager.h:27
The master window of the scene.
Definition: DtSelectionManager.h:28
A Record of an IG instance.
Definition: DtDeRecord.h:24
Contains makVrv:DtSelectionManager class.
Contains makVrv::DtLockedBufferedQueue class.
A locked buffered queue which allows multiple writers and a single reader.
Definition: DtLockedBufferedQueue.h:27
A facade for a DtObserverObject.
Definition: DtObserver.h:37
The DtDriver is an abstract class.
Definition: DtDriver.h:34
The asynchronous event queue.
Definition: DtAsynchronousEventQueue.h:27
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:24
This class encapsulates the state associated with a mouse button event.
Definition: DtMouseState.h:23
The DtAgentManager manages the distributed scene object framework.
Definition: DtAgentManager.h:38
unsigned long long DtUniqueID
Definition: DtUniqueID.h:22
Contains makVrv:DtDriver class.
Contains DLL export macros.
std::set< DtUniqueID > IdSet
Definition: DtSelectionManager.h:32
Template for Color values in [0,1] range.
Definition: DtColorValue.h:18

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)