VR-Vantage API Documentation
DtVrlinkDriver.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2012 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvVrl/vrvVrl.h>
13 #include <vrvCore/DtDriver.h>
18 
19 #include <vlutil/vlRunnable.h>
20 
21 #include <string>
22 #include <boost/function.hpp>
23 #include <boost/signal.hpp>
24 
25 class DtThread;
26 class DtThreadStart;
27 class DtEntityType;
28 
29 namespace makVrv
30 {
31  class DtAsynchronousEventQueue;
32  class DtAsynchronousAgentManager;
33  class DtConnection;
34  class DtEntityTypeMapper;
35  class DtObserver;
36  class DtSelectionManager;
37  class DtMouseState;
38 
42  protected DtRunnable
43  {
44  public:
45 
47  DtVrlinkDriver(DtAgentManager& agentManager,
48  const std::string& uniqueName, const std::string& className);
49 
51  virtual ~DtVrlinkDriver();
52 
54  virtual const std::string& className() const;
55 
57  virtual bool observersPublished() const;
58 
60  virtual void setObserversPublished(bool isPublished);
61 
63  virtual bool viewControlEnabled() const;
64 
66  virtual void setViewControlEnabled(bool enabled);
67 
69  virtual void queueSimulationFunction(const boost::function<void ()>& function);
70 
72  bool useThreadFlag() const
73  {
74  return myUseThreadFlag;
75  }
76 
77  DtConnection* connection()
78  {
79  return myConnection;
80  }
81 
83  boost::signal<void (DtConnection*)> signal_simulationCreated;
84 
86  boost::signal<void (DtConnection*)> signal_simulationAboutToBeDestroyed;
87 
88  protected:
89 
91  virtual DtConnection* createConnection() = 0;
92 
95  virtual bool onStart();
96 
99  virtual bool onStop();
100 
102  virtual void run();
103 
105  void startPublishingObservers();
106 
108  void stopPublishingObservers();
109 
112  virtual bool onTick();
113 
116  void startThread();
117 
120  void stopThread();
121 
123  void setConnectionState( bool state );
124 
126  virtual void slot_displayEngineAdded( const DtDeRecord& igRecord );
127 
129 
131  virtual void connectToDynamicSignals();
132 
135  virtual void disconnectFromDynamicSignals();
136 
137  virtual void slot_onViewChanged(
139 
140  virtual void slot_onCurrentSelectionChanged(
141  const DtSelectionManager::IdSet& selected,
142  const DtSelectionManager::IdSet& deselected);
143 
144  virtual void slot_onVertexSelected( const DtUniqueID& selected,
145  const DtUniqueID& parentOfSelected);
146 
147  virtual void slot_onVertexDeselected( const DtUniqueID& deselected,
148  const DtUniqueID& parentOfDeselected);
149 
150  virtual void slot_onEntityInfoToggled(
151  const DtSelectionManager::IdSet& entityIds);
152 
155  virtual void slot_onEntityIndicatorMouseDown(DtMouseState& mouseState,
156  const DtUniqueID& id, const std::string& displayEngineName,
157  const std::string& windowName, const std::string& channelName);
158 
159  virtual void slot_onEntityIndicatorMouseUp(DtMouseState& mouseState,
160  const DtUniqueID& id, const std::string& displayEngineName,
161  const std::string& windowName, const std::string& channelName);
162 
163  virtual void slot_onEntityIndicatorMouseDblClick(DtMouseState& mouseState,
164  const DtUniqueID& id, const std::string& displayEngineName,
165  const std::string& windowName, const std::string& channelName);
166 
169  virtual void slot_onTacticalGraphicIndicatorMouseDown(
170  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
171  const std::string& windowName,
172  const std::string& channelName);
173 
174  virtual void slot_onTacticalGraphicIndicatorMouseUp(
175  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
176  const std::string& windowName,
177  const std::string& channelName);
178 
179  virtual void slot_onTacticalGraphicIndicatorMouseDblClick(
180  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
181  const std::string& windowName,
182  const std::string& channelName);
183 
185  virtual void slot_onCoordinateSystemChanged(
186  const std::string& coordinateSystem,
187  const std::string& coordinateParameters );
188 
190  virtual void slot_onObserverObjectAttached(
191  const std::string& observerName, DtUniqueID id);
192 
194  virtual void slot_onObserverDetached(const std::string& observerName);
195 
197  virtual void attachObserverObject(const std::string& observerName,
198  DtUniqueID id);
199 
201  virtual void toggleEntitySelected(const DtUniqueID& id);
202 
203  virtual void performObserverAction(
205 
207 
208  virtual void slot_onObserverDestroyed(DtObserver* observer);
209 
210  virtual void slot_onObserverCreated(DtObserver* observer);
211 
213  virtual void startPublishingObserver( DtObserver* observer );
214 
216  virtual void stopPublishingObserver( DtObserver* observer );
217 
219  virtual void updateObservers();
220 
221  void indicatorMouseDown(DtMouseState& mouseState,
222  const DtUniqueID& id, const std::string& displayEngineName,
223  const std::string& windowName, const std::string& channelName);
224 
225  void indicatorMouseUp(DtMouseState& mouseState,
226  const DtUniqueID& id, const std::string& displayEngineName,
227  const std::string& windowName, const std::string& channelName);
228 
229  void indicatorMouseDblClick(DtMouseState& mouseState,
230  const DtUniqueID& id, const std::string& displayEngineName,
231  const std::string& windowName, const std::string& channelName);
232 
234  typedef std::vector<boost::function<void ()> > FunctionCallList;
235 
236  enum FunctionType {Create, Update, Destroy};
237 
239  virtual void runFunctionQueue(FunctionCallQueue& queue);
240 
241  protected:
242 
243  //Main thread variables.
244  std::string myClassName;
245 
247  //Cross thread variables. They are used between the two threads for
248  //communication.
250  DtThreadStart* myStart;
251  DtThread* myThread;
252 
257 
261 
263 
268 
270 
271  };
272 }


Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)