VR-Forces 4.1.1 Class Documentation
DtInputDriver.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2013 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 
46  {
47  public:
50  typedef std::list<DtEventProcessorInterface*> EventProcessorList;
51 
53  typedef std::map<std::string, makArchives::DtObserverStateRecord> ObserverStateMap;
54 
56  typedef std::map<std::string, DtObserverConfiguration> ObserverConfigurationMap;
57 
59  DtInputDriver( DtAgentManager& agentManager,
60  const std::string& instanceName );
61 
63  virtual ~DtInputDriver();
64 
66  virtual bool onStart();
67 
69  virtual bool onStop();
70 
72  virtual bool onTick();
73 
75  virtual const std::string& className() const;
76 
78  virtual bool processKeyEvent( const DtKeyEvent& keyEvent,
79  DtChannel* channel );
80 
82  virtual bool processMouseEvent( const DtMouseEvent& mouseEvent,
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 
268  void resetObservers(DtUniqueID id);
269 
272  void setAllowObserverReset(bool allow);
273 
275  void saveObservers(const std::string& filename);
276 
278  void loadObservers(const std::string& filename);
279 
280  DtElementEntry::ObjectType typeFromId(const DtUniqueID& id);
281 
282  protected:
283 
284  void setCurrentObserver( DtObserver* observer );
285 
287  virtual void initializeKeyMapManager( const std::string& defaultKeyMap );
288  virtual void bindFunctions();
290  virtual void createMaps();
291 
294  virtual void loadMaps(bool loadFromFactory = false);
295 
297  typedef std::map<std::string, DtObserver*> ObserversMap;
298 
299  void removeObserver( ObserversMap& observers, DtObserver* observer );
300  void removeObserver(ObserversMap& observers, const std::string& name );
301 
302  void destroyObservers();
303 
304  bool setCurrentObserverFromChannel(const DtChannel& channel );
305 
306  void slot_channelCreated( DtChannelManager* channelManager, DtChannel* channel);
307  void slot_channelDestroyed( DtChannelManager* channelManager, DtChannel* channel);
308  void slot_channelConfigurationModified(const std::string& deName,
309  const std::string& winName, const std::string& oldChannelName,
310  const DtChannelConfiguration& config);
311  void slot_attachedToChanged( DtObserver* observer );
312 
313 
314  void createRequiredObservers( const std::string& engineName );
315 
317  virtual void slot_displayEngineAdded(const DtDeRecord& igRecord);
318 
322  std::string restoreObserversPart1();
323 
325  void restoreObserversPart2( const std::string& filename );
326 
327  virtual void slot_displayEngineRealized( const std::string&,
328  const std::string& engineName );
329 
330  private:
332  DtInputDriver( const DtInputDriver& );
333 
335  DtInputDriver& operator=( const DtInputDriver& );
336 
337  protected:
339 
341 
344 
347 
348  std::string myClassName;
350 
353 
356 
359 
361 
363 
365  };
366 
370  {
371  public:
372 
375 
377  virtual ~DtInputDriverCreator();
378 
380  static DtInputDriverCreator& instance(DtDe& de);
381 
385  static void registerInstance(DtDe& de, DtInputDriverCreator* creator);
386 
388  virtual DtInputDriver* create(DtAgentManager& sm);
389 
390  };
391 
392 }

Document ID: Generated on Mon Apr 8 19:24:01 EDT 2013 from SVN revision 125877
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)