Index: code/branches/MouseAPI_FS19/data/levels/MouseAPIExample.oxw
===================================================================
--- code/branches/MouseAPI_FS19/data/levels/MouseAPIExample.oxw	(revision 12306)
+++ code/branches/MouseAPI_FS19/data/levels/MouseAPIExample.oxw	(revision 12309)
@@ -42,5 +42,11 @@
     </attached> 
 </MouseAPIExample>
- 
+<!--<MouseCursor></MouseCursor>-->
+
+<OverlayGroup name = "cursor" scale = "1, 1">
+<GUIOverlay guiname="MouseAPICursor" visible=true position  = "1, 1"
+     pickpoint = "0.0, 0.0"></GUIOverlay>
+</OverlayGroup>
+
   </Scene>
 </Level>
Index: code/branches/MouseAPI_FS19/src/modules/MouseAPI/CMakeLists.txt
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/CMakeLists.txt	(revision 12306)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/CMakeLists.txt	(revision 12309)
@@ -3,5 +3,4 @@
   mouseapiexample.cc
   mousegametype.cc
-  mousecursor.cc
 )
 
Index: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc	(revision 12306)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc	(revision 12309)
@@ -21,6 +21,12 @@
             state->setMouseExclusive(false);//does this work
             state->setMouseHandler(this);
+            state->setKeyHandler(KeyBinderManager::getInstance().getDefaultAsHandler());
+            InputManager::getInstance().enterState("guiMouseOnly");
             InputManager::getInstance().enterState("MouseAPI");
-        }
+            InputManager::getInstance().setMouseExclusive("game",false);
+            //InputManager::getInstance().setMouseExclusive("guiMouseOnly",false);
+            //InputManager::getInstance().getState("game")->
+        }
+        //GUIManager::getInstance().showGUI("MouseAPICursor", true);//Display a mouse cursor by displaying a empty menu
     }
 
@@ -31,4 +37,5 @@
     if(active)
     {
+        GUIManager::getInstance().showGUI("MouseAPICursor", true);
         active = false;
         if(InputManager::exists())
@@ -37,4 +44,5 @@
             state->setMouseHandler(nullptr);
             InputManager::getInstance().destroyState("MouseAPI");
+            InputManager::getInstance().enterState("game");
         }
         clickEvents.clear();
@@ -59,5 +67,6 @@
         for(auto wantedButton:event.buttons)
         {
-            if(wantedButton == button && ray.intersects(Ogre::Sphere(event.position,event.radius)).first)
+            Ogre::Sphere sphere(event.position,event.radius);
+            if(wantedButton == button && ray.intersects(sphere).first && cam->isVisible(sphere))
                 event.onClickedFunction(button);
         }
@@ -68,4 +77,6 @@
 {
     //mousePos = abs;
+    InputManager::getInstance().leaveState("game");//hack: todo: crate 2nd input state with prioritz 98 for cegui(cursor)
+    GUIManager::getInstance().showGUI("MouseAPICursor", true);//hack todo: only if gui not shown & evt better if not in mouse mooved
 }
 
@@ -79,5 +90,5 @@
     for(auto event:scrollEvents)
     {
-        if(!event.considerPosition || ray.intersects(Ogre::Sphere(event.position,event.radius)).first)
+        if(!event.considerPosition || (ray.intersects(Ogre::Sphere(event.position,event.radius)).first && cam->isVisible(Ogre::Sphere(event.position,event.radius))))
             event.onScrolledFunction(abs,rel,IntVector2(mouseposX,mouseposY));
     }
@@ -183,4 +194,5 @@
          }
      }
+     return 0;
 }
 
@@ -194,5 +206,13 @@
          }
      }
-}
-
-}
+     return 0;
+}
+
+//returns relative Position of the Mouse
+Vector2 MouseAPI::getMousePosition()
+{
+    Ogre::Viewport *vp = GraphicsManager::getInstance().getViewport();
+    return Vector2(InputManager::getInstance().getMousePosition().first/((float)vp->getActualWidth()),InputManager::getInstance().getMousePosition().second/((float)vp->getActualHeight()));
+}
+
+}
Index: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.h
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.h	(revision 12306)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.h	(revision 12309)
@@ -16,4 +16,6 @@
 #include "CameraManager.h"
 #include <functional>
+#include "core/GUIManager.h"
+#include "core/input/KeyBinderManager.h"
 
 namespace orxonox
@@ -87,4 +89,6 @@
     float getRadiusScroll(ScrollableElementID id);
 
+    Vector2 getMousePosition();
+
     void activate();
     static bool isActive(){return singletonPtr_s != nullptr && getInstance().active;}
Index: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousecursor.cc
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousecursor.cc	(revision 12306)
+++ 	(revision )
@@ -1,11 +1,0 @@
-#include "mousecursor.h"
-#include "core/CoreIncludes.h"
-
-namespace orxonox
-{
-RegisterClass(MouseCursor);
-MouseCursor::MouseCursor(Context* context) : MovableEntity(context)
-{
-    RegisterObject(MouseCursor);
-}
-}
Index: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousecursor.h
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousecursor.h	(revision 12306)
+++ 	(revision )
@@ -1,16 +1,0 @@
-#ifndef MOUSECURSOR_H
-#define MOUSECURSOR_H
-#include "worldentities/MovableEntity.h"
-
-namespace orxonox
-{
-
-class MouseCursor:public MovableEntity
-{
-public:
-    MouseCursor(Context* context);
-};
-
-}
-
-#endif // MOUSECURSOR_H
Index: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousegametype.cc
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousegametype.cc	(revision 12306)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousegametype.cc	(revision 12309)
@@ -9,4 +9,5 @@
 
 }
+
 void MouseGametype::start(){
 
@@ -19,6 +20,4 @@
     // Reset the variable.
     this->bForceSpawn_ = temp;
-
-    InputManager::getInstance().setMouseExclusive("game",false);//set show mouse, see guimanager
 }
 
Index: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousegametype.h
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousegametype.h	(revision 12306)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousegametype.h	(revision 12309)
@@ -5,5 +5,5 @@
 #include "infos/PlayerInfo.h"
 #include <core/input/InputState.h>
-#include <CEGUI/MouseCursor.h> //todo: guimanager: fallunterscheidng cegui version
+#include "core/GUIManager.h"
 
 namespace orxonox
@@ -19,4 +19,5 @@
 private:
     PlayerInfo* player_ ;
+    CEGUI::MouseCursor *cursor;
 };
 
