forked from Mirrorlandia_minetest/minetest
Fix regression in automatic_face_movement_max_rotation_per_sec
Values <= 0 should make the yaw change instant. This worked in 0.4.16 but was broken in 089f59458286. Per bug report by oil_boi_minetest on IRC.
This commit is contained in:
parent
007ce24a11
commit
12a63021d0
@ -1000,10 +1000,16 @@ void GenericCAO::step(float dtime, ClientEnvironment *env)
|
|||||||
|
|
||||||
float target_yaw = atan2(m_velocity.Z, m_velocity.X) * 180 / M_PI
|
float target_yaw = atan2(m_velocity.Z, m_velocity.X) * 180 / M_PI
|
||||||
+ m_prop.automatic_face_movement_dir_offset;
|
+ m_prop.automatic_face_movement_dir_offset;
|
||||||
float max_rotation_delta =
|
float max_rotation_per_sec =
|
||||||
dtime * m_prop.automatic_face_movement_max_rotation_per_sec;
|
m_prop.automatic_face_movement_max_rotation_per_sec;
|
||||||
|
if (max_rotation_per_sec > 0) {
|
||||||
|
float max_rotation_delta = dtime * max_rotation_per_sec;
|
||||||
|
|
||||||
|
wrappedApproachShortest(m_rotation.Y, target_yaw, max_rotation_delta, 360.f);
|
||||||
|
} else
|
||||||
|
// Negative values of ...max_rotation_per_sec mean disabled.
|
||||||
|
m_rotation.Y = target_yaw;
|
||||||
|
|
||||||
wrappedApproachShortest(m_rotation.Y, target_yaw, max_rotation_delta, 360.f);
|
|
||||||
rot_translator.val_current = m_rotation;
|
rot_translator.val_current = m_rotation;
|
||||||
|
|
||||||
updateNodePos();
|
updateNodePos();
|
||||||
|
@ -457,11 +457,16 @@ void LuaEntitySAO::step(float dtime, bool send_recommended)
|
|||||||
|
|
||||||
float target_yaw = atan2(m_velocity.Z, m_velocity.X) * 180 / M_PI
|
float target_yaw = atan2(m_velocity.Z, m_velocity.X) * 180 / M_PI
|
||||||
+ m_prop.automatic_face_movement_dir_offset;
|
+ m_prop.automatic_face_movement_dir_offset;
|
||||||
float max_rotation_delta =
|
|
||||||
dtime * m_prop.automatic_face_movement_max_rotation_per_sec;
|
|
||||||
|
|
||||||
m_rotation.Y = wrapDegrees_0_360(m_rotation.Y);
|
float max_rotation_per_sec =
|
||||||
wrappedApproachShortest(m_rotation.Y, target_yaw, max_rotation_delta, 360.f);
|
m_prop.automatic_face_movement_max_rotation_per_sec;
|
||||||
|
if (max_rotation_per_sec > 0) {
|
||||||
|
float max_rotation_delta = dtime * max_rotation_per_sec;
|
||||||
|
m_rotation.Y = wrapDegrees_0_360(m_rotation.Y);
|
||||||
|
wrappedApproachShortest(m_rotation.Y, target_yaw, max_rotation_delta, 360.f);
|
||||||
|
} else
|
||||||
|
// Negative values of ...max_rotation_per_sec mean disabled.
|
||||||
|
m_rotation.Y = target_yaw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user