@tool class_name EntityLoader extends Node2D @export var entity_config: EntityConfig: set(value): entity_config = value value.changed.connect(_reload) # Load the entity config _reload() @onready var sprite2d = %AnimatedSprite2D as AnimatedSprite2D func _ready() -> void: if GlobalConfig.DEBUG: var label = DebugLabel.new() add_child(label) label.name = "DebugLabel" _reload() func _reload() -> void: if not entity_config or not sprite2d: return ## free unused children # TODO Load current state according to entity config var success := false # Add placeholder if state's missing if not success: _init_placeholder() else: sprite2d.scale = entity_config.scale func _init_placeholder(): if not entity_config.placeholder_size: return sprite2d.play("placeholder") var frames = sprite2d.sprite_frames as SpriteFrames var first_frame_size = frames.get_frame_texture("placeholder", 0).get_size() sprite2d.scale = entity_config.placeholder_size / first_frame_size print("scale:", sprite2d.scale) sprite2d.offset = entity_config.offset var label = get_node_or_null("DebugLabel") if label: label.text = ("[" + entity_config.entity_name + "]" + entity_config.entity_title) label.modulate = Color.GREEN