diff options
author | PilzAdam <pilzadam@minetest.net> | 2013-12-03 22:26:40 +0100 |
---|---|---|
committer | PilzAdam <pilzadam@minetest.net> | 2013-12-03 23:20:00 +0100 |
commit | e51ad5337f78060557d63de6407a2c6bce071aba (patch) | |
tree | 1036cc4adb72c49a335787f295746f6a23ee6607 /src/script | |
parent | 15be2659eae6da2c3807713eb6e068d8aa436423 (diff) | |
download | minetest-e51ad5337f78060557d63de6407a2c6bce071aba.tar.gz minetest-e51ad5337f78060557d63de6407a2c6bce071aba.tar.bz2 minetest-e51ad5337f78060557d63de6407a2c6bce071aba.zip |
Use a table in set_physics_override()
Diffstat (limited to 'src/script')
-rw-r--r-- | src/script/lua_api/l_object.cpp | 38 |
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; } |