class_name OwniverseEffectsPlayer extends AudioStreamPlayer const EFFECT_COOLDOWN_MSEC := 2000 var enabled: bool = true var _effects: Dictionary = OwniverseAudioLoader.get_effects() var _last_played_msec: Dictionary = {} func set_enabled(value: bool) -> void: enabled = value stream_paused = not enabled func play_effect(effect_id: String) -> bool: if not enabled: return false if not _effects.has(effect_id): push_warning("Unknown sound effect: " + effect_id) return false if playing and stream == _effects[effect_id]: return false var now: int = Time.get_ticks_msec() if now - int(_last_played_msec.get(effect_id, -EFFECT_COOLDOWN_MSEC)) < EFFECT_COOLDOWN_MSEC: return false stream = _effects[effect_id] play() _last_played_msec[effect_id] = now return true