VR-Vantage API Documentation
DtInputDriver.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2010 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 /******************************************************************************
6 ** $RCSfile: DtInputDriver.h,v $ $Revision: 1.80 $ $State: Exp $
7 ******************************************************************************/
8 
12 
13 #pragma once
14 #include <vrvCore/vrvCore.h>
16 #include <vrvCore/DtElementEntry.h>
17 #include <vrvCore/DtDriver.h>
20 #include <vrvCore/DtKeyEvent.h>
22 #include <boost/signal.hpp>
23 
24 #include <string>
25 #include <map>
26 #include <vector>
27 #include <list>
28 
29 namespace makVrv
30 {
31  class DtAgentManager;
32  class DtChannel;
33  class DtChannelManager;
34  class DtDe;
35  class DtEventProcessorInterface;
36  class DtInputDriverConfiguration;
37  class DtKeyAndMouseEventListener;
38  class DtKeyMap;
39  class DtKeyMapManager;
40  class DtMouseEvent;
41  class DtObserver;
42  class DtObserverController;
43  class DtChannelConfiguration;
44 
49  {
50  public:
53  typedef std::list<DtEventProcessorInterface*> EventProcessorList;
54 
56  typedef std::map<std::string, makArchives::DtObserverStateRecord> ObserverStateMap;
57 
59  typedef std::map<std::string, DtObserverConfiguration> ObserverConfigurationMap;
60 
62  DtInputDriver( DtAgentManager& agentManager,
63  const std::string& instanceName );
64 
66  virtual ~DtInputDriver();
67 
69  virtual bool onStart();
70 
72  virtual bool onStop();
73 
75  virtual bool onTick();
76 
78  virtual const std::string& className() const;
79 
81  virtual bool processKeyEvent( const DtKeyEvent& keyEvent,
82  DtChannel* channel );
83 
85  virtual bool processMouseEvent( const DtMouseEvent& mouseEvent,
86  DtChannel* channel );
87 
89  virtual void hideMouse( DtChannel* channel, float mouseX, float mouseY );
90 
92  virtual bool isMouseHidden() const;
93 
95  virtual void showMouse( DtChannel* channel );
96 
98  virtual void centerMouse( DtChannel* channel );
99 
101  virtual void setMousePosition(DtChannel* channel, float x, float y);
102 
105  virtual void clearState();
106 
112  DtChannel* currentChannel() const;
113 
116  virtual void addEventProcessorToFront(DtEventProcessorInterface* epi);
117 
122  virtual void addEventProcessorToBack(DtEventProcessorInterface* epi);
123 
127  virtual EventProcessorList& eventProcessorList();
128 
131  virtual DtEventProcessorInterface* findEventProcessor(
132  const std::string& className);
133 
138  virtual void removeEventProcessor(DtEventProcessorInterface* epi);
139 
141  bool saveKeyMapToFile(const DtKeyMap& keyMap, const std::string& filename) const;
142 
145  DtKeyMap* loadKeyMapFromFile(const std::string& filename, bool createBackup = false);
146 
148  //
151  void setKeyMap( const std::string& mapName );
152 
154  const std::string& keyMap() const;
155 
157  DtKeyMap* createKeyMap( const std::string& mapName );
158 
160  DtKeyMap* findKeyMap( const std::string& mapName );
161 
163  void addKeyBinding( DtKeyMap* map, DtKeyState::KeyType key,
164  std::string functionName,
166  bool replace = false,
168 
171  void addBinaryKeyBinding( DtKeyMap* map, DtKeyState::KeyType key,
172  std::string binaryName,
174  bool replace = false );
175 
177  virtual void realizeConfiguration(
178  const DtInputDriverConfiguration& configuration);
179 
180  virtual void realizeObserverConfiguration(
181  const DtObserverConfiguration& configuration);
182 
183  const ObserverConfigurationMap& observerConfigurations() const;
184 
189  void addObserverConfiguration( const DtObserverConfiguration& config );
190 
193  void addObserverState( const std::string& observerName,
194  const makArchives::DtObserverStateRecord& stateRecord );
195 
199  void initializeObserver( DtObserver* observer,
200  const makArchives::DtObserverStateRecord& stateRecord );
201 
202  //-----
204 
206  virtual void addObserver( DtObserver* observer);
207 
209  virtual void removeObserver( DtObserver* observer );
210 
212  virtual void removeObserver( const std::string& name );
213 
215  virtual std::vector<DtObserver*> observers() const;
216 
218 
219  virtual DtObserver* findObserverByName( const std::string& name );
220  virtual const DtObserver* findObserverByName( const std::string& name ) const;
222 
224  void setCurrentObserver( const std::string& observerName );
225 
227  DtObserver* currentObserver() const;
228 
230  void setTerrainContextEnabled(bool enabled);
231  bool terrainContextEnabled() const;
232 
234 
236  virtual void performObserverAction(DtViewStateProcessor::ObserverAction& action);
237 
239  virtual void toggleTerrainScaling();
240 
242  virtual void incrementTerrainScaleFactor();
243 
245  virtual void decrementTerrainScaleFactor();
246 
248  virtual void toggleEntityLabels();
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 }


Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)