49 lines
1.6 KiB
GDScript
49 lines
1.6 KiB
GDScript
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)
|