Make player liquid speed independent of FPS (#7543)

Make player liquid speed independent of FPS.
Fix codestyle issues in code block.
This commit is contained in:
Paramat 2018-07-14 18:41:26 +01:00 committed by GitHub
parent 69358b601c
commit b38c121856
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -165,31 +165,32 @@ void ClientEnvironment::step(float dtime)
{ {
// Apply physics // Apply physics
if(!free_move && !is_climbing) if (!free_move && !is_climbing) {
{
// Gravity // Gravity
v3f speed = lplayer->getSpeed(); v3f speed = lplayer->getSpeed();
if (!lplayer->in_liquid) if (!lplayer->in_liquid)
speed.Y -= lplayer->movement_gravity * lplayer->physics_override_gravity * dtime_part * 2; speed.Y -= lplayer->movement_gravity *
lplayer->physics_override_gravity * dtime_part * 2.0f;
// Liquid floating / sinking // Liquid floating / sinking
if (lplayer->in_liquid && !lplayer->swimming_vertical) if (lplayer->in_liquid && !lplayer->swimming_vertical)
speed.Y -= lplayer->movement_liquid_sink * dtime_part * 2; speed.Y -= lplayer->movement_liquid_sink * dtime_part * 2.0f;
// Liquid resistance // Liquid resistance
if(lplayer->in_liquid_stable || lplayer->in_liquid) if (lplayer->in_liquid_stable || lplayer->in_liquid) {
{ // How much the node's viscosity blocks movement, ranges
// How much the node's viscosity blocks movement, ranges between 0 and 1 // between 0 and 1. Should match the scale at which viscosity
// Should match the scale at which viscosity increase affects other liquid attributes // increase affects other liquid attributes.
const f32 viscosity_factor = 0.3; static const f32 viscosity_factor = 0.3f;
v3f d_wanted = -speed / lplayer->movement_liquid_fluidity; v3f d_wanted = -speed / lplayer->movement_liquid_fluidity;
f32 dl = d_wanted.getLength(); f32 dl = d_wanted.getLength();
if (dl > lplayer->movement_liquid_fluidity_smooth) if (dl > lplayer->movement_liquid_fluidity_smooth)
dl = lplayer->movement_liquid_fluidity_smooth; dl = lplayer->movement_liquid_fluidity_smooth;
dl *= (lplayer->liquid_viscosity * viscosity_factor) + (1 - viscosity_factor);
v3f d = d_wanted.normalize() * dl; dl *= (lplayer->liquid_viscosity * viscosity_factor) +
(1 - viscosity_factor);
v3f d = d_wanted.normalize() * (dl * dtime_part * 100.0f);
speed += d; speed += d;
} }