[Orxonox-commit 7654] r12247 - code/branches/MouseAPI_FS19/src/modules/MouseAPI
tkuonen at orxonox.net
tkuonen at orxonox.net
Thu Mar 28 13:33:50 CET 2019
Author: tkuonen
Date: 2019-03-28 13:33:50 +0100 (Thu, 28 Mar 2019)
New Revision: 12247
Modified:
code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc
code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.h
Log:
Comlete initial version of MouseAPI
remove compile errors
Modified: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc 2019-03-28 12:28:15 UTC (rev 12246)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc 2019-03-28 12:33:50 UTC (rev 12247)
@@ -1,5 +1,7 @@
#include "mouseapi.h"
+namespace orxonox{
+
MouseAPI::MouseAPI(Camera& camera)
{
cam = camera.getOgreCamera();
@@ -11,48 +13,50 @@
}
MouseAPI::~MouseAPI(){
- //todo look at gslevel destructor and implement this one
+ InputManager::getInstance().leaveState("MouseAPI");
+ state->setMouseHandler(nullptr);
+ InputManager::getInstance().destroyState("MouseAPI");
}
-virtual void MouseAPI::buttonPressed (MouseButtonCode::ByEnum button)
+void MouseAPI::buttonPressed(MouseButtonCode::ByEnum button)
{
- Ogre::Viewport vp = GraphicsManager::getInstance().getViewport();
- Ogre::Ray ray = getCameraToViewPortRay(mousePos.x/((float)vp.getActualWidth()),mousePos.y/((float)vp.getActualHeight()));
+ Ogre::Viewport *vp = GraphicsManager::getInstance().getViewport();
+ Ogre::Ray ray = cam->getCameraToViewportRay(mousePos.x/((float)vp->getActualWidth()),mousePos.y/((float)vp->getActualHeight()));
for(auto event: clickEvents)
{
- for(auto wantedButton:buttons){
- if(wantedButton == button && ray.intersects(Ogre::Sphere(event.position,radius)))
- (&(event.onClickedFunction))(button);
+ for(auto wantedButton:event.buttons){
+ if(wantedButton == button && ray.intersects(Ogre::Sphere(event.position,event.radius)).first)
+ (*(event.onClickedFunction))(button);
}
}
}
-virtual void MouseAPI::mouseMoved (IntVector2 abs, IntVector2 rel, IntVector2 clippingSize)
+void MouseAPI::mouseMoved(IntVector2 abs, IntVector2 rel, IntVector2 clippingSize)
{
mousePos = abs;
}
-virtual void MouseAPI::mouseScrolled (int abs, int rel)
+void MouseAPI::mouseScrolled(int abs, int rel)
{
- Ogre::Viewport vp = GraphicsManager::getInstance().getViewport();
- Ogre::Ray ray = getCameraToViewPortRay(mousePos.x/((float)vp.getActualWidth()),mousePos.y/((float)vp.getActualHeight()));
+ Ogre::Viewport *vp = GraphicsManager::getInstance().getViewport();
+ Ogre::Ray ray = cam->getCameraToViewportRay(mousePos.x/((float)vp->getActualWidth()),mousePos.y/((float)vp->getActualHeight()));
for(auto event:scrollEvents){
- if(!event.considerPosition || ray.intersects(Ogre::Sphere(event.position,radius)))
+ if(!event.considerPosition || ray.intersects(Ogre::Sphere(event.position,event.radius)).first)
(*(event.onScrolledFunction))(abs,rel,mousePos);
}
}
-void MouseAPI::addClickableObject(const Vector3& position,float radius,const list<MouseButtonCode::ByEnum>& buttons,void (*onClickedFunction)(MouseButtonCode::ByEnum button))
+void MouseAPI::addClickableObject(const Vector3& position,float radius,const std::list<MouseButtonCode::ByEnum>& buttons,void (*onClickedFunction)(MouseButtonCode::ByEnum button))
{
- clickEvents.insert({position,radius,buttons,onClickedFunction});
+ clickEvents.insert(clickEvents.begin(),{position,radius,buttons,onClickedFunction});
}
void MouseAPI::addScrollElement(const Vector3& position,float radius,void (*onScrolledFunction)(int abs,int rel,const IntVector2& mousePos))
{
- scrollEvents.insert(position,radius,onScrolledFunction);
+ scrollEvents.insert(scrollEvents.begin(),{position,radius,onScrolledFunction});
}
void MouseAPI::addScrollElement(void (*onScrolledFunction)(int abs,int rel,const IntVector2& mousePos))
{
- scrollEvents.insert(onScrolledFunction);
+ scrollEvents.insert(scrollEvents.begin(),{onScrolledFunction});
}
void MouseAPI::changeCamera(Camera& camera)
@@ -59,3 +63,5 @@
{
cam = camera.getOgreCamera();
}
+
+}
Modified: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.h
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.h 2019-03-28 12:28:15 UTC (rev 12246)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.h 2019-03-28 12:33:50 UTC (rev 12247)
@@ -1,6 +1,10 @@
#ifndef MOUSEAPI_H
#define MOUSEAPI_H
+
+#include "OrxonoxPrereqs.h"
+#include "util/OgreForwardRefs.h"
+#include "graphics/Camera.h"
#include <util/Math.h>
#include <list>
#include <core/input/InputHandler.h>
@@ -7,6 +11,8 @@
#include <graphics/Camera.h>
#include <core/GraphicsManager.h>
#include <core/input/InputState.h>
+#include <OgreCamera.h>
+#include <OgreViewport.h>
namespace orxonox
{
@@ -20,9 +26,9 @@
{
Vector3 position;
float radius;
- list<MouseButtonCode::ByEnum> buttons;
+ std::list<MouseButtonCode::ByEnum> buttons;
void (*onClickedFunction)(MouseButtonCode::ByEnum button);
- clickableElement(const Vector3& position,float radius,const list<MouseButtonCode::ByEnum>& buttons,void (*onClickedFunction)()):position(position),
+ clickableElement(const Vector3& position,float radius,const std::list<MouseButtonCode::ByEnum>& buttons,void (*onClickedFunction)(MouseButtonCode::ByEnum button)):position(position),
radius(radius), buttons(buttons), onClickedFunction(onClickedFunction){}
};
@@ -32,9 +38,9 @@
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),
+ scrollElement(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),
+ scrollElement(const Vector3& position, float radius, void (*onScrolledFunction)(int abs,int rel,const IntVector2& mousePos)):considerPosition(true),
position(position), radius(radius), onScrolledFunction(onScrolledFunction){}
};
@@ -41,7 +47,7 @@
std::list<clickableElement> clickEvents;
std::list<scrollElement> scrollEvents;
- Ogre::Camera cam;
+ Ogre::Camera *cam ;
IntVector2 mousePos;
InputState* state;
@@ -56,7 +62,7 @@
virtual void mouseMoved (IntVector2 abs, IntVector2 rel, IntVector2 clippingSize) override;
virtual void mouseScrolled (int abs, int rel) override;
- void addClickableObject(const Vector3& position,float radius,const list<MouseButtonCode::ByEnum>& buttons,void (*onClickedFunction)(MouseButtonCode::ByEnum button));
+ void addClickableObject(const Vector3& position,float radius,const std::list<MouseButtonCode::ByEnum>& buttons,void (*onClickedFunction)(MouseButtonCode::ByEnum button));
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));
More information about the Orxonox-commit
mailing list