diff options
author | Sapier <sapier@does.not.have.an.email> | 2015-12-15 00:03:18 +0100 |
---|---|---|
committer | Sapier <sapier AT gmx dot net> | 2015-12-19 17:00:36 +0100 |
commit | 70ea5d552e283bd5bce3278cbf3819bd87ba2602 (patch) | |
tree | ee1a61eb38e1d29696dd71ed240625933176d939 /src/content_cao.cpp | |
parent | 06632205d8765b5417c36df798617721bab0d02f (diff) | |
download | minetest-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_cao.cpp')
-rw-r--r-- | src/content_cao.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/content_cao.cpp b/src/content_cao.cpp index ed4e3b713..1b8e84c8f 100644 --- a/src/content_cao.cpp +++ b/src/content_cao.cpp @@ -1260,8 +1260,18 @@ void GenericCAO::step(float dtime, ClientEnvironment *env) if (getParent() == NULL && 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 + 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; + } updateNodePos(); } } |