summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPilzAdam <pilzadam@minetest.net>2013-12-03 22:26:40 +0100
committerPilzAdam <pilzadam@minetest.net>2013-12-03 23:20:00 +0100
commite51ad5337f78060557d63de6407a2c6bce071aba (patch)
tree1036cc4adb72c49a335787f295746f6a23ee6607 /src
parent15be2659eae6da2c3807713eb6e068d8aa436423 (diff)
downloadminetest-e51ad5337f78060557d63de6407a2c6bce071aba.tar.gz
minetest-e51ad5337f78060557d63de6407a2c6bce071aba.tar.bz2
minetest-e51ad5337f78060557d63de6407a2c6bce071aba.zip
Use a table in set_physics_override()
Diffstat (limited to 'src')
-rw-r--r--src/script/lua_api/l_object.cpp38
1 files changed, 20 insertions, 18 deletions
diff --git a/src/script/lua_api/l_object.cpp b/src/script/lua_api/l_object.cpp
index 5e1517e46..3a990887b 100644
--- a/src/script/lua_api/l_object.cpp
+++ b/src/script/lua_api/l_object.cpp
@@ -357,25 +357,27 @@ int ObjectRef::l_set_physics_override(lua_State *L)
PlayerSAO *co = (PlayerSAO *) getobject(ref);
if(co == NULL) return 0;
// Do it
- if(!lua_isnil(L, 2)){
- co->m_physics_override_speed = lua_tonumber(L, 2);
- co->m_physics_override_sent = false;
- }
- if(!lua_isnil(L, 3)){
- co->m_physics_override_jump = lua_tonumber(L, 3);
- co->m_physics_override_sent = false;
- }
- if(!lua_isnil(L, 4)){
- co->m_physics_override_gravity = lua_tonumber(L, 4);
- co->m_physics_override_sent = false;
- }
- if (lua_isboolean(L, 5)) {
- co->m_physics_override_sneak = lua_toboolean(L, 5);
- co->m_physics_override_sent = false;
- }
- if (lua_isboolean(L, 6)) {
- co->m_physics_override_sneak_glitch = lua_toboolean(L, 6);
+ if (lua_istable(L, 2)) {
+ co->m_physics_override_speed = getfloatfield_default(L, 2, "speed", co->m_physics_override_speed);
+ co->m_physics_override_jump = getfloatfield_default(L, 2, "jump", co->m_physics_override_jump);
+ co->m_physics_override_gravity = getfloatfield_default(L, 2, "gravity", co->m_physics_override_gravity);
+ co->m_physics_override_sneak = getboolfield_default(L, 2, "sneak", co->m_physics_override_sneak);
+ co->m_physics_override_sneak_glitch = getboolfield_default(L, 2, "sneak_glitch", co->m_physics_override_sneak_glitch);
co->m_physics_override_sent = false;
+ } else {
+ // old, non-table format
+ if(!lua_isnil(L, 2)){
+ co->m_physics_override_speed = lua_tonumber(L, 2);
+ co->m_physics_override_sent = false;
+ }
+ if(!lua_isnil(L, 3)){
+ co->m_physics_override_jump = lua_tonumber(L, 3);
+ co->m_physics_override_sent = false;
+ }
+ if(!lua_isnil(L, 4)){
+ co->m_physics_override_gravity = lua_tonumber(L, 4);
+ co->m_physics_override_sent = false;
+ }
}
return 0;
}