[Orxonox-commit 7718] r12311 - code/branches/MouseAPI_FS19/src/modules/MouseAPI

mkarpf at orxonox.net mkarpf at orxonox.net
Thu Apr 18 16:05:35 CEST 2019


Author: mkarpf
Date: 2019-04-18 16:05:35 +0200 (Thu, 18 Apr 2019)
New Revision: 12311

Modified:
   code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc
   code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapiexample.cc
   code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapiexample.h
Log:
example level weiterentwickelt
mousapi addobject korrigiert


Modified: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc	2019-04-18 14:04:33 UTC (rev 12310)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc	2019-04-18 14:05:35 UTC (rev 12311)
@@ -96,18 +96,21 @@
 
 ClickableObjectID MouseAPI::addClickableObject(const Vector3& position, float radius, const std::list<MouseButtonCode::ByEnum>& buttons, std::function<void(MouseButtonCode::ByEnum)> onClickedFunction)
 {
-    clickEvents.insert(clickEvents.begin(),{!clickEvents.empty() ? clickEvents.back().id + 1:0,position,radius,buttons,onClickedFunction});
-    return clickEvents.back().id;
+    ClickableObjectID id = !clickEvents.empty() ? clickEvents.back().id + 1:0;
+    clickEvents.insert(clickEvents.end(),{id,position,radius,buttons,onClickedFunction});
+    return id;
 }
 ScrollableElementID MouseAPI::addScrollElement(const Vector3& position, float radius, std::function<void(int abs,int rel,const IntVector2& mousePos)> onScrolledFunction)
 {
-    scrollEvents.insert(scrollEvents.begin(),{!scrollEvents.empty() ? scrollEvents.back().id + 1:0,position,radius,onScrolledFunction});
-    return scrollEvents.back().id;
+    ScrollableElementID id = !scrollEvents.empty() ? scrollEvents.back().id + 1:0;
+    scrollEvents.insert(scrollEvents.end(),{id,position,radius,onScrolledFunction});
+    return id;
 }
 ScrollableElementID MouseAPI::addScrollElement(std::function<void(int abs,int rel,const IntVector2& mousePos)> onScrolledFunction)
 {
-    scrollEvents.insert(scrollEvents.begin(),{!scrollEvents.empty() ? scrollEvents.back().id + 1:0,onScrolledFunction});
-    return scrollEvents.back().id;
+    ScrollableElementID id = !scrollEvents.empty() ? scrollEvents.back().id + 1:0;
+    scrollEvents.insert(scrollEvents.end(),{id,onScrolledFunction});
+    return id;
 }
 
 

Modified: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapiexample.cc
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapiexample.cc	2019-04-18 14:04:33 UTC (rev 12310)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapiexample.cc	2019-04-18 14:05:35 UTC (rev 12311)
@@ -34,11 +34,27 @@
     float curRadius = MouseAPI::getInstance().getRadiusScroll(sphereid);
     // set factor to 120% or 80% of the current size, depending on increase or decrease
     float factor = curRadius/10*(1+rel/600.0);
+    // return if factor is outside of range [0.5,5] (limit size)
+    if(factor > 5 || factor < 0.5) return;
     //scale the sphere with this factor and change the radius
     this->setScale(factor);
     MouseAPI::getInstance().changeRadiusOfScrollableElement(sphereid,factor*10);
 }
 
+//
+void MouseAPIExample::clickleft(MouseButtonCode::ByEnum mouse)
+{
+     //MouseAPI::getInstance().changeRadiusOfClickableObject(cubeid,10);
+    orxout() << "left" << "\n";
+}
+
+//
+void MouseAPIExample::clickright(MouseButtonCode::ByEnum mouse)
+{
+     //MouseAPI::getInstance().changeRadiusOfClickableObject(cubeid,10);
+    orxout() << "right" << "\n";
+}
+
 // standard XML-Port
 void MouseAPIExample::XMLPort(Element& xmlelement, XMLPort::Mode mode)
 {
@@ -56,6 +72,12 @@
         // add the sphere to the list with scrollable Objects, set the radius to 10, define the function changesizeonscroll to be called while scrolling
         sphereid = MouseAPI::getInstance().addScrollElement(this->getWorldPosition(), 10, [this](int abs, int rel, const IntVector2& mousePos){this->changesizeonscroll(abs,rel,mousePos);});
     }
+    else if(this->getId() == 3) // id == 3; long block
+    {
+        // add the left and right outermost part of the long block to the list with clickable Objects and define clickleft/clickright to be called
+        leftid = MouseAPI::getInstance().addClickableObject(this->getWorldPosition(),10,std::list<MouseButtonCode::ByEnum>{MouseButtonCode::Left,MouseButtonCode::Right},[this](MouseButtonCode::ByEnum mouse){this->clickleft(mouse);});
+        rightid = MouseAPI::getInstance().addClickableObject(this->getWorldPosition(),10,std::list<MouseButtonCode::ByEnum>{MouseButtonCode::Left,MouseButtonCode::Right},[this](MouseButtonCode::ByEnum mouse){this->clickright(mouse);});
+    }
 
     // activate MouseAPI
     MouseAPI::getInstance().activate();

Modified: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapiexample.h
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapiexample.h	2019-04-18 14:04:33 UTC (rev 12310)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapiexample.h	2019-04-18 14:05:35 UTC (rev 12311)
@@ -17,6 +17,8 @@
     virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
     void changesizeonclick(MouseButtonCode::ByEnum mouse);
     void changesizeonscroll(int abs,int rel,const IntVector2& mousePos);
+    void clickleft(MouseButtonCode::ByEnum mouse);
+    void clickright(MouseButtonCode::ByEnum mouse);
     inline void setId(int id)
         { this->id = id; }
     inline int getId() const
@@ -25,7 +27,7 @@
     int id;
     ClickableObjectID cubeid;
     ScrollableElementID sphereid;
-    static std::list<MouseAPIExample> blocks;
+    ClickableObjectID leftid,rightid;
 };
 }
 #endif // MOUSEAPIEXAMPLE_H



More information about the Orxonox-commit mailing list