VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DtInputDriver.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
12 #include <vrvCore/DtDriver.h>
16 #include <boost/signal.hpp>
17 
18 #include <string>
19 #include <vector>
20 
21 namespace makVrv
22 {
23  class DtAgentManager;
24  class DtChannel;
25  class DtChannelManager;
26  class DtDe;
27  class DtEventProcessorInterface;
28  class DtInputDriverConfiguration;
29  class DtKeyAndMouseEventListener;
30  class DtKeyMap;
31  class DtKeyMapManager;
32  class DtMouseEvent;
33  class DtPinchGesture;
34  class DtObserver;
35  class DtObserverController;
36  class DtChannelConfiguration;
37  class DtObserverAnimator;
38 
43  {
44  public:
47  typedef std::list<DtEventProcessorInterface*> EventProcessorList;
48 
50  typedef std::map<std::string, makArchives::DtObserverStateRecord> ObserverStateMap;
51 
53  typedef std::map<std::string, DtObserverConfiguration> ObserverConfigurationMap;
54 
56  DtInputDriver( DtAgentManager& agentManager,
57  const std::string& instanceName );
58 
60  virtual ~DtInputDriver();
61 
63  virtual bool onStart();
64 
66  virtual bool onStop();
67 
69  virtual bool onTick();
70 
72  virtual const std::string& className() const;
73 
75  virtual bool processKeyEvent( const DtKeyEvent& keyEvent,
76  DtChannel* channel );
77 
79  virtual bool processMouseEvent( const DtMouseEvent& mouseEvent,
80  DtChannel* channel );
81 
82  virtual bool processPinchGesture( const DtPinchGesture& pinchGesture,
83  DtChannel* channel );
84 
86  virtual void hideMouse( DtChannel* channel, float mouseX, float mouseY );
87 
89  virtual bool isMouseHidden() const;
90 
92  virtual void showMouse( DtChannel* channel );
93 
95  virtual void centerMouse( DtChannel* channel );
96 
98  virtual void setMousePosition(DtChannel* channel, float x, float y);
99 
102  virtual void clearState();
103 
109  DtChannel* currentChannel() const;
110 
113  virtual void addEventProcessorToFront(DtEventProcessorInterface* epi);
114 
119  virtual void addEventProcessorToBack(DtEventProcessorInterface* epi);
120 
124  virtual EventProcessorList& eventProcessorList();
125 
128  virtual DtEventProcessorInterface* findEventProcessor(
129  const std::string& className);
130 
135  virtual void removeEventProcessor(DtEventProcessorInterface* epi);
136 
138  bool saveKeyMapToFile(const DtKeyMap& keyMap, const std::string& filename) const;
139 
142  DtKeyMap* loadKeyMapFromFile(const std::string& filename, bool createBackup = false);
143 
145  //
148  void setKeyMap( const std::string& mapName );
149 
151  const std::string& keyMap() const;
152 
154  DtKeyMap* createKeyMap( const std::string& mapName );
155 
157  DtKeyMap* findKeyMap( const std::string& mapName );
158 
160  void addKeyBinding( DtKeyMap* map, DtKeyState::KeyType key,
161  std::string functionName,
163  bool replace = false,
165 
168  void addBinaryKeyBinding( DtKeyMap* map, DtKeyState::KeyType key,
169  std::string binaryName,
171  bool replace = false );
172 
174  virtual void realizeConfiguration(
175  const DtInputDriverConfiguration& configuration);
176 
177  virtual void realizeObserverConfiguration(
178  const DtObserverConfiguration& configuration);
179 
180  const ObserverConfigurationMap& observerConfigurations() const;
181 
188  void addObserverConfiguration( const DtObserverConfiguration& config );
189 
192  void addObserverState( const std::string& observerName,
193  const makArchives::DtObserverStateRecord& stateRecord );
194 
198  void initializeObserver( DtObserver* observer,
199  const makArchives::DtObserverStateRecord& stateRecord );
200 
201  //-----
203 
205  virtual void addObserver( DtObserver* observer);
206 
208  virtual void removeObserver( DtObserver* observer );
209 
211  virtual void removeObserver( const std::string& name );
212 
214  virtual std::vector<DtObserver*> observers() const;
215 
217 
218  virtual DtObserver* findObserverByName( const std::string& name );
219  virtual const DtObserver* findObserverByName( const std::string& name ) const;
221 
223  void setCurrentObserver( const std::string& observerName );
224 
226  DtObserver* currentObserver() const;
227 
229  void setTerrainContextEnabled(bool enabled);
230  bool terrainContextEnabled() const;
231 
233 
235  virtual void performObserverAction(const DtViewStateProcessor::ObserverAction& action);
236 
238  virtual void toggleTerrainScaling();
239 
241  virtual void incrementTerrainScaleFactor();
242 
244  virtual void decrementTerrainScaleFactor();
245 
247  virtual void toggleEntityLabels();
248 
250  virtual void toggleRotateEntitySymbols();
251 
253  virtual void toggleTacticalGraphics();
254 
256  virtual void toggleEntityHatLines();
257 
259  virtual void toggleTacticalGraphicsHatLines();
261  virtual void toggleEntityHatMode();
262 
264  virtual void toggleTacticalGraphicsHatMode();
265 
267  virtual void togglePropTransparencySelected();
268 
271  virtual void toggleViewControl();
272 
274  void resetObservers(DtUniqueID id);
275 
278  void setAllowObserverReset(bool allow);
279 
281  void saveObservers(const std::string& filename);
282 
286  void loadObservers(const std::string& filename, bool force=false);
287 
288  DtElementEntry::ObjectType typeFromId(const DtUniqueID& id);
289 
293  virtual void animateObserver(DtObserverAnimator* newAnimator);
294 
296  virtual void removeAnimatorFromObserver( DtObserver *observer);
297 
298  protected:
299 
300  void setCurrentObserver( DtObserver* observer );
301 
303  virtual void initializeKeyMapManager( const std::string& defaultKeyMap );
304  virtual void bindFunctions();
306  virtual void createMaps();
307 
310  virtual void loadMaps(bool loadFromFactory = false);
311 
313  typedef std::map<std::string, DtObserver*> ObserversMap;
314 
315  void removeObserver( ObserversMap& observers, DtObserver* observer );
316  void removeObserver(ObserversMap& observers, const std::string& name );
317 
318  void destroyObservers();
319 
320  bool setCurrentObserverFromChannel(const DtChannel& channel );
321 
322  void slot_channelCreated( DtChannelManager* channelManager, DtChannel* channel);
323  void slot_channelDestroyed( DtChannelManager* channelManager, DtChannel* channel);
324  void slot_channelConfigurationModified(const std::string& deName,
325  const std::string& winName, const std::string& oldChannelName,
326  const DtChannelConfiguration& config);
327  void slot_attachedToChanged( DtObserver* observer );
328 
329 
330  void createRequiredObservers( const std::string& engineName );
331 
333  virtual void slot_displayEngineAdded(const DtDeRecord& igRecord);
334 
338  std::string restoreObserversPart1();
339 
341  void restoreObserversPart2( const std::string& filename );
342 
343  virtual void slot_displayEngineRealized( const std::string&,
344  const std::string& engineName );
345 
346  private:
348  DtInputDriver( const DtInputDriver& );
349 
351  DtInputDriver& operator=( const DtInputDriver& );
352 
353  protected:
355 
357 
360 
363 
364  std::string myClassName;
366 
369 
372 
375 
377 
379 
381  std::list<DtObserverAnimator*> myAnimatingObservers;
382  };
383 
387  {
388  public:
389 
392 
394  virtual ~DtInputDriverCreator();
395 
397  static DtInputDriverCreator& instance(DtDe& de);
398 
402  static void registerInstance(DtDe& de, DtInputDriverCreator* creator);
403 
405  virtual DtInputDriver* create(DtAgentManager& sm);
406 
407  };
408 
409 }

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)