extends Node3D ## Live preview stage for the FX library. Cycles through every registered effect on a loop against ## arena-ish lighting so Siim sees each one as it reads in-game. Open fx/effect_gallery.tscn and ## press Play, then edit any effect .tscn in the inspector and re-run to compare. See fx/README.md. const _CYCLE_SEC := 1.6 const _EFFECTS: Array[StringName] = [&"blood_burst", &"slam_dust", &"spark", &"hit_flash"] @onready var _label: Label = $UI/Label # Reached by path rather than the Fx global so the placeholder-seeder can compile and attach this # script headless (autoload globals aren't resolvable during an on-demand compile in a --script run). @onready var _fx: Node = get_node("/root/Fx") var _index := 0 func _ready() -> void: var timer := Timer.new() timer.wait_time = _CYCLE_SEC timer.autostart = true add_child(timer) timer.timeout.connect(_fire_next) _fire_next() func _fire_next() -> void: var effect := _EFFECTS[_index % _EFFECTS.size()] _index += 1 _label.text = "%s (%d/%d)" % [effect, (_index - 1) % _EFFECTS.size() + 1, _EFFECTS.size()] _fx.call("spawn", effect, global_transform.translated_local(Vector3(0.0, 0.25, 0.0)))