[Orxonox-commit 7709] r12302 - in code/branches/MouseAPI_FS19: data/levels src/modules/MouseAPI

mkarpf at orxonox.net mkarpf at orxonox.net
Thu Apr 11 16:52:57 CEST 2019


Author: mkarpf
Date: 2019-04-11 16:52:57 +0200 (Thu, 11 Apr 2019)
New Revision: 12302

Modified:
   code/branches/MouseAPI_FS19/data/levels/MouseAPIExample.oxw
   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/mouseapiexample.cc
   code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapiexample.h
Log:
getRadius added, example-level


Modified: code/branches/MouseAPI_FS19/data/levels/MouseAPIExample.oxw
===================================================================
--- code/branches/MouseAPI_FS19/data/levels/MouseAPIExample.oxw	2019-04-11 14:49:18 UTC (rev 12301)
+++ code/branches/MouseAPI_FS19/data/levels/MouseAPIExample.oxw	2019-04-11 14:52:57 UTC (rev 12302)
@@ -34,10 +34,13 @@
     <attached> 
 	<Model position="0,0,0" mesh="cube.mesh" scale3D="10,10,10" /> 
     </attached> 
-    <collisionShapes> 
-	<BoxCollisionShape position="0,0,0" halfExtents="10,10,10" /> 
-    </collisionShapes>
 </MouseAPIExample>
+
+<MouseAPIExample position="100,100,0" direction="0,0,0">
+    <attached> 
+	<Model position="0,0,0" mesh="sphere.mesh" scale=10 /> 
+    </attached> 
+</MouseAPIExample>
  
   </Scene>
 </Level>

Modified: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc	2019-04-11 14:49:18 UTC (rev 12301)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc	2019-04-11 14:52:57 UTC (rev 12302)
@@ -126,11 +126,11 @@
 }
 bool MouseAPI::changeRadiusOfClickableObject(ClickableObjectID id,float radius)
 {
-    for(auto event:clickEvents)
+    for(auto event = clickEvents.begin();event != clickEvents.end();event++ )
     {
-        if(event.id == id)
+        if(event->id == id)
         {
-            event.radius = radius;
+            event->radius = radius;
             return true;
         }
     }
@@ -138,11 +138,11 @@
 }
 bool MouseAPI::changeRadiusOfScrollableElement(ScrollableElementID id,float radius)
 {
-    for(auto event:scrollEvents)
+    for(auto event = scrollEvents.begin();event != scrollEvents.end();event++ )
     {
-        if(event.id == id)
+        if(event->id == id)
         {
-            event.radius = radius;
+            event->radius = radius;
             return true;
         }
     }
@@ -173,4 +173,26 @@
     return false;
 }
 
+float MouseAPI::getRadiusClick(ClickableObjectID id)
+{
+     for(auto eventIt = clickEvents.begin();eventIt != clickEvents.end();eventIt++ )
+     {
+         if(eventIt->id == id)
+         {
+             return eventIt->radius;
+         }
+     }
 }
+
+float MouseAPI::getRadiusScroll(ScrollableElementID id)
+{
+     for(auto eventIt = scrollEvents.begin();eventIt != scrollEvents.end();eventIt++ )
+     {
+         if(eventIt->id == id)
+         {
+             return eventIt->radius;
+         }
+     }
+}
+
+}

Modified: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.h
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.h	2019-04-11 14:49:18 UTC (rev 12301)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.h	2019-04-11 14:52:57 UTC (rev 12302)
@@ -83,6 +83,9 @@
     bool deleteClickableObject(ClickableObjectID id);
     bool deleteScrollableElement(ScrollableElementID id);
 
+    float getRadiusClick(ClickableObjectID id);
+    float getRadiusScroll(ScrollableElementID id);
+
     void activate();
     static bool isActive(){return singletonPtr_s != nullptr && getInstance().active;}
     void deactivate();

Modified: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapiexample.cc
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapiexample.cc	2019-04-11 14:49:18 UTC (rev 12301)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapiexample.cc	2019-04-11 14:52:57 UTC (rev 12302)
@@ -18,26 +18,33 @@
 {
     if(MouseAPI::isActive())
         MouseAPI::getInstance().deactivate();
-
 }
 
-void MouseAPIExample::testfunction(MouseButtonCode::ByEnum mouse)
+// change the size of the cube to a random number by clicking on it
+void MouseAPIExample::changesizeonclick(MouseButtonCode::ByEnum mouse)
 {
-    float randomnumber = (rand()%100 + 1)/20.0;
+    // generate random number between 1 and 20
+    float randomnumber = std::fmax((rand()%100 + 1)/20.0,1);
+    // change the scale of the cube to this random number
     this->setScale(randomnumber);
-    orxout() << "Blah\n";
-    //this->getGametype()->getPlayers().begin()->first->getControllableEntity()->mouseLook();//getCurrentCameraPosition()->setAllowMouseLook(false);
-    //this->getGametype()->getPlayers().begin()->first->stopControl();
+    // change the radius of the clickableObject to the new size
+    MouseAPI::getInstance().changeRadiusOfClickableObject(cubeid,randomnumber);
+}
 
+// change the size of the sphere by scrolling on it
+void MouseAPIExample::changesizeonscroll(int abs,int rel,const IntVector2& mousePos)
+{
+    // increase or decrease the size of the sphere
+    this->setScale(1+rel);
 }
 
 void MouseAPIExample::XMLPort(Element& xmlelement, XMLPort::Mode mode)
 {
     SUPER(MouseAPIExample, XMLPort, xmlelement, mode);
+    //todo: id xml-port
     MouseAPI::getInstance().activate();
-    MouseAPI::getInstance().addClickableObject(this->getWorldPosition(),10,std::list<MouseButtonCode::ByEnum>{MouseButtonCode::Left},[this](MouseButtonCode::ByEnum mouse){this->testfunction(mouse);});
-    //this->getGametype()->getPlayers().begin()->first->getControllableEntity()->mouseLook();
+    cubeid = MouseAPI::getInstance().addClickableObject(this->getWorldPosition(),10,std::list<MouseButtonCode::ByEnum>{MouseButtonCode::Left},[this](MouseButtonCode::ByEnum mouse){this->changesizeonclick(mouse);});
+    //sphereid = MouseAPI::addScrollElement(this->getWorldPosition(), 10, [this](int abs, int rel, const IntVector2& mousePos){this->changesizeonscroll(abs,rel,mousePos);});
 
-
 }
 }

Modified: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapiexample.h
===================================================================
--- code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapiexample.h	2019-04-11 14:49:18 UTC (rev 12301)
+++ code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapiexample.h	2019-04-11 14:52:57 UTC (rev 12302)
@@ -19,8 +19,11 @@
     MouseAPIExample(Context *context);
     ~MouseAPIExample();
     virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-    void testfunction(MouseButtonCode::ByEnum mouse);
+    void changesizeonclick(MouseButtonCode::ByEnum mouse);
+    void changesizeonscroll(int abs,int rel,const IntVector2& mousePos);
     static std::list<MouseAPIExample> blocks;
+    ClickableObjectID cubeid;
+    ScrollableElementID sphereid;
 };
 }
 #endif // MOUSEAPIEXAMPLE_H



More information about the Orxonox-commit mailing list