VR-Forces 4.3.1 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
11 #include <vrvCore/vrvCore.h>
13 #include <vrvCore/DtElementEntry.h>
14 #include <vrvCore/DtDriver.h>
17 #include <vrvCore/DtKeyEvent.h>
19 #include <boost/signal.hpp>
20 
21 #include <string>
22 #include <map>
23 #include <vector>
24 #include <list>
25 
26 namespace makVrv
27 {
28  class DtAgentManager;
29  class DtChannel;
30  class DtChannelManager;
31  class DtDe;
32  class DtEventProcessorInterface;
33  class DtInputDriverConfiguration;
34  class DtKeyAndMouseEventListener;
35  class DtKeyMap;
36  class DtKeyMapManager;
37  class DtMouseEvent;
38  class DtObserver;
39  class DtObserverController;
40  class DtChannelConfiguration;
41  class DtObserverAnimator;
42 
47  {
48  public:
51  typedef std::list<DtEventProcessorInterface*> EventProcessorList;
52 
54  typedef std::map<std::string, makArchives::DtObserverStateRecord> ObserverStateMap;
55 
57  typedef std::map<std::string, DtObserverConfiguration> ObserverConfigurationMap;
58 
60  DtInputDriver( DtAgentManager& agentManager,
61  const std::string& instanceName );
62 
64  virtual ~DtInputDriver();
65 
67  virtual bool onStart();
68 
70  virtual bool onStop();
71 
73  virtual bool onTick();
74 
76  virtual const std::string& className() const;
77 
79  virtual bool processKeyEvent( const DtKeyEvent& keyEvent,
80  DtChannel* channel );
81 
83  virtual bool processMouseEvent( const DtMouseEvent& mouseEvent,
84  DtChannel* channel );
85 
87  virtual void hideMouse( DtChannel* channel, float mouseX, float mouseY );
88 
90  virtual bool isMouseHidden() const;
91 
93  virtual void showMouse( DtChannel* channel );
94 
96  virtual void centerMouse( DtChannel* channel );
97 
99  virtual void setMousePosition(DtChannel* channel, float x, float y);
100 
103  virtual void clearState();
104 
110  DtChannel* currentChannel() const;
111 
114  virtual void addEventProcessorToFront(DtEventProcessorInterface* epi);
115 
120  virtual void addEventProcessorToBack(DtEventProcessorInterface* epi);
121 
125  virtual EventProcessorList& eventProcessorList();
126 
129  virtual DtEventProcessorInterface* findEventProcessor(
130  const std::string& className);
131 
136  virtual void removeEventProcessor(DtEventProcessorInterface* epi);
137 
139  bool saveKeyMapToFile(const DtKeyMap& keyMap, const std::string& filename) const;
140 
143  DtKeyMap* loadKeyMapFromFile(const std::string& filename, bool createBackup = false);
144 
146  //
149  void setKeyMap( const std::string& mapName );
150 
152  const std::string& keyMap() const;
153 
155  DtKeyMap* createKeyMap( const std::string& mapName );
156 
158  DtKeyMap* findKeyMap( const std::string& mapName );
159 
161  void addKeyBinding( DtKeyMap* map, DtKeyState::KeyType key,
162  std::string functionName,
164  bool replace = false,
166 
169  void addBinaryKeyBinding( DtKeyMap* map, DtKeyState::KeyType key,
170  std::string binaryName,
172  bool replace = false );
173 
175  virtual void realizeConfiguration(
176  const DtInputDriverConfiguration& configuration);
177 
178  virtual void realizeObserverConfiguration(
179  const DtObserverConfiguration& configuration);
180 
181  const ObserverConfigurationMap& observerConfigurations() const;
182 
187  void addObserverConfiguration( const DtObserverConfiguration& config );
188 
191  void addObserverState( const std::string& observerName,
192  const makArchives::DtObserverStateRecord& stateRecord );
193 
197  void initializeObserver( DtObserver* observer,
198  const makArchives::DtObserverStateRecord& stateRecord );
199 
200  //-----
202 
204  virtual void addObserver( DtObserver* observer);
205 
207  virtual void removeObserver( DtObserver* observer );
208 
210  virtual void removeObserver( const std::string& name );
211 
213  virtual std::vector<DtObserver*> observers() const;
214 
216 
217  virtual DtObserver* findObserverByName( const std::string& name );
218  virtual const DtObserver* findObserverByName( const std::string& name ) const;
220 
222  void setCurrentObserver( const std::string& observerName );
223 
225  DtObserver* currentObserver() const;
226 
228  void setTerrainContextEnabled(bool enabled);
229  bool terrainContextEnabled() const;
230 
232 
234  virtual void performObserverAction(DtViewStateProcessor::ObserverAction& action);
235 
237  virtual void toggleTerrainScaling();
238 
240  virtual void incrementTerrainScaleFactor();
241 
243  virtual void decrementTerrainScaleFactor();
244 
246  virtual void toggleEntityLabels();
247 
249  virtual void toggleRotateEntitySymbols();
250 
252  virtual void toggleTacticalGraphics();
253 
255  virtual void toggleEntityHatLines();
256 
258  virtual void toggleTacticalGraphicsHatLines();
260  virtual void toggleEntityHatMode();
261 
263  virtual void toggleTacticalGraphicsHatMode();
264 
266  virtual void togglePropTransparencySelected();
267 
270  virtual void toggleViewControl();
271 
273  void resetObservers(DtUniqueID id);
274 
277  void setAllowObserverReset(bool allow);
278 
280  void saveObservers(const std::string& filename);
281 
285  void loadObservers(const std::string& filename, bool force=false);
286 
287  DtElementEntry::ObjectType typeFromId(const DtUniqueID& id);
288 
292  virtual void animateObserver(DtObserverAnimator* newAnimator);
293 
295  virtual void removeAnimatorFromObserver( DtObserver *observer);
296 
297  protected:
298 
299  void setCurrentObserver( DtObserver* observer );
300 
302  virtual void initializeKeyMapManager( const std::string& defaultKeyMap );
303  virtual void bindFunctions();
305  virtual void createMaps();
306 
309  virtual void loadMaps(bool loadFromFactory = false);
310 
312  typedef std::map<std::string, DtObserver*> ObserversMap;
313 
314  void removeObserver( ObserversMap& observers, DtObserver* observer );
315  void removeObserver(ObserversMap& observers, const std::string& name );
316 
317  void destroyObservers();
318 
319  bool setCurrentObserverFromChannel(const DtChannel& channel );
320 
321  void slot_channelCreated( DtChannelManager* channelManager, DtChannel* channel);
322  void slot_channelDestroyed( DtChannelManager* channelManager, DtChannel* channel);
323  void slot_channelConfigurationModified(const std::string& deName,
324  const std::string& winName, const std::string& oldChannelName,
325  const DtChannelConfiguration& config);
326  void slot_attachedToChanged( DtObserver* observer );
327 
328 
329  void createRequiredObservers( const std::string& engineName );
330 
332  virtual void slot_displayEngineAdded(const DtDeRecord& igRecord);
333 
337  std::string restoreObserversPart1();
338 
340  void restoreObserversPart2( const std::string& filename );
341 
342  virtual void slot_displayEngineRealized( const std::string&,
343  const std::string& engineName );
344 
345  private:
347  DtInputDriver( const DtInputDriver& );
348 
350  DtInputDriver& operator=( const DtInputDriver& );
351 
352  protected:
354 
356 
359 
362 
363  std::string myClassName;
365 
368 
371 
374 
376 
378 
380  std::list<DtObserverAnimator*> myAnimatingObservers;
381  };
382 
386  {
387  public:
388 
391 
393  virtual ~DtInputDriverCreator();
394 
396  static DtInputDriverCreator& instance(DtDe& de);
397 
401  static void registerInstance(DtDe& de, DtInputDriverCreator* creator);
402 
404  virtual DtInputDriver* create(DtAgentManager& sm);
405 
406  };
407 
408 }

Document ID: Generated on Wed Jul 29 00:55:00 EDT 2015 from SVN revision 155257
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)