VR-Forces 4.10 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 <vrvUtil/signalslib.h>
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::signalslib::signal<void (DtConnection*)> signal_simulationCreated;
119 
121  boost::signalslib::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_onElementHasHoveredWidget(
183  const DtElementID& sceneObjectId,
184  bool isHovered);
185 
186  virtual void slot_onVertexSelected( const DtUniqueID& selected,
187  const DtUniqueID& parentOfSelected);
188 
189  virtual void slot_onVertexDeselected( const DtUniqueID& deselected,
190  const DtUniqueID& parentOfDeselected);
191 
192  virtual void slot_onEntityInfoToggled(
193  const DtSelectionManager::IdSet& entityIds);
194 
196  virtual void slot_entityTrackHistoryColorOverride(
197  const DtUniqueID& entityId, const DtColorValue& color, bool overrideColor);
198 
201  virtual void slot_onEntityIndicatorMouseDown(DtMouseState& mouseState,
202  const DtUniqueID& id, const std::string& displayEngineName,
203  const std::string& windowName, const std::string& channelName);
204 
205  virtual void slot_onEntityIndicatorMouseUp(DtMouseState& mouseState,
206  const DtUniqueID& id, const std::string& displayEngineName,
207  const std::string& windowName, const std::string& channelName);
208 
209  virtual void slot_onEntityIndicatorMouseDblClick(DtMouseState& mouseState,
210  const DtUniqueID& id, const std::string& displayEngineName,
211  const std::string& windowName, const std::string& channelName);
212 
215  virtual void slot_onTacticalGraphicIndicatorMouseDown(
216  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
217  const std::string& windowName,
218  const std::string& channelName);
219 
220  virtual void slot_onTacticalGraphicIndicatorMouseUp(
221  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
222  const std::string& windowName,
223  const std::string& channelName);
224 
225  virtual void slot_onTacticalGraphicIndicatorMouseDblClick(
226  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
227  const std::string& windowName,
228  const std::string& channelName);
229 
231  virtual void slot_onCoordinateSystemChanged(
232  const std::string& coordinateSystem,
233  const std::string& coordinateParameters );
234 
236  virtual void toggleEntitySelected(const DtUniqueID& id);
237 
238  virtual void performObserverAction(
240 
242 
243  virtual void slot_onObserverDestroyed(DtObserver* observer);
244 
245  virtual void slot_onObserverCreated(DtObserver* observer);
246 
248  virtual void startPublishingObserver( DtObserver* observer );
249 
251  virtual void stopPublishingObserver( DtObserver* observer );
252 
254  virtual void updateObservers();
255 
258  virtual void slot_pause();
259 
262  virtual void slot_resume();
263 
264  void indicatorMouseDown(DtMouseState& mouseState,
265  const DtUniqueID& id, const std::string& displayEngineName,
266  const std::string& windowName, const std::string& channelName);
267 
268  void indicatorMouseUp(DtMouseState& mouseState,
269  const DtUniqueID& id, const std::string& displayEngineName,
270  const std::string& windowName, const std::string& channelName);
271 
272  void indicatorMouseDblClick(DtMouseState& mouseState,
273  const DtUniqueID& id, const std::string& displayEngineName,
274  const std::string& windowName, const std::string& channelName);
275 
277  typedef std::vector<boost::function<void ()> > FunctionCallList;
278 
279  enum FunctionType {Create, Update, Destroy};
280 
282  virtual void runFunctionQueue(FunctionCallQueue& queue);
283 
284  protected:
285 
286  //Main thread variables.
287  std::string myClassName;
288 
290  //Cross thread variables. They are used between the two threads for
291  //communication.
293  DtThreadStartSP myStart;
294  DtThread* myThread;
295 
300 
304 
306 
309  double myLastSimTime; // only used when single threaded
316 
318 
319  };
320 }
The base class for protocol specific VRLink Simulations.
Definition: DtConnection.h:41
boost::function< void(DtObserver &)> ObserverAction
Definition: DtViewStateProcessor.h:29
#define DT_DLL_VRVVRL
Definition: vrvVrl.h:19
An asynchronous interface to the scene manager.
Definition: DtAsynchronousAgentManager.h:24
The master window of the scene.
Definition: DtSelectionManager.h:28
A Record of an IG instance.
Definition: DtDeRecord.h:24
Contains makVrv:DtSelectionManager class.
DtUniqueID DtElementID
The ElementID is a specific type of unique ID used to represent VR-Vantage uniquely defined elements...
Definition: DtUniqueID.h:23
Contains makVrv::DtLockedBufferedQueue class.
A locked buffered queue which allows multiple writers and a single reader.
Definition: DtLockedBufferedQueue.h:24
A facade for a DtObserverObject.
Definition: DtObserver.h:37
The DtDriver is an abstract class.
Definition: DtDriver.h:31
The asynchronous event queue.
Definition: DtAsynchronousEventQueue.h:24
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
This class encapsulates the state associated with a mouse button event.
Definition: DtMouseState.h:20
The DtAgentManager manages the distributed scene object framework.
Definition: DtAgentManager.h:38
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
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:20

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)