using System.Numerics;
using KamiToolKit.Classes;
namespace KamiToolKit.Nodes;
///
/// A simple image node that automatically creates a single , and exposes helpers to modify that
/// part.
///
/// This node is not intended to be used with multiple 's.
public unsafe class SimpleImageNode : ImageNode {
public SimpleImageNode() {
PartsList.Add(new Part());
}
public float U {
get => PartsList[0]->U;
set => PartsList[0]->U = (ushort)value;
}
public float V {
get => PartsList[0]->V;
set => PartsList[0]->V = (ushort)value;
}
public Vector2 TextureCoordinates {
get => new(U, V);
set {
U = value.X;
V = value.Y;
}
}
public float TextureHeight {
get => PartsList[0]->Height;
set => PartsList[0]->Height = (ushort)value;
}
public float TextureWidth {
get => PartsList[0]->Width;
set => PartsList[0]->Width = (ushort)value;
}
public Vector2 TextureSize {
get => new(TextureWidth, TextureHeight);
set {
TextureWidth = value.X;
TextureHeight = value.Y;
}
}
public virtual string TexturePath {
get => PartsList[0]->LoadedPath;
set => PartsList[0]->LoadTexture(value);
}
public Vector2 ActualTextureSize => PartsList[0]->LoadedTextureSize;
public void LoadTexture(string path, bool resolveTheme = true)
=> PartsList[0]->LoadTexture(path, resolveTheme);
public void LoadIcon(uint iconId)
=> PartsList[0]->LoadIcon(iconId);
}