diff options
author | SmallJoker <SmallJoker@users.noreply.github.com> | 2022-08-12 11:17:02 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-12 10:17:02 +0100 |
commit | c8ee755c05ca4410b9b1e816a9244b3cf303d3fe (patch) | |
tree | 25a898cc692ba6a996f32d8248dde153847cd539 /src/script/lua_api | |
parent | df1d215f4823b82f704b06eae0179c5e6c6b97af (diff) | |
download | minetest-c8ee755c05ca4410b9b1e816a9244b3cf303d3fe.tar.xz |
Physics overrides: Move values to a common struct (#12591)
Co-authored-by: sfan5 <sfan5@live.de>
Diffstat (limited to 'src/script/lua_api')
-rw-r--r-- | src/script/lua_api/l_localplayer.cpp | 13 | ||||
-rw-r--r-- | src/script/lua_api/l_object.cpp | 38 |
2 files changed, 28 insertions, 23 deletions
diff --git a/src/script/lua_api/l_localplayer.cpp b/src/script/lua_api/l_localplayer.cpp index 2efb976c7..1066beed1 100644 --- a/src/script/lua_api/l_localplayer.cpp +++ b/src/script/lua_api/l_localplayer.cpp @@ -157,23 +157,24 @@ int LuaLocalPlayer::l_get_physics_override(lua_State *L) { LocalPlayer *player = getobject(L, 1); + const auto &phys = player->physics_override; lua_newtable(L); - lua_pushnumber(L, player->physics_override_speed); + lua_pushnumber(L, phys.speed); lua_setfield(L, -2, "speed"); - lua_pushnumber(L, player->physics_override_jump); + lua_pushnumber(L, phys.jump); lua_setfield(L, -2, "jump"); - lua_pushnumber(L, player->physics_override_gravity); + lua_pushnumber(L, phys.gravity); lua_setfield(L, -2, "gravity"); - lua_pushboolean(L, player->physics_override_sneak); + lua_pushboolean(L, phys.sneak); lua_setfield(L, -2, "sneak"); - lua_pushboolean(L, player->physics_override_sneak_glitch); + lua_pushboolean(L, phys.sneak_glitch); lua_setfield(L, -2, "sneak_glitch"); - lua_pushboolean(L, player->physics_override_new_move); + lua_pushboolean(L, phys.new_move); lua_setfield(L, -2, "new_move"); return 1; diff --git a/src/script/lua_api/l_object.cpp b/src/script/lua_api/l_object.cpp index d6498bfa8..a9d4920de 100644 --- a/src/script/lua_api/l_object.cpp +++ b/src/script/lua_api/l_object.cpp @@ -1434,14 +1434,17 @@ int ObjectRef::l_set_physics_override(lua_State *L) if (playersao == nullptr) return 0; + RemotePlayer *player = playersao->getPlayer(); + auto &phys = player->physics_override; + if (lua_istable(L, 2)) { bool modified = false; - modified |= getfloatfield(L, 2, "speed", playersao->m_physics_override_speed); - modified |= getfloatfield(L, 2, "jump", playersao->m_physics_override_jump); - modified |= getfloatfield(L, 2, "gravity", playersao->m_physics_override_gravity); - modified |= getboolfield(L, 2, "sneak", playersao->m_physics_override_sneak); - modified |= getboolfield(L, 2, "sneak_glitch", playersao->m_physics_override_sneak_glitch); - modified |= getboolfield(L, 2, "new_move", playersao->m_physics_override_new_move); + modified |= getfloatfield(L, 2, "speed", phys.speed); + modified |= getfloatfield(L, 2, "jump", phys.jump); + modified |= getfloatfield(L, 2, "gravity", phys.gravity); + modified |= getboolfield(L, 2, "sneak", phys.sneak); + modified |= getboolfield(L, 2, "sneak_glitch", phys.sneak_glitch); + modified |= getboolfield(L, 2, "new_move", phys.new_move); if (modified) playersao->m_physics_override_sent = false; } else { @@ -1450,15 +1453,15 @@ int ObjectRef::l_set_physics_override(lua_State *L) log_deprecated(L, "Deprecated use of set_physics_override(num, num, num)"); if (!lua_isnil(L, 2)) { - playersao->m_physics_override_speed = lua_tonumber(L, 2); + phys.speed = lua_tonumber(L, 2); playersao->m_physics_override_sent = false; } if (!lua_isnil(L, 3)) { - playersao->m_physics_override_jump = lua_tonumber(L, 3); + phys.jump = lua_tonumber(L, 3); playersao->m_physics_override_sent = false; } if (!lua_isnil(L, 4)) { - playersao->m_physics_override_gravity = lua_tonumber(L, 4); + phys.gravity = lua_tonumber(L, 4); playersao->m_physics_override_sent = false; } } @@ -1470,22 +1473,23 @@ int ObjectRef::l_get_physics_override(lua_State *L) { NO_MAP_LOCK_REQUIRED; ObjectRef *ref = checkobject(L, 1); - PlayerSAO *playersao = getplayersao(ref); - if (playersao == nullptr) + RemotePlayer *player = getplayer(ref); + if (player == nullptr) return 0; + const auto &phys = player->physics_override; lua_newtable(L); - lua_pushnumber(L, playersao->m_physics_override_speed); + lua_pushnumber(L, phys.speed); lua_setfield(L, -2, "speed"); - lua_pushnumber(L, playersao->m_physics_override_jump); + lua_pushnumber(L, phys.jump); lua_setfield(L, -2, "jump"); - lua_pushnumber(L, playersao->m_physics_override_gravity); + lua_pushnumber(L, phys.gravity); lua_setfield(L, -2, "gravity"); - lua_pushboolean(L, playersao->m_physics_override_sneak); + lua_pushboolean(L, phys.sneak); lua_setfield(L, -2, "sneak"); - lua_pushboolean(L, playersao->m_physics_override_sneak_glitch); + lua_pushboolean(L, phys.sneak_glitch); lua_setfield(L, -2, "sneak_glitch"); - lua_pushboolean(L, playersao->m_physics_override_new_move); + lua_pushboolean(L, phys.new_move); lua_setfield(L, -2, "new_move"); return 1; } |