aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorSmallJoker <SmallJoker@users.noreply.github.com>2022-08-12 11:17:02 +0200
committerGitHub <noreply@github.com>2022-08-12 10:17:02 +0100
commitc8ee755c05ca4410b9b1e816a9244b3cf303d3fe (patch)
tree25a898cc692ba6a996f32d8248dde153847cd539 /src/server
parentdf1d215f4823b82f704b06eae0179c5e6c6b97af (diff)
downloadminetest-c8ee755c05ca4410b9b1e816a9244b3cf303d3fe.tar.xz
Physics overrides: Move values to a common struct (#12591)
Co-authored-by: sfan5 <sfan5@live.de>
Diffstat (limited to 'src/server')
-rw-r--r--src/server/player_sao.cpp24
-rw-r--r--src/server/player_sao.h6
2 files changed, 15 insertions, 15 deletions
diff --git a/src/server/player_sao.cpp b/src/server/player_sao.cpp
index a58a0397f..9aa7ce39f 100644
--- a/src/server/player_sao.cpp
+++ b/src/server/player_sao.cpp
@@ -305,17 +305,23 @@ void PlayerSAO::step(float dtime, bool send_recommended)
std::string PlayerSAO::generateUpdatePhysicsOverrideCommand() const
{
+ if (!m_player) {
+ // Will output a format warning client-side
+ return "";
+ }
+
+ const auto &phys = m_player->physics_override;
std::ostringstream os(std::ios::binary);
// command
writeU8(os, AO_CMD_SET_PHYSICS_OVERRIDE);
// parameters
- writeF32(os, m_physics_override_speed);
- writeF32(os, m_physics_override_jump);
- writeF32(os, m_physics_override_gravity);
- // these are sent inverted so we get true when the server sends nothing
- writeU8(os, !m_physics_override_sneak);
- writeU8(os, !m_physics_override_sneak_glitch);
- writeU8(os, !m_physics_override_new_move);
+ writeF32(os, phys.speed);
+ writeF32(os, phys.jump);
+ writeF32(os, phys.gravity);
+ // MT 0.4.10 legacy: send inverted for detault `true` if the server sends nothing
+ writeU8(os, !phys.sneak);
+ writeU8(os, !phys.sneak_glitch);
+ writeU8(os, !phys.new_move);
return os.str();
}
@@ -604,10 +610,10 @@ bool PlayerSAO::checkMovementCheat()
player_max_walk = m_player->movement_speed_fast; // Fast speed
else
player_max_walk = m_player->movement_speed_walk; // Normal speed
- player_max_walk *= m_physics_override_speed;
+ player_max_walk *= m_player->physics_override.speed;
player_max_walk = MYMAX(player_max_walk, override_max_H);
- player_max_jump = m_player->movement_speed_jump * m_physics_override_jump;
+ player_max_jump = m_player->movement_speed_jump * m_player->physics_override.jump;
// FIXME: Bouncy nodes cause practically unbound increase in Y speed,
// until this can be verified correctly, tolerate higher jumping speeds
player_max_jump *= 2.0;
diff --git a/src/server/player_sao.h b/src/server/player_sao.h
index 5f48cae67..049e92cda 100644
--- a/src/server/player_sao.h
+++ b/src/server/player_sao.h
@@ -221,12 +221,6 @@ private:
Metadata m_meta;
public:
- float m_physics_override_speed = 1.0f;
- float m_physics_override_jump = 1.0f;
- float m_physics_override_gravity = 1.0f;
- bool m_physics_override_sneak = true;
- bool m_physics_override_sneak_glitch = false;
- bool m_physics_override_new_move = true;
bool m_physics_override_sent = false;
};