[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