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

const Vector3_t = rl.Vector3;

pub const Entity_t = struct {
    // Node
        Name: []const u8 = undefined,
        Parent: ?*Entity_t = undefined,
        Children: ?std.ArrayList(Entity_t) = undefined,
    // Transform -> rl.Transform
        // Transform.Position -> rl.Vector3
        Px: f32,
        Py: f32,
        Pz: f32,
        // Transform.Rotation -> rl.Quaternion
        Rx: f32,
        Ry: f32,
        Rz: f32,
        Rw: f32,
        // Transform.Scale -> rl.Vector3
        Sx: f32,
        Sy: f32,
        Sz: f32,
    // Collider                 <------ Needs to be flattened for SOA
        boundingRadius: f32 = 1,
        boundingCenter: Vector3_t = Vector3_t{.x=0,.y=0,.z=0},
    // Mesh
        meshData: rl.Mesh = undefined,
        meshMaterial: rl.Material = undefined,
        lod_Distance: f32 = 1,
    // Flags
        flag1: bool = false,
        flag2: bool = false,
        flag3: bool = false,
        flag4: bool = false,
        flag5: bool = false,
        flag6: bool = false,
        flag7: bool = false,
        flag8: bool = false,
};