StreamOverlay/tools/create_skins.gd

33 lines
1.3 KiB
GDScript3
Raw Permalink Normal View History

2026-02-23 18:38:03 -06:00
@tool
extends EditorScript
var template: SpriteFrames = load("res://ChatAvatars/CatSlimes/SpriteFrames/white.tres")
const assets_path: String = "res://ChatAvatars/CatSlimes/Assets/"
const skins_path: String = "res://ChatAvatars/CatSlimes/SpriteFrames/"
# Called when the script is executed (using File -> Run in Script Editor).
func _run() -> void:
var folders = DirAccess.get_directories_at(assets_path)
for folder in folders:
var skin := folder.to_snake_case()
if skin == "white": continue
print("Generating Skin %s..." % [skin])
var anims = template.get_animation_names()
var sf: SpriteFrames = SpriteFrames.new()
for anim in anims:
sf.add_animation(anim)
var anim_file_name = anim.capitalize()
anim_file_name = "".join(anim_file_name.split(" "))
var anim_file := assets_path.path_join(folder).path_join(anim_file_name) + ".png"
var img := load(anim_file)
for i in template.get_frame_count(anim):
var txtr: AtlasTexture = template.get_frame_texture(anim, i)
var frame: AtlasTexture = AtlasTexture.new()
frame.atlas = img
frame.region = txtr.region
sf.add_frame(anim, frame)
sf.remove_animation(&"default")
ResourceSaver.save(sf, skins_path.path_join(skin) + ".tres")
print("Saved to: %s" % [skins_path.path_join(skin) + ".tres"])
print ("Done.")