
export type float3 = [number, number, number]
export type float4 = [number, number, number, number]

export type AxisAlignedBox = {
    min: float3,
    max: float3
}

export enum ColliderForm {
    box = "box",
    sphere = "sphere",
    capsule = "capsule",
    cylinder = "cylinder",
    mesh = "mesh",
}

export type Collider = {
    form: ColliderForm,
    size: float3,
    offset: float3,
    meshId: StringID
}

export type ResVersion = string
export type StringID = string

export type Time = number

export type Transform = {
    pos: float3,
    rot: float4,
    scale: float3
}

export type str16 = string
export type str32 = string
export type str80 = string
export type str128 = string
export type str256 = string
export type str320 = string

export enum PhysicsFilter {
    None = 0,

    // Reserved for Bullet physics
    Default       = 1,
    Static        = 2,
    Kinematic     = 4,
    Debris        = 8,
    SensorTrigger = 16,
    Character     = 32,

    // Gameplay
    SignalConnector = 64,

    All = -1
}

export type Signal = number

export const SIGNAL_MIN_VALUE: Signal = -100
export const SIGNAL_NULL_VALUE: Signal = 0
export const SIGNAL_MAX_VALUE: Signal = 100