[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