VR-Forces 4.3 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>
18 #include <vlutil/vlThread.h>
19 
20 #include <vlutil/vlRunnable.h>
21 
22 #include <string>
23 #include <boost/function.hpp>
24 #include <boost/signal.hpp>
25 
26 class DtThread;
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 
68 
75  void setUseTopoForFlatEarthVectorConversion( bool flag );
76  bool useTopoForFlatEarthVectorConversion() const;
77 
78 
80  virtual void queueDriverFunction(const boost::function<void ()>& function);
81 
83  virtual void queueConnectionFunction(const boost::function<void ()>& function);
84 
86  bool useThreadFlag() const
87  {
88  return myUseThreadFlag;
89  }
90 
91  DtConnection* connection()
92  {
93  return myConnection;
94  }
95 
97  boost::signal<void (DtConnection*)> signal_simulationCreated;
98 
100  boost::signal<void (DtConnection*)> signal_simulationAboutToBeDestroyed;
101 
102  protected:
103 
105  virtual DtConnection* createConnection() = 0;
106 
109  virtual bool onStart();
110 
113  virtual bool onStop();
114 
116  virtual void run();
117 
119  void startPublishingObservers();
120 
122  void stopPublishingObservers();
123 
126  virtual bool onTick();
127 
130  void startThread();
131 
134  void stopThread();
135 
137  void setConnectionState( bool state );
138 
140  virtual void slot_displayEngineAdded( const DtDeRecord& igRecord );
141 
143 
145  virtual void connectToDynamicSignals();
146 
149  virtual void disconnectFromDynamicSignals();
150 
151  virtual void slot_onViewChanged(
153 
154  virtual void slot_onCurrentSelectionChanged(
155  const DtSelectionManager::IdSet& selected,
156  const DtSelectionManager::IdSet& deselected);
157 
158  virtual void slot_onVertexSelected( const DtUniqueID& selected,
159  const DtUniqueID& parentOfSelected);
160 
161  virtual void slot_onVertexDeselected( const DtUniqueID& deselected,
162  const DtUniqueID& parentOfDeselected);
163 
164  virtual void slot_onEntityInfoToggled(
165  const DtSelectionManager::IdSet& entityIds);
166 
169  virtual void slot_onEntityIndicatorMouseDown(DtMouseState& mouseState,
170  const DtUniqueID& id, const std::string& displayEngineName,
171  const std::string& windowName, const std::string& channelName);
172 
173  virtual void slot_onEntityIndicatorMouseUp(DtMouseState& mouseState,
174  const DtUniqueID& id, const std::string& displayEngineName,
175  const std::string& windowName, const std::string& channelName);
176 
177  virtual void slot_onEntityIndicatorMouseDblClick(DtMouseState& mouseState,
178  const DtUniqueID& id, const std::string& displayEngineName,
179  const std::string& windowName, const std::string& channelName);
180 
183  virtual void slot_onTacticalGraphicIndicatorMouseDown(
184  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
185  const std::string& windowName,
186  const std::string& channelName);
187 
188  virtual void slot_onTacticalGraphicIndicatorMouseUp(
189  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
190  const std::string& windowName,
191  const std::string& channelName);
192 
193  virtual void slot_onTacticalGraphicIndicatorMouseDblClick(
194  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
195  const std::string& windowName,
196  const std::string& channelName);
197 
199  virtual void slot_onCoordinateSystemChanged(
200  const std::string& coordinateSystem,
201  const std::string& coordinateParameters );
202 
204  virtual void slot_onObserverObjectAttached(
205  const std::string& observerName, DtUniqueID id);
206 
208  virtual void slot_onObserverDetached(const std::string& observerName);
209 
211  virtual void attachObserverObject(const std::string& observerName,
212  DtUniqueID id);
213 
215  virtual void toggleEntitySelected(const DtUniqueID& id);
216 
217  virtual void performObserverAction(
219 
221 
222  virtual void slot_onObserverDestroyed(DtObserver* observer);
223 
224  virtual void slot_onObserverCreated(DtObserver* observer);
225 
227  virtual void startPublishingObserver( DtObserver* observer );
228 
230  virtual void stopPublishingObserver( DtObserver* observer );
231 
233  virtual void updateObservers();
234 
235  void indicatorMouseDown(DtMouseState& mouseState,
236  const DtUniqueID& id, const std::string& displayEngineName,
237  const std::string& windowName, const std::string& channelName);
238 
239  void indicatorMouseUp(DtMouseState& mouseState,
240  const DtUniqueID& id, const std::string& displayEngineName,
241  const std::string& windowName, const std::string& channelName);
242 
243  void indicatorMouseDblClick(DtMouseState& mouseState,
244  const DtUniqueID& id, const std::string& displayEngineName,
245  const std::string& windowName, const std::string& channelName);
246 
248  typedef std::vector<boost::function<void ()> > FunctionCallList;
249 
250  enum FunctionType {Create, Update, Destroy};
251 
253  virtual void runFunctionQueue(FunctionCallQueue& queue);
254 
255  protected:
256 
257  //Main thread variables.
258  std::string myClassName;
259 
261  //Cross thread variables. They are used between the two threads for
262  //communication.
264  DtThreadStartSP myStart;
265  DtThread* myThread;
266 
271 
275 
277 
283 
285 
286  };
287 }

Document ID: Generated on Wed Mar 11 21:20:57 EDT 2015 from SVN revision 150940
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)