extends SceneTree # Headless equivalent of build_dasher_pack.gd. # Run from CLI AFTER convert_dasher_animations_headless.gd: # godot --headless --path /home/beng/Godot/Projects/tekton-enet --script res://tools/build_dasher_pack_headless.gd # # Produces: res://assets/characters/animations/dasher-pack.tres const ANIM_DIR := "res://assets/characters/animations" const OUTPUT := "res://assets/characters/animations/dasher-pack.res" func _init() -> void: print("[Build] Headless run starting...") var combined := AnimationLibrary.new() var dir := DirAccess.open(ANIM_DIR) if not dir: push_error("[Build] Cannot open %s" % ANIM_DIR) quit(1) return var loaded: Array[String] = [] for fname in dir.get_files(): if not fname.begins_with("dasher_"): continue if not fname.ends_with(".res"): continue if fname == "dasher-pack.res": continue var path := "%s/%s" % [ANIM_DIR, fname] var res: Resource = load(path) if not res is AnimationLibrary: push_warning("[Build] %s is not an AnimationLibrary, skipping" % fname) continue var lib: AnimationLibrary = res for anim_name in lib.get_animation_list(): if combined.has_animation(anim_name): push_warning("[Build] Duplicate anim name '%s' in %s, skipping" % [anim_name, fname]) continue combined.add_animation(anim_name, lib.get_animation(anim_name)) loaded.append("%s/%s" % [fname, anim_name]) var err := ResourceSaver.save(combined, OUTPUT) if err != OK: push_error("[Build] ResourceSaver.save failed: %d" % err) quit(1) return print("[Build] Done. %d animation(s) written to %s" % [loaded.size(), OUTPUT]) for l in loaded: print(" - %s" % l) quit(0)