[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