Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changes between Version 4 and Version 5 of code/doc/Input


Ignore:
Timestamp:
Sep 15, 2008, 4:14:37 PM (16 years ago)
Author:
rgrieder
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • code/doc/Input

    v4 v5  
    55[[TOC]]
    66
    7 This page describes how various user input (keyboard, mouse or joy stick) is being processed.
     7This page describes how various user input (keyboard, mouse or joy stick) is being processed. Our goal was to develop a generic implementation that allows to use the input in many different and independent ways. As an example it should not matter to a program whether a mouse button or a key has been pressed. [[br]]
     8In order to capture input in the first place, we decided not to reinvent the wheel and use a cross platform library instead: [wiki: OIS]. It provides all the features we need to steear a 3D game.
    89
    9 == OIS ==
    10 [wiki: OIS] is the cross platform input library we are using. It is object oriented and supports all the features we need.
    11 
    12 == InputManager ==
    13 Captures input and distributes it to the right InputState
    14 
    15 == InputState ==
    16 
    17 
    18 == KeyBinder ==
    19 
    20 
    21 == Tools ==
    22 
    23 
    24 === KeyDetector ===
    25 
    26 
    27 === Calibrator ===
     10== Capturing and distributing the input ==
     11We get input events from the OIS library in the form a function callback realised with inheritance. The class (and object at the same time) responsible for this task is the [wiki:InputManager]. It initialises the OIS components and input devices and takes care of the so called [wiki:InputState InputStates]. These again, act like input managers themselves in a way, just a lot smaller in implementation.[[br]]
     12The general idea behind this concept is the fact that input distribution is heavily dependent on what is currently running. Simple examples are the console (only captures text), a GUI menu or the orxonox level itself.[[br]]
     13These InputStates can then hold [wiki:InputHandler Handlers] that are thought to be fixed when everything is set up. These Handlers do the actual job. For instance the [wiki:KeyBinder] gets an input event and then maps it to an executable command in the form of a string. That command is then passed to the [wiki:CommandExecutor].[[br]]
     14So much about the overall concept. Read more in the corresponding sections, mostly classes though.