extends SceneTree var checks: int = 0 var failures: int = 0 func _initialize() -> void: call_deferred("run") func check(condition: bool, message: String) -> void: checks += 1 if not condition: failures += 1 push_error(message) func run() -> void: var player := OwniverseEffectsPlayer.new() root.add_child(player) check(player.play_effect("select"), "Known effect starts") check(player.stream == player._effects.select and player.playing, "Selected effect is playing") var selected_stream: AudioStream = player.stream check(not player.play_effect("select"), "Playing effect is not restarted") check(player.stream == selected_stream and player.playing, "Rejected duplicate keeps current playback") player.stop() check(player.play_effect("select"), "Stopped effect can start again immediately") check(player.play_effect("blast"), "Different effect starts immediately") check(not player.play_effect("missing_effect"), "Unknown effect is rejected") check(player.stream == player._effects.blast, "Unknown effect does not interrupt playback") player.set_enabled(false) check(player.stream_paused, "Disabling effects pauses current playback") check(not player.play_effect("select") and player.stream == player._effects.blast, "Disabled player rejects new effects") player.set_enabled(true) check(not player.stream_paused, "Enabling effects resumes current playback") player.stop() player.stream = null player.free() await process_frame print("Effects player: %d checks, %d failures" % [checks, failures]) quit(0 if failures == 0 else 1)