Index: code/branches/merge/src/core/InputManager.h
===================================================================
--- code/branches/merge/src/core/InputManager.h	(revision 1262)
+++ code/branches/merge/src/core/InputManager.h	(revision 1272)
@@ -39,20 +39,17 @@
 
 #include <map>
-#include <list>
+#include <vector>
 
 #include "ois/OIS.h"
 #include "Tickable.h"
+#include "InputInterfaces.h"
 
 namespace orxonox
 {
-  class Mouse : public OIS::Mouse
-  {
-  };
-
   /**
     @brief Captures and distributes mouse and keyboard input.
   */
   class _CoreExport InputManager
-        : public Tickable,
+        : public TickableReal,
           public OIS::KeyListener, public OIS::MouseListener, public OIS::JoyStickListener
   {
@@ -72,6 +69,6 @@
 
   public: // static functions
-    static bool initialise(const size_t windowHnd, const int windowWidth, const int windowHeight,
-          const bool createKeyboard = true, const bool createMouse = true, const bool createJoySticks = false);
+    static bool initialise(const size_t windowHnd, int windowWidth, int windowHeight,
+          bool createKeyboard = true, bool createMouse = true, bool createJoySticks = false);
     static bool initialiseKeyboard();
     static bool initialiseMouse();
@@ -85,4 +82,9 @@
     static void destroyMouse();
     static void destroyJoySticks();
+
+    static bool isModifierDown(KeyboardModifier::Enum modifier);
+    static bool isKeyDown(KeyCode::Enum key);
+    static const MouseState getMouseState();
+    static const JoyStickState getJoyStickState(unsigned int ID);
 
     static void setWindowExtents(const int width, const int height);
@@ -108,11 +110,7 @@
     static bool removeJoyStickHandler         (const std::string& name);
     static JoyStickHandler* getJoyStickHandler(const std::string& name);
-    static bool enableJoyStickHandler         (const std::string& name, const int id);
-    static bool disableJoyStickHandler        (const std::string& name, const int id);
-    static bool isJoyStickHandlerActive       (const std::string& name, const int id);
-
-    // Temporary solutions. Will be removed soon!
-    static OIS::Mouse*    getMouse()    { return _getSingleton().mouse_   ; }
-    static OIS::Keyboard* getKeyboard() { return _getSingleton().keyboard_; }
+    static bool enableJoyStickHandler         (const std::string& name, unsigned int id);
+    static bool disableJoyStickHandler        (const std::string& name, unsigned int id);
+    static bool isJoyStickHandlerActive       (const std::string& name, unsigned int id);
 
   private: // functions
@@ -123,5 +121,5 @@
 
     // Intenal methods
-    bool _initialise(const size_t, const int, const int, const bool, const bool, const bool);
+    bool _initialise(const size_t, int, int, bool, bool, bool);
     bool _initialiseKeyboard();
     bool _initialiseMouse();
@@ -133,20 +131,18 @@
     void _destroyJoySticks();
 
-    //void _setNumberOfJoysticks(int size);
-
     void tick(float dt);
 
     // input events
-		bool mousePressed  (const OIS::MouseEvent    &arg, OIS::MouseButtonID id);
-		bool mouseReleased (const OIS::MouseEvent    &arg, OIS::MouseButtonID id);
+    bool mousePressed  (const OIS::MouseEvent    &arg, OIS::MouseButtonID id);
+    bool mouseReleased (const OIS::MouseEvent    &arg, OIS::MouseButtonID id);
     bool mouseMoved    (const OIS::MouseEvent    &arg);
-		bool keyPressed    (const OIS::KeyEvent      &arg);
-		bool keyReleased   (const OIS::KeyEvent      &arg);
-		bool buttonPressed (const OIS::JoyStickEvent &arg, int button);
-		bool buttonReleased(const OIS::JoyStickEvent &arg, int button);
-		bool axisMoved     (const OIS::JoyStickEvent &arg, int axis);
-		bool sliderMoved   (const OIS::JoyStickEvent &arg, int id);
-		bool povMoved      (const OIS::JoyStickEvent &arg, int id);
-		bool vector3Moved  (const OIS::JoyStickEvent &arg, int id);
+    bool keyPressed    (const OIS::KeyEvent      &arg);
+    bool keyReleased   (const OIS::KeyEvent      &arg);
+    bool buttonPressed (const OIS::JoyStickEvent &arg, int button);
+    bool buttonReleased(const OIS::JoyStickEvent &arg, int button);
+    bool axisMoved     (const OIS::JoyStickEvent &arg, int axis);
+    bool sliderMoved   (const OIS::JoyStickEvent &arg, int id);
+    bool povMoved      (const OIS::JoyStickEvent &arg, int id);
+    bool vector3Moved  (const OIS::JoyStickEvent &arg, int id);
 
     static InputManager& _getSingleton();
@@ -158,7 +154,9 @@
     OIS::Mouse*                                 mouse_;       //!< OIS keyboard
     std::vector<OIS::JoyStick*>                 joySticks_;   //!< OIS joy sticks
+    unsigned int                                joySticksSize_;
 
     InputState state_;
     InputState stateRequest_;
+    unsigned int keyboardModifiers_;
 
     std::map<std::string, KeyHandler*>          keyHandlers_;
@@ -168,11 +166,12 @@
     std::vector<KeyHandler*>                    activeKeyHandlers_;
     std::vector<MouseHandler*>                  activeMouseHandlers_;
-    std::map< OIS::JoyStick*, std::vector<JoyStickHandler*> > activeJoyStickHandlers_;
+    std::vector<std::vector<JoyStickHandler*> > activeJoyStickHandlers_;
 
-    std::list<OIS::KeyCode>                     keysDown_;
-    std::list<OIS::MouseButtonID>               mouseButtonsDown_;
-    std::map< OIS::JoyStick*, std::list<int> >  joyStickButtonsDown_;
+    std::vector<Key>                            keysDown_;
+    std::vector<MouseButton::Enum>              mouseButtonsDown_;
+    std::vector<std::vector<int> >              joyStickButtonsDown_;
 
   };
+
 }
 
