using System.Diagnostics;

namespace Quik.VertexGenerator
{
    /// <summary>
    /// Represents a GPU vertex.
    /// </summary>
    [DebuggerDisplay("XY={Position} RGBA={Color}, UV={TextureCoordinates}")]
    public struct QuikVertex
    {
        /// <summary>
        /// Position value.
        /// </summary>
        public QVec2  Position;

        /// <summary>
        /// Texture Coordinates.
        /// </summary>
        public QVec2  TextureCoordinates;

        /// <summary>
        /// Per vertex color value.
        /// </summary>
        public QColor Color;

        /// <summary>
        /// Per vertex depth index value.
        /// </summary>
        public int ZIndex;

        /// <summary>
        /// The texture layer to draw for 3d images.
        /// </summary>
        public float TextureLayer;

        public static int PositionOffset => 0;
        public static unsafe int TextureCoordinatesOffset => sizeof(QVec2);
        public static unsafe int ColorOffset => 2 * sizeof(QVec2);
        public static unsafe int ZIndexOffset => ColorOffset + sizeof(QColor);
        public static unsafe int TextureLayerOffset => ZIndexOffset + sizeof(int);
        public static unsafe int Stride => sizeof(QuikVertex);
    }
}