module sbylib.graphics.geometry.geometry;

import sbylib.math;
import sbylib.wrapper.vulkan;

struct Geometry(Vertex, Index) {

    private Vertex[] _vertexList;

    void add(Vertex vertex) {
        this._vertexList ~= vertex;
    }

    inout(Vertex[]) vertexList() inout {
        return _vertexList;
    }

    static if (!is(Index == void)) {
        private Index[] _indexList;

        void select(Index index) {
            _indexList ~= index;
        }

        inout(Index[]) indexList() inout {
            return _indexList;
        }
    }

    enum hasIndex = !is(Index == void);

    PrimitiveTopology primitive;

    auto build() {
        return this;
    }
}