using Nerfed.Runtime.Graphics;
using System.Numerics;
using System.Runtime.InteropServices;

namespace Nerfed.Runtime.Gui;

[StructLayout(LayoutKind.Sequential)]
public struct Position2DTextureColorVertex(Vector2 position, Vector2 texcoord, Color color) : IVertexType
{
    public Vector2 Position = position;
    public Vector2 TexCoord = texcoord;
    public Color Color = color;

    public static VertexElementFormat[] Formats { get; } = new VertexElementFormat[3]
    {
        VertexElementFormat.Vector2,
        VertexElementFormat.Vector2,
        VertexElementFormat.Color
    };

    public static uint[] Offsets { get; } = new uint[3]
    {
        0,
        8,
        16
    };
}

[StructLayout(LayoutKind.Sequential)]
public struct TransformVertexUniform(Matrix4x4 projectionMatrix)
{
    public Matrix4x4 ProjectionMatrix = projectionMatrix;
}