VR-Forces Development_Version 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 
186  void addObserverConfiguration( const DtObserverConfiguration& config );
187 
190  void addObserverState( const std::string& observerName,
191  const makArchives::DtObserverStateRecord& stateRecord );
192 
196  void initializeObserver( DtObserver* observer,
197  const makArchives::DtObserverStateRecord& stateRecord );
198 
199  //-----
201 
203  virtual void addObserver( DtObserver* observer);
204 
206  virtual void removeObserver( DtObserver* observer );
207 
209  virtual void removeObserver( const std::string& name );
210 
212  virtual std::vector<DtObserver*> observers() const;
213 
215 
216  virtual DtObserver* findObserverByName( const std::string& name );
217  virtual const DtObserver* findObserverByName( const std::string& name ) const;
219 
221  void setCurrentObserver( const std::string& observerName );
222 
224  DtObserver* currentObserver() const;
225 
227  void setTerrainContextEnabled(bool enabled);
228  bool terrainContextEnabled() const;
229 
231 
233  virtual void performObserverAction(DtViewStateProcessor::ObserverAction& action);
234 
236  virtual void toggleTerrainScaling();
237 
239  virtual void incrementTerrainScaleFactor();
240 
242  virtual void decrementTerrainScaleFactor();
243 
245  virtual void toggleEntityLabels();
246 
248  virtual void toggleRotateEntitySymbols();
249 
251  virtual void toggleTacticalGraphics();
252 
254  virtual void toggleEntityHatLines();
255 
257  virtual void toggleTacticalGraphicsHatLines();
259  virtual void toggleEntityHatMode();
260 
262  virtual void toggleTacticalGraphicsHatMode();
263 
265  virtual void togglePropTransparencySelected();
266 
269  virtual void toggleViewControl();
270 
272  void resetObservers(DtUniqueID id);
273 
276  void setAllowObserverReset(bool allow);
277 
279  void saveObservers(const std::string& filename);
280 
284  void loadObservers(const std::string& filename, bool force=false);
285 
286  DtElementEntry::ObjectType typeFromId(const DtUniqueID& id);
287 
291  virtual void animateObserver(DtObserverAnimator* newAnimator);
292 
294  virtual void removeAnimatorFromObserver( DtObserver *observer);
295 
296  protected:
297 
298  void setCurrentObserver( DtObserver* observer );
299 
301  virtual void initializeKeyMapManager( const std::string& defaultKeyMap );
302  virtual void bindFunctions();
304  virtual void createMaps();
305 
308  virtual void loadMaps(bool loadFromFactory = false);
309 
311  typedef std::map<std::string, DtObserver*> ObserversMap;
312 
313  void removeObserver( ObserversMap& observers, DtObserver* observer );
314  void removeObserver(ObserversMap& observers, const std::string& name );
315 
316  void destroyObservers();
317 
318  bool setCurrentObserverFromChannel(const DtChannel& channel );
319 
320  void slot_channelCreated( DtChannelManager* channelManager, DtChannel* channel);
321  void slot_channelDestroyed( DtChannelManager* channelManager, DtChannel* channel);
322  void slot_channelConfigurationModified(const std::string& deName,
323  const std::string& winName, const std::string& oldChannelName,
324  const DtChannelConfiguration& config);
325  void slot_attachedToChanged( DtObserver* observer );
326 
327 
328  void createRequiredObservers( const std::string& engineName );
329 
331  virtual void slot_displayEngineAdded(const DtDeRecord& igRecord);
332 
336  std::string restoreObserversPart1();
337 
339  void restoreObserversPart2( const std::string& filename );
340 
341  virtual void slot_displayEngineRealized( const std::string&,
342  const std::string& engineName );
343 
344  private:
346  DtInputDriver( const DtInputDriver& );
347 
349  DtInputDriver& operator=( const DtInputDriver& );
350 
351  protected:
353 
355 
358 
361 
362  std::string myClassName;
364 
367 
370 
373 
375 
377 
379  std::list<DtObserverAnimator*> myAnimatingObservers;
380  };
381 
385  {
386  public:
387 
390 
392  virtual ~DtInputDriverCreator();
393 
395  static DtInputDriverCreator& instance(DtDe& de);
396 
400  static void registerInstance(DtDe& de, DtInputDriverCreator* creator);
401 
403  virtual DtInputDriver* create(DtAgentManager& sm);
404 
405  };
406 
407 }

Document ID: Generated on Tue Mar 8 22:13:38 EST 2016 from SVN revision 162938
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)