From 0f631153e48af2e2c269f5839d71d20bf251aa0c Mon Sep 17 00:00:00 2001 From: Alexsandro Percy Date: Thu, 25 Jan 2024 19:37:13 -0300 Subject: [PATCH] improved sounds for copter --- lib_copter/entities.lua | 66 +++++++++++++++-------------------- sounds/airutils_heli_snd.ogg | Bin 0 -> 11599 bytes sounds/airutils_heli_snd.txt | 5 +++ 3 files changed, 34 insertions(+), 37 deletions(-) create mode 100755 sounds/airutils_heli_snd.ogg create mode 100644 sounds/airutils_heli_snd.txt diff --git a/lib_copter/entities.lua b/lib_copter/entities.lua index 513ee11..ce2b673 100644 --- a/lib_copter/entities.lua +++ b/lib_copter/entities.lua @@ -1,20 +1,44 @@ dofile(minetest.get_modpath("airutils") .. DIR_DELIM .. "lib_planes" .. DIR_DELIM .. "global_definitions.lua") -local function engine_set_sound_and_animation(self, is_flying) +function engineSoundPlay(self, increment) + increment = increment or 0.0 + --sound + if self.sound_handle then minetest.sound_stop(self.sound_handle) end + if self.object then + local pitch_adjust = 0.9 + increment + self.sound_handle = minetest.sound_play({name = self._engine_sound}, + {object = self.object, gain = 2.0, + pitch = pitch_adjust, + max_hear_distance = 32, + loop = true,}) + end +end + +local function engine_set_sound_and_animation(self, is_flying, newpitch, newroll) is_flying = is_flying or false --minetest.chat_send_all('test1 ' .. dump(self._engine_running) ) if self._engine_running or is_flying then + + if self._snd_last_roll ~= newroll or self._snd_last_pitch ~= newpitch then + local increment = 0.0 + self._snd_last_roll = newroll + self._snd_last_pitch = newpitch + if newroll ~= 0.0 or newpitch ~= 0.0 then increment = 0.1 else increment = 0.0 end + engineSoundPlay(self, increment) + end + self.object:set_animation_frame_speed(100) - if self.sound_handle == nil then + --[[if self.sound_handle == nil then self.sound_handle = minetest.sound_play({name = self._engine_sound}, {object = self.object, gain = 2.0, pitch = 1.0, max_hear_distance = 32, loop = true,}) - - end + end]]-- else if self.sound_handle then + self._snd_last_roll = nil + self._snd_last_pitch = nil minetest.sound_stop(self.sound_handle) self.sound_handle = nil self.object:set_animation_frame_speed(0) @@ -22,36 +46,6 @@ local function engine_set_sound_and_animation(self, is_flying) end end -local function ground_pitch(self, longit_speed, curr_pitch) - local newpitch = curr_pitch - if self._last_longit_speed == nil then self._last_longit_speed = 0 end - - -- Estado atual do sistema - if self._current_value == nil then self._current_value = 0 end -- Valor atual do sistema - if self._last_error == nil then self._last_error = 0 end -- Último erro registrado - - -- adjust pitch at ground - if math.abs(longit_speed) < self._tail_lift_max_speed then - local speed_range = self._tail_lift_max_speed - self._tail_lift_min_speed - local percentage = 1-((math.abs(longit_speed) - self._tail_lift_min_speed)/speed_range) - if percentage > 1 then percentage = 1 end - if percentage < 0 then percentage = 0 end - local angle = self._tail_angle * percentage - local rad_angle = math.rad(angle) - - if newpitch < rad_angle then newpitch = rad_angle end --ja aproveita o pitch atual se ja estiver cerrto - --[[self._current_value = curr_pitch - local kp = (longit_speed - self._tail_lift_min_speed)/10 - local output, last_error = airutils.pid_controller(self._current_value, rad_angle, self._last_error, self.dtime, kp) - self._last_error = last_error - newpitch = output]]-- - - if newpitch > math.rad(self._tail_angle) then newpitch = math.rad(self._tail_angle) end --não queremos arrastar o cauda no chão - end - - return newpitch -end - function airutils.logic_heli(self) local velocity = self.object:get_velocity() local curr_pos = self.object:get_pos() @@ -300,12 +294,10 @@ function airutils.logic_heli(self) ------------------------------------------------------ -- sound and animation ------------------------------------------------------ - engine_set_sound_and_animation(self, is_flying) + engine_set_sound_and_animation(self, is_flying, newpitch, newroll) ------------------------------------------------------ - --self.object:get_luaentity() --hack way to fix jitter on climb - --GAUGES --minetest.chat_send_all('rate '.. climb_rate) local climb_angle = airutils.get_gauge_angle(climb_rate) diff --git a/sounds/airutils_heli_snd.ogg b/sounds/airutils_heli_snd.ogg new file mode 100755 index 0000000000000000000000000000000000000000..00282b972cb64e112898921ca218ff75db484e4a GIT binary patch literal 11599 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