[Orxonox-commit 7716] r12309 - in code/branches/MouseAPI_FS19: data/levels src/modules/MouseAPI

tkuonen at orxonox.net tkuonen at orxonox.net
Thu Apr 18 16:02:06 CEST 2019


Author: tkuonen
Date: 2019-04-18 16:02:06 +0200 (Thu, 18 Apr 2019)
New Revision: 12309

Removed:
   code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousecursor.cc
   code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousecursor.h
Modified:
   code/branches/MouseAPI_FS19/data/levels/MouseAPIExample.oxw
   code/branches/MouseAPI_FS19/src/modules/MouseAPI/CMakeLists.txt
   code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc
   code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.h
   code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousegametype.cc
   code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousegametype.h
Log:
Add first version of mousecursor


Modified: code/branches/MouseAPI_FS19/data/levels/MouseAPIExample.oxw
===================================================================
--- code/branches/MouseAPI_FS19/data/levels/MouseAPIExample.oxw	2019-04-18 13:44:09 UTC (rev 12308)
+++ code/branches/MouseAPI_FS19/data/levels/MouseAPIExample.oxw	2019-04-18 14:02:06 UTC (rev 12309)
@@ -41,7 +41,13 @@
 	<Model position="0,0,0" mesh="sphere.mesh" scale=10 /> 
     </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>
 

Modified: code/branches/MouseAPI_FS19/src/modules/MouseAPI/CMakeLists.txt
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/CMakeLists.txt	2019-04-18 13:44:09 UTC (rev 12308)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/CMakeLists.txt	2019-04-18 14:02:06 UTC (rev 12309)
@@ -2,7 +2,6 @@
   mouseapi.cc
   mouseapiexample.cc
   mousegametype.cc
-  mousecursor.cc
 )
 
 

Modified: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc	2019-04-18 13:44:09 UTC (rev 12308)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc	2019-04-18 14:02:06 UTC (rev 12309)
@@ -20,8 +20,14 @@
             state = InputManager::getInstance().createInputState("MouseAPI",true,true,99);
             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
     }
 
 }
@@ -30,6 +36,7 @@
 {
     if(active)
     {
+        GUIManager::getInstance().showGUI("MouseAPICursor", true);
         active = false;
         if(InputManager::exists())
         {
@@ -36,6 +43,7 @@
             InputManager::getInstance().leaveState("MouseAPI");
             state->setMouseHandler(nullptr);
             InputManager::getInstance().destroyState("MouseAPI");
+            InputManager::getInstance().enterState("game");
         }
         clickEvents.clear();
         scrollEvents.clear();
@@ -58,7 +66,8 @@
     {
         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);
         }
     }
@@ -67,6 +76,8 @@
 void MouseAPI::mouseMoved(IntVector2 abs, IntVector2 rel, IntVector2 clippingSize)
 {
     //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
 }
 
 void MouseAPI::mouseScrolled(int abs, int rel)
@@ -78,7 +89,7 @@
     Ogre::Ray ray = cam->getCameraToViewportRay(mouseposX/((float)vp->getActualWidth()),mouseposY/((float)vp->getActualHeight()));
     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));
     }
 }
@@ -182,6 +193,7 @@
              return eventIt->radius;
          }
      }
+     return 0;
 }
 
 float MouseAPI::getRadiusScroll(ScrollableElementID id)
@@ -193,6 +205,14 @@
              return eventIt->radius;
          }
      }
+     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()));
 }
+
+}

Modified: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.h
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.h	2019-04-18 13:44:09 UTC (rev 12308)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.h	2019-04-18 14:02:06 UTC (rev 12309)
@@ -15,6 +15,8 @@
 #include <OgreViewport.h>
 #include "CameraManager.h"
 #include <functional>
+#include "core/GUIManager.h"
+#include "core/input/KeyBinderManager.h"
 
 namespace orxonox
 {
@@ -86,6 +88,8 @@
     float getRadiusClick(ClickableObjectID id);
     float getRadiusScroll(ScrollableElementID id);
 
+    Vector2 getMousePosition();
+
     void activate();
     static bool isActive(){return singletonPtr_s != nullptr && getInstance().active;}
     void deactivate();

Deleted: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousecursor.cc
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousecursor.cc	2019-04-18 13:44:09 UTC (rev 12308)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousecursor.cc	2019-04-18 14:02:06 UTC (rev 12309)
@@ -1,11 +0,0 @@
-#include "mousecursor.h"
-#include "core/CoreIncludes.h"
-
-namespace orxonox
-{
-RegisterClass(MouseCursor);
-MouseCursor::MouseCursor(Context* context) : MovableEntity(context)
-{
-    RegisterObject(MouseCursor);
-}
-}

Deleted: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousecursor.h
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousecursor.h	2019-04-18 13:44:09 UTC (rev 12308)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousecursor.h	2019-04-18 14:02:06 UTC (rev 12309)
@@ -1,16 +0,0 @@
-#ifndef MOUSECURSOR_H
-#define MOUSECURSOR_H
-#include "worldentities/MovableEntity.h"
-
-namespace orxonox
-{
-
-class MouseCursor:public MovableEntity
-{
-public:
-    MouseCursor(Context* context);
-};
-
-}
-
-#endif // MOUSECURSOR_H

Modified: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousegametype.cc
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousegametype.cc	2019-04-18 13:44:09 UTC (rev 12308)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousegametype.cc	2019-04-18 14:02:06 UTC (rev 12309)
@@ -8,6 +8,7 @@
     player_ =nullptr;
 
 }
+
 void MouseGametype::start(){
 
     bool temp = this->bForceSpawn_;
@@ -18,8 +19,6 @@
 
     // Reset the variable.
     this->bForceSpawn_ = temp;
-
-    InputManager::getInstance().setMouseExclusive("game",false);//set show mouse, see guimanager
 }
 
 void MouseGametype::spawnPlayersIfRequested()

Modified: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousegametype.h
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousegametype.h	2019-04-18 13:44:09 UTC (rev 12308)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/mousegametype.h	2019-04-18 14:02:06 UTC (rev 12309)
@@ -4,7 +4,7 @@
 #include "core/CoreIncludes.h"
 #include "infos/PlayerInfo.h"
 #include <core/input/InputState.h>
-#include <CEGUI/MouseCursor.h> //todo: guimanager: fallunterscheidng cegui version
+#include "core/GUIManager.h"
 
 namespace orxonox
 {
@@ -18,6 +18,7 @@
     virtual void spawnPlayersIfRequested()override;
 private:
     PlayerInfo* player_ ;
+    CEGUI::MouseCursor *cursor;
 };
 
 }



More information about the Orxonox-commit mailing list