32 lines
1.3 KiB
GDScript
32 lines
1.3 KiB
GDScript
@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.")
|