const std = @import("std");
const rl = @import("raylib");

const Vector3_t = rl.Vector3;

pub const Collider_t = struct {
    boundingRadius: f32 = 1,
    boundingCenter: Vector3_t = Vector3_t{.x=0,.y=0,.z=0},
};

pub const StoredString_t = struct {
    data_ptr: *const u8 = undefined,
    length: usize = 0
};

pub const EntityFlags_t = packed struct(u8) {
    flag1: bool = false,
    flag2: bool = false,
    flag3: bool = false,
    flag4: bool = false,
    flag5: bool = false,
    flag6: bool = false,
    flag7: bool = false,
    flag8: bool = false,
};

pub const Mesh_t = struct {
    meshData: rl.Mesh = undefined,
    meshMaterial: rl.Material = undefined,
    lod_Distance: f32 = 1,
};

pub const Node_t = struct {
    Id: u32 = 1,
    Parent: ?*Node_t = undefined,
    Name: []const u8 = undefined,
    Children: ?std.ArrayList(Node_t) = undefined,
};

pub const Entity_t = struct {
    Transform: rl.Transform = undefined,
    Flags: EntityFlags_t = EntityFlags_t{},
    Collider: Collider_t = Collider_t{},
    Mesh: Mesh_t = Mesh_t{},
    Node: Node_t = Node_t{},
    RuntimeFlags: EntityFlags_t = EntityFlags_t{},
};