This repository has been archived on 2022-01-09. You can view files and clone it, but cannot push or open issues/pull-requests.
liblast/Game/Assets/Audio/WindSFX.gd

46 lines
1.5 KiB
GDScript

extends AudioStreamPlayer
#@export var minimum_speed: float
#@export var minimum_speed_hysteresis: float
#@export var maximum_speed: float
@export var speed_to_volume: Curve
@export var speed_to_cutoff: Curve
# for mapping the curves
@export var max_speed: float = 100.0
# for pausing playback to save resources and avoid quiet hum all the time
@export var min_speed: float = 2.0
@export var min_speed_hysteresis: float = 0.5
@onready var audio_bus = AudioServer.get_bus_index("WindSFX")
@onready var audio_filter : AudioEffectFilter = AudioServer.get_bus_effect(audio_bus,0)
# Called when the node enters the scene tree for the first time.
func _ready():
speed_to_volume.bake()
speed_to_cutoff.bake()
func _physics_process(delta):
# make sure the sound is only played if this is the current player
if get_multiplayer_authority() == get_tree().multiplayer.get_unique_id(): # if the player is looking through our eyes
if playing == false:
playing = true
else:
if playing == true:
playing = false
var speed = get_parent().get_parent().motion_velocity.length()
#print("speed: ", speed)
if speed > min_speed + min_speed_hysteresis / 2:
stream_paused = false
elif speed < min_speed - min_speed_hysteresis / 2:
stream_paused = true
volume_db = speed_to_volume.interpolate_baked(speed / max_speed)
#print(volume_db)
audio_filter.cutoff_hz = speed_to_cutoff.interpolate_baked(speed / max_speed) * 10 # cnvert to 0-1 kHz range
#print(audio_filter.cutoff_hz)