[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