module gui.component;

import ecs_utils.utils;

struct ComponentGUI
{
    const (char)* name;
    void* data;
    ushort component_id;
}

struct ComponentEditGUI
{
    const (char)* name;
    VariableGUI[] variables;
    uint used;
}

struct VariableGUI
{
    struct Int 
    {
        int min;
        int max;
    }

    struct Float
    {
        float min;
        float max;
    }

    struct Enum
    {
        const (char)[][] strings;
    }

    enum Type
    {
        byte_,
        ubyte_,
        short_,
        ushort_,
        int_,
        uint_,
        float_,
        enum_,
        color,
        vec2,
        ivec2,
        vec4,
        ivec4
    }
    Type type;
    const (char)* name;
    ushort offset;
    union 
    {
        Int int_;
        Float float_;
        Enum enum_;
    }
}
