[Orxonox-commit 7682] r12275 - code/branches/MouseAPI_FS19/src/modules/MouseAPI
tkuonen at orxonox.net
tkuonen at orxonox.net
Thu Apr 4 15:59:47 CEST 2019
Author: tkuonen
Date: 2019-04-04 15:59:47 +0200 (Thu, 04 Apr 2019)
New Revision: 12275
Modified:
code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc
code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.h
Log:
Extend MouseAPI
Modified: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc 2019-04-04 13:56:36 UTC (rev 12274)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc 2019-04-04 13:59:47 UTC (rev 12275)
@@ -48,7 +48,8 @@
Ogre::Ray ray = cam->getCameraToViewportRay(mousePos.x/((float)vp->getActualWidth()),mousePos.y/((float)vp->getActualHeight()));
for(auto event: clickEvents)
{
- for(auto wantedButton:event.buttons){
+ for(auto wantedButton:event.buttons)
+ {
if(wantedButton == button && ray.intersects(Ogre::Sphere(event.position,event.radius)).first)
event.onClickedFunction(button);
}
@@ -65,7 +66,8 @@
cam = CameraManager::getInstance().getActiveCamera()->getOgreCamera();
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){
+ for(auto event:scrollEvents)
+ {
if(!event.considerPosition || ray.intersects(Ogre::Sphere(event.position,event.radius)).first)
event.onScrolledFunction(abs,rel,mousePos);
}
@@ -87,12 +89,78 @@
return scrollEvents.back().id;
}
-//todo
-void MouseAPI::changePositionOfClickableObject(ClickableObjectID id,const Vector3& position){}
-void MouseAPI::changePositionOfScrollableElement(ScrollableElementID id,const Vector3& position){}
-void MouseAPI::changeRadiusOfClickableObject(ClickableObjectID id,float radius){}
-void MouseAPI::changeRadiusOfScrollableElement(ScrollableElementID id,float radius){}
-void MouseAPI::deleteClickableObject(ClickableObjectID){}
-void MouseAPI::deleteScrollableElement(ScrollableElementID){}
+bool MouseAPI::changePositionOfClickableObject(ClickableObjectID id,const Vector3& position)
+{
+ for(auto event:clickEvents)
+ {
+ if(event.id == id)
+ {
+ event.position = position;
+ return true;
+ }
+ }
+ return false;
}
+bool MouseAPI::changePositionOfScrollableElement(ScrollableElementID id,const Vector3& position)
+{
+ for(auto event:scrollEvents)
+ {
+ if(event.id == id)
+ {
+ event.position = position;
+ return true;
+ }
+ }
+ return false;
+}
+bool MouseAPI::changeRadiusOfClickableObject(ClickableObjectID id,float radius)
+{
+ for(auto event:clickEvents)
+ {
+ if(event.id == id)
+ {
+ event.radius = radius;
+ return true;
+ }
+ }
+ return false;
+}
+bool MouseAPI::changeRadiusOfScrollableElement(ScrollableElementID id,float radius)
+{
+ for(auto event:scrollEvents)
+ {
+ if(event.id == id)
+ {
+ event.radius = radius;
+ return true;
+ }
+ }
+ return false;
+}
+bool MouseAPI::deleteClickableObject(ClickableObjectID id)
+{
+ for(auto eventIt = clickEvents.begin();eventIt != clickEvents.end();eventIt++ )
+ {
+ if(eventIt->id == id)
+ {
+ clickEvents.erase(eventIt);
+ return true;
+ }
+ }
+ return false;
+}
+bool MouseAPI::deleteScrollableElement(ScrollableElementID id)
+{
+ for(auto eventIt = scrollEvents.begin();eventIt != scrollEvents.end();eventIt++ )
+ {
+ if(eventIt->id == id)
+ {
+ scrollEvents.erase(eventIt);
+ return true;
+ }
+ }
+ return false;
+}
+
+}
Modified: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.h
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.h 2019-04-04 13:56:36 UTC (rev 12274)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.h 2019-04-04 13:59:47 UTC (rev 12275)
@@ -29,28 +29,26 @@
struct clickableElement
{
- //static ClickableObjectID lastClID;
ClickableObjectID id;
Vector3 position;
float radius;
std::list<MouseButtonCode::ByEnum> buttons;
std::function<void(MouseButtonCode::ByEnum button)> onClickedFunction;
- clickableElement(ClickableObjectID id,const Vector3& position,float radius,const std::list<MouseButtonCode::ByEnum>& buttons,std::function<void(MouseButtonCode::ByEnum button)> onClickedFunction):position(position),
- radius(radius), buttons(buttons), onClickedFunction(onClickedFunction),id(id){}
+ clickableElement(ClickableObjectID id,const Vector3& position,float radius,const std::list<MouseButtonCode::ByEnum>& buttons,std::function<void(MouseButtonCode::ByEnum button)> onClickedFunction):id(id),position(position),
+ radius(radius), buttons(buttons), onClickedFunction(onClickedFunction){}
};
struct scrollElement
{
- static ScrollableElementID lastScID;
ScrollableElementID id;
bool considerPosition;
Vector3 position;
float radius;
std::function<void(int abs,int rel,const IntVector2& mousePos)> onScrolledFunction;
- scrollElement(ScrollableElementID id,std::function<void(int abs,int rel,const IntVector2& mousePos)> onScrolledFunction):considerPosition(false),
- onScrolledFunction(onScrolledFunction),id(id){}
- scrollElement(ScrollableElementID id,const Vector3& position, float radius, std::function<void(int abs,int rel,const IntVector2& mousePos)> onScrolledFunction):considerPosition(true),
- position(position), radius(radius), onScrolledFunction(onScrolledFunction),id(id){}
+ scrollElement(ScrollableElementID id,std::function<void(int abs,int rel,const IntVector2& mousePos)> onScrolledFunction):id(id),considerPosition(false),
+ onScrolledFunction(onScrolledFunction){}
+ scrollElement(ScrollableElementID id,const Vector3& position, float radius, std::function<void(int abs,int rel,const IntVector2& mousePos)> onScrolledFunction):id(id),considerPosition(true),
+ position(position), radius(radius), onScrolledFunction(onScrolledFunction){}
};
static MouseAPI* singletonPtr_s;
@@ -77,12 +75,13 @@
ScrollableElementID addScrollElement(const Vector3& position,float radius,std::function<void(int abs,int rel,const IntVector2& mousePos)> onScrolledFunction);
ScrollableElementID addScrollElement(std::function<void(int abs,int rel,const IntVector2& mousePos)> onScrolledFunction);
- void changePositionOfClickableObject(ClickableObjectID id,const Vector3& position);
- void changePositionOfScrollableElement(ScrollableElementID id,const Vector3& position);
- void changeRadiusOfClickableObject(ClickableObjectID id,float radius);
- void changeRadiusOfScrollableElement(ScrollableElementID id,float radius);
- void deleteClickableObject(ClickableObjectID);
- void deleteScrollableElement(ScrollableElementID);
+ //true: success; false: element not found
+ bool changePositionOfClickableObject(ClickableObjectID id,const Vector3& position);
+ bool changePositionOfScrollableElement(ScrollableElementID id,const Vector3& position);
+ bool changeRadiusOfClickableObject(ClickableObjectID id,float radius);
+ bool changeRadiusOfScrollableElement(ScrollableElementID id,float radius);
+ bool deleteClickableObject(ClickableObjectID id);
+ bool deleteScrollableElement(ScrollableElementID id);
void activate();
static bool isActive(){return singletonPtr_s != nullptr && getInstance().active;}
More information about the Orxonox-commit
mailing list