using Godot; namespace Polonium.SkinManagers; public abstract partial class SkinPacker : Node2D { public Node2D SkinCollector { get; set; } protected Skin[] CollectedSkins => SkinCollector .GetChildren() .OfType() .ToArray(); private Vector2I BackingFrameCoords { get; set; } [Export] protected Vector2I FrameCoords { get => BackingFrameCoords; set { BackingFrameCoords = value; UpdateSkins(); } } private void UpdateSkins() { if (SkinCollector is not null) foreach(Skin skin in CollectedSkins) skin.FrameCoords = FrameCoords; } public AnimationPlayer SyncPlayer { get; set; } public override void _Ready() { base._Ready(); SyncPlayer = GetNode("AnimationPlayer"); SkinCollector = GetNode("SkinCollector"); } }