From 877f922145f7108cfaa4679dd69d351804831010 Mon Sep 17 00:00:00 2001 From: Alexsandro Percy Date: Thu, 3 Aug 2023 20:16:57 -0300 Subject: [PATCH] fixed flap animation for negative angles --- lib_planes/utilities.lua | 42 ++++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/lib_planes/utilities.lua b/lib_planes/utilities.lua index 3621e86..f124636 100644 --- a/lib_planes/utilities.lua +++ b/lib_planes/utilities.lua @@ -803,11 +803,22 @@ function airutils.flap_on(self) local flap_limit = 15 if self._flap_limit then flap_limit = self._flap_limit end self._wing_configuration = self._wing_angle_of_attack + self._wing_angle_extra_flaps - for i = 0,flap_limit do - minetest.after(0.05*i, function() - self.object:set_bone_position("flap.l", {x=0, y=0, z=0}, {x=-i, y=0, z=0}) - self.object:set_bone_position("flap.r", {x=0, y=0, z=0}, {x=-i, y=0, z=0}) - end) + if flap_limit >= 0 then + for i = 0,flap_limit do + minetest.after(0.02*i, function() + self.object:set_bone_position("flap.l", {x=0, y=0, z=0}, {x=-i, y=0, z=0}) + self.object:set_bone_position("flap.r", {x=0, y=0, z=0}, {x=-i, y=0, z=0}) + end) + end + else + for i = flap_limit,0 do + minetest.after(0.02*-i, function() + self.object:set_bone_position("flap.l", {x=0, y=0, z=0}, {x=-i, y=0, z=0}) + self.object:set_bone_position("flap.r", {x=0, y=0, z=0}, {x=-i, y=0, z=0}) + end) + end + --self.object:set_bone_position("flap.l", {x=0, y=0, z=0}, {x=-flap_limit, y=0, z=0}) + --self.object:set_bone_position("flap.r", {x=0, y=0, z=0}, {x=-flap_limit, y=0, z=0}) end end @@ -815,11 +826,22 @@ function airutils.flap_off(self) self._wing_configuration = self._wing_angle_of_attack local flap_limit = 15 if self._flap_limit then flap_limit = self._flap_limit end - for i = 0,flap_limit do - minetest.after(0.05*i, function() - self.object:set_bone_position("flap.l", {x=0, y=0, z=0}, {x=-flap_limit+i, y=0, z=0}) - self.object:set_bone_position("flap.r", {x=0, y=0, z=0}, {x=-flap_limit+i, y=0, z=0}) - end) + if flap_limit >= 0 then + for i = 0,flap_limit do + minetest.after(0.01*i, function() + self.object:set_bone_position("flap.l", {x=0, y=0, z=0}, {x=-flap_limit+i, y=0, z=0}) + self.object:set_bone_position("flap.r", {x=0, y=0, z=0}, {x=-flap_limit+i, y=0, z=0}) + end) + end + else + for i = flap_limit,0 do + minetest.after(0.01*-i, function() + self.object:set_bone_position("flap.l", {x=0, y=0, z=0}, {x=-flap_limit+i, y=0, z=0}) + self.object:set_bone_position("flap.r", {x=0, y=0, z=0}, {x=-flap_limit+i, y=0, z=0}) + end) + end + --self.object:set_bone_position("flap.l", {x=0, y=0, z=0}, {x=0, y=0, z=0}) + --self.object:set_bone_position("flap.r", {x=0, y=0, z=0}, {x=0, y=0, z=0}) end end