1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Physics overrides: Move values to a common struct (#12591)

Co-authored-by: sfan5 <sfan5@live.de>
This commit is contained in:
SmallJoker 2022-08-12 11:17:02 +02:00 committed by GitHub
parent df1d215f48
commit c8ee755c05
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 81 additions and 71 deletions

View file

@ -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;

View file

@ -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;
};