summaryrefslogtreecommitdiff
path: root/src/content_sao.cpp
diff options
context:
space:
mode:
authorSapier <sapier@does.not.have.an.email>2015-12-15 00:03:18 +0100
committerSapier <sapier AT gmx dot net>2015-12-19 17:00:36 +0100
commit70ea5d552e283bd5bce3278cbf3819bd87ba2602 (patch)
treeee1a61eb38e1d29696dd71ed240625933176d939 /src/content_sao.cpp
parent06632205d8765b5417c36df798617721bab0d02f (diff)
downloadminetest-70ea5d552e283bd5bce3278cbf3819bd87ba2602.tar.gz
minetest-70ea5d552e283bd5bce3278cbf3819bd87ba2602.tar.bz2
minetest-70ea5d552e283bd5bce3278cbf3819bd87ba2602.zip
Add support for limiting rotation of automatic face movement dir entitys
Diffstat (limited to 'src/content_sao.cpp')
-rw-r--r--src/content_sao.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/content_sao.cpp b/src/content_sao.cpp
index 0a1cfe770..4d144aa17 100644
--- a/src/content_sao.cpp
+++ b/src/content_sao.cpp
@@ -283,8 +283,20 @@ void LuaEntitySAO::step(float dtime, bool send_recommended)
}
if((m_prop.automatic_face_movement_dir) &&
- (fabs(m_velocity.Z) > 0.001 || fabs(m_velocity.X) > 0.001)){
- m_yaw = atan2(m_velocity.Z,m_velocity.X) * 180 / M_PI + m_prop.automatic_face_movement_dir_offset;
+ (fabs(m_velocity.Z) > 0.001 || fabs(m_velocity.X) > 0.001))
+ {
+ float optimal_yaw = atan2(m_velocity.Z,m_velocity.X) * 180 / M_PI
+ + m_prop.automatic_face_movement_dir_offset;
+ float max_rotation_delta =
+ dtime * m_prop.automatic_face_movement_max_rotation_per_sec;
+
+ if ((m_prop.automatic_face_movement_max_rotation_per_sec > 0) &&
+ (fabs(m_yaw - optimal_yaw) > max_rotation_delta)) {
+
+ m_yaw = optimal_yaw < m_yaw ? m_yaw - max_rotation_delta : m_yaw + max_rotation_delta;
+ } else {
+ m_yaw = optimal_yaw;
+ }
}
}