aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2012-01-02 16:19:52 +0200
committerPerttu Ahola <celeron55@gmail.com>2012-01-02 16:19:52 +0200
commit56f55ab1af941c5a7c7a7aef4217189f9f2d1680 (patch)
tree6af7ec25507ab666ffd8e5d6d082600fd31353c7 /src
parent2445cbbbdca54d40d1c0a069cc360b06bf44d291 (diff)
downloadminetest-56f55ab1af941c5a7c7a7aef4217189f9f2d1680.tar.gz
minetest-56f55ab1af941c5a7c7a7aef4217189f9f2d1680.tar.bz2
minetest-56f55ab1af941c5a7c7a7aef4217189f9f2d1680.zip
Add ObjectRef:getvelocity(), ObjectRef:setyaw() and ObjectRef:getyaw()
Diffstat (limited to 'src')
-rw-r--r--src/content_sao.cpp15
-rw-r--r--src/content_sao.h3
-rw-r--r--src/scriptapi.cpp40
3 files changed, 58 insertions, 0 deletions
diff --git a/src/content_sao.cpp b/src/content_sao.cpp
index e9e6543d9..f195b16bd 100644
--- a/src/content_sao.cpp
+++ b/src/content_sao.cpp
@@ -1698,6 +1698,11 @@ void LuaEntitySAO::setVelocity(v3f velocity)
m_velocity = velocity;
}
+v3f LuaEntitySAO::getVelocity()
+{
+ return m_velocity;
+}
+
void LuaEntitySAO::setAcceleration(v3f acceleration)
{
m_acceleration = acceleration;
@@ -1708,6 +1713,16 @@ v3f LuaEntitySAO::getAcceleration()
return m_acceleration;
}
+void LuaEntitySAO::setYaw(float yaw)
+{
+ m_yaw = yaw;
+}
+
+float LuaEntitySAO::getYaw()
+{
+ return m_yaw;
+}
+
void LuaEntitySAO::setTextureMod(const std::string &mod)
{
std::ostringstream os(std::ios::binary);
diff --git a/src/content_sao.h b/src/content_sao.h
index d56fdb709..c2bb9c3f5 100644
--- a/src/content_sao.h
+++ b/src/content_sao.h
@@ -213,8 +213,11 @@ public:
float getMinimumSavedMovement();
/* LuaEntitySAO-specific */
void setVelocity(v3f velocity);
+ v3f getVelocity();
void setAcceleration(v3f acceleration);
v3f getAcceleration();
+ void setYaw(float yaw);
+ float getYaw();
void setTextureMod(const std::string &mod);
void setSprite(v2s16 p, int num_frames, float framelength,
bool select_horiz_by_yawpitch);
diff --git a/src/scriptapi.cpp b/src/scriptapi.cpp
index 9803470c3..401de8ade 100644
--- a/src/scriptapi.cpp
+++ b/src/scriptapi.cpp
@@ -1928,6 +1928,18 @@ private:
return 0;
}
+ // getvelocity(self)
+ static int l_getvelocity(lua_State *L)
+ {
+ ObjectRef *ref = checkobject(L, 1);
+ LuaEntitySAO *co = getluaobject(ref);
+ if(co == NULL) return 0;
+ // Do it
+ v3f v = co->getVelocity();
+ pushFloatPos(L, v);
+ return 1;
+ }
+
// setacceleration(self, {x=num, y=num, z=num})
static int l_setacceleration(lua_State *L)
{
@@ -1953,6 +1965,31 @@ private:
return 1;
}
+ // setyaw(self, radians)
+ static int l_setyaw(lua_State *L)
+ {
+ ObjectRef *ref = checkobject(L, 1);
+ LuaEntitySAO *co = getluaobject(ref);
+ if(co == NULL) return 0;
+ // pos
+ float yaw = luaL_checknumber(L, 2) * core::RADTODEG;
+ // Do it
+ co->setYaw(yaw);
+ return 0;
+ }
+
+ // getyaw(self)
+ static int l_getyaw(lua_State *L)
+ {
+ ObjectRef *ref = checkobject(L, 1);
+ LuaEntitySAO *co = getluaobject(ref);
+ if(co == NULL) return 0;
+ // Do it
+ float yaw = co->getYaw() * core::DEGTORAD;
+ lua_pushnumber(L, yaw);
+ return 1;
+ }
+
// settexturemod(self, mod)
static int l_settexturemod(lua_State *L)
{
@@ -2209,8 +2246,11 @@ const luaL_reg ObjectRef::methods[] = {
method(ObjectRef, get_hp),
// LuaEntitySAO-only
method(ObjectRef, setvelocity),
+ method(ObjectRef, getvelocity),
method(ObjectRef, setacceleration),
method(ObjectRef, getacceleration),
+ method(ObjectRef, setyaw),
+ method(ObjectRef, getyaw),
method(ObjectRef, settexturemod),
method(ObjectRef, setsprite),
method(ObjectRef, get_entity_name),