From 80490b4c113d1d478d0b4c9fc10556cf0eadc0b8 Mon Sep 17 00:00:00 2001 From: cora Date: Fri, 11 Nov 2022 00:22:17 +0100 Subject: [PATCH] Move smooth rotation to separate function --- mods/ENTITIES/mcl_mobs/api.lua | 49 +---------------------------- mods/ENTITIES/mcl_mobs/movement.lua | 48 ++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 48 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 13257bff1..4328bd20f 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -431,58 +431,11 @@ function mob_class:on_step(dtime) --Mob following code. self:follow_flop() - --set animation speed relitive to velocity self:set_animation_speed() - - -- smooth rotation by ThomasMonroe314 - if self._turn_to then - self:set_yaw( self._turn_to, .1) - end - - if self.delay and self.delay > 0 then - - local yaw = self.object:get_yaw() or 0 - - if self.delay == 1 then - yaw = self.target_yaw - else - local dif = math.abs(yaw - self.target_yaw) - - if yaw > self.target_yaw then - - if dif > math.pi then - dif = 2 * math.pi - dif -- need to add - yaw = yaw + dif / self.delay - else - yaw = yaw - dif / self.delay -- need to subtract - end - - elseif yaw < self.target_yaw then - - if dif >math.pi then - dif = 2 * math.pi - dif - yaw = yaw - dif / self.delay -- need to subtract - else - yaw = yaw + dif / self.delay -- need to add - end - end - - if yaw > (math.pi * 2) then yaw = yaw - (math.pi * 2) end - if yaw < 0 then yaw = yaw + (math.pi * 2) end - end - - self.delay = self.delay - 1 - if self.shaking then - yaw = yaw + (math.random() * 2 - 1) * 5 * dtime - end - self.object:set_yaw(yaw) - self:update_roll() - end - -- end rotation + self:check_smooth_rotation() self:check_head_swivel() - -- run custom function (defined in mob lua file) if self.do_custom then diff --git a/mods/ENTITIES/mcl_mobs/movement.lua b/mods/ENTITIES/mcl_mobs/movement.lua index adeaae683..caf1ccca3 100644 --- a/mods/ENTITIES/mcl_mobs/movement.lua +++ b/mods/ENTITIES/mcl_mobs/movement.lua @@ -1348,3 +1348,51 @@ function mob_class:do_states(dtime) end end end + +function mob_class:check_smooth_rotation() + -- smooth rotation by ThomasMonroe314 + if self._turn_to then + self:set_yaw( self._turn_to, .1) + end + + if self.delay and self.delay > 0 then + + local yaw = self.object:get_yaw() or 0 + + if self.delay == 1 then + yaw = self.target_yaw + else + local dif = math.abs(yaw - self.target_yaw) + + if yaw > self.target_yaw then + + if dif > math.pi then + dif = 2 * math.pi - dif -- need to add + yaw = yaw + dif / self.delay + else + yaw = yaw - dif / self.delay -- need to subtract + end + + elseif yaw < self.target_yaw then + + if dif >math.pi then + dif = 2 * math.pi - dif + yaw = yaw - dif / self.delay -- need to subtract + else + yaw = yaw + dif / self.delay -- need to add + end + end + + if yaw > (math.pi * 2) then yaw = yaw - (math.pi * 2) end + if yaw < 0 then yaw = yaw + (math.pi * 2) end + end + + self.delay = self.delay - 1 + if self.shaking then + yaw = yaw + (math.random() * 2 - 1) * 5 * dtime + end + self.object:set_yaw(yaw) + self:update_roll() + end + -- end rotation +end