43 lines
946 B
C#
43 lines
946 B
C#
using Godot;
|
|
|
|
namespace Polonium.SkinManagers;
|
|
|
|
public abstract partial class SkinPacker : Node2D
|
|
{
|
|
public Node2D SkinCollector { get; set; }
|
|
protected Skin[] CollectedSkins => SkinCollector
|
|
.GetChildren()
|
|
.OfType<Skin>()
|
|
.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>("AnimationPlayer");
|
|
SkinCollector = GetNode<Node2D>("SkinCollector");
|
|
}
|
|
|
|
|
|
} |