Index: /code/branches/MouseAPI_FS19/src/modules/CMakeLists.txt
===================================================================
--- /code/branches/MouseAPI_FS19/src/modules/CMakeLists.txt	(revision 12212)
+++ /code/branches/MouseAPI_FS19/src/modules/CMakeLists.txt	(revision 12213)
@@ -53,2 +53,3 @@
 ADD_SUBDIRECTORY(orxokart)
 ADD_SUBDIRECTORY(wagnis)
+ADD_SUBDIRECTORY(MouseAPI)
Index: /code/branches/MouseAPI_FS19/src/modules/MouseAPI/CMakeLists.txt
===================================================================
--- /code/branches/MouseAPI_FS19/src/modules/MouseAPI/CMakeLists.txt	(revision 12213)
+++ /code/branches/MouseAPI_FS19/src/modules/MouseAPI/CMakeLists.txt	(revision 12213)
@@ -0,0 +1,13 @@
+SET_SOURCE_FILES(MOUSEAPI_SRC_FILES
+  mouseapi.cc
+)
+
+
+ORXONOX_ADD_LIBRARY(mouseapi
+  MODULE
+  FIND_HEADER_FILES
+  PCH_FILE
+  LINK_LIBRARIES
+    orxonox
+  SOURCE_FILES ${MOUSEAPI_SRC_FILES}
+)
Index: /code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc
===================================================================
--- /code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc	(revision 12213)
+++ /code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc	(revision 12213)
@@ -0,0 +1,25 @@
+#include "mouseapi.h"
+
+MouseAPI::MouseAPI()
+{
+
+}
+
+MouseAPI::~MouseAPI(){}
+
+virtual void MouseAPI::buttonPressed (MouseButtonCode::ByEnum button){}
+virtual void MouseAPI::mouseMoved    (IntVector2 abs, IntVector2 rel, IntVector2 clippingSize){}
+virtual void MouseAPI::mouseScrolled (int abs, int rel){}
+
+void addClickableObject(const Vector3& position,float radius,const list<ClickEvent>& events,void (*onClickedFunction)())
+{
+    clickEvents.insert({position,radius,events,onClickedFunction});
+}
+void addScrollElement(const Vector3& position,float radius,void (*onScrolledFunction)(int abs,int rel,const IntVector2&  mousePos))
+{
+    scrollEvents.insert(position,radius,onScrolledFunction);
+}
+void addScrollElement(void (*onScrolledFunction)(int abs,int rel,const IntVector2&  mousePos))
+{
+    scrollEvents.insert(onScrolledFunction);
+}
Index: /code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.h
===================================================================
--- /code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.h	(revision 12213)
+++ /code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.h	(revision 12213)
@@ -0,0 +1,62 @@
+#ifndef MOUSEAPI_H
+#define MOUSEAPI_H
+
+#include <util/Math.h>
+#include <list>
+#include <core/input/InputHandler.h>
+
+namespace orxonox
+{
+
+class MouseAPI : public InputHandler
+{
+
+private:
+
+    struct clickableElement
+    {
+        Vector3 position;
+        float radius;
+        list<ClickEvent> events;
+        void (*onClickedFunction)();
+        clickableElement(const Vector3& position,float radius,const list<ClickEvent>& events,void (*onClickedFunction)()):position(position),
+            radius(radius), events(events), onClickedFunction(onClickedFunction){}
+    };
+
+    struct scrollElement
+    {
+        bool considerPosition;
+        Vector3 position;
+        float radius;
+        void (*onScrolledFunction)(int abs,int rel,const IntVector2& mousePos);
+        scrollEvents(void (*onScrolledFunction)(int abs,int rel,const IntVector2& mousePos)):considerPosition(false),
+            onScrolledFunction(onScrolledFunction){}
+        scrollEvents(Vector3& position, float radius, void (*onScrolledFunction)(int abs,int rel,const IntVector2& mousePos)):considerPosition(true),
+            position(position), radius(radius), onScrolledFunction(onScrolledFunction){}
+    };
+
+
+    std::list<clickableElement> clickEvents;
+    std::list<scrollElement> scrollEvents;
+
+
+public:
+    enum ClickEvent
+    {
+        rightClick,leftClick,middleCLick
+    };
+
+    MouseAPI();
+    ~MouseAPI();
+    virtual void buttonPressed (MouseButtonCode::ByEnum button);
+    virtual void buttonReleased(MouseButtonCode::ByEnum button){}
+    virtual void buttonHeld    (MouseButtonCode::ByEnum button){}
+    virtual void mouseMoved    (IntVector2 abs, IntVector2 rel, IntVector2 clippingSize);
+    virtual void mouseScrolled (int abs, int rel);
+
+    void addClickableObject(const Vector3& position,float radius,const list<ClickEvent>& events,void (*onClickedFunction)());
+    void addScrollElement(const Vector3& position,float radius,void (*onScrolledFunction)(int abs,int rel,const IntVector2&  mousePos));
+    void addScrollElement(void (*onScrolledFunction)(int abs,int rel,const IntVector2&  mousePos));
+};
+}
+#endif // MOUSEAPI_H
