use super::{F32Matrix4x4, F32Vector3, F32Vector4};
#[repr(C, align(16))]
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct Segment {
pub origin: F32Vector4,
pub dir: F32Vector4,
}
#[repr(C, align(16))]
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct Ray {
pub origin: F32Vector4,
pub dir: F32Vector4,
}
#[repr(C, align(16))]
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct Line {
pub origin: F32Vector4,
pub dir: F32Vector4,
}
#[repr(C, align(16))]
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct Rectangle {
pub edge1: F32Vector4,
pub edge2: F32Vector4,
pub origin: F32Vector4,
}
#[repr(C, align(16))]
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct Plane {
pub plane: F32Vector4,
}
#[repr(C, align(16))]
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct Sphere {
pub sphere: F32Vector4,
}
#[repr(C, align(16))]
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct Aabb {
pub min: F32Vector4,
pub max: F32Vector4,
}
#[repr(C, align(16))]
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct Obb {
pub extents: F32Vector4,
pub xform: F32Matrix4x4,
}
#[repr(C, align(16))]
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct Lss {
pub segment: Segment,
pub radius: f32,
}
#[repr(C, align(16))]
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct Rss {
pub rectangle: Rectangle,
pub radius: f32,
}
#[repr(C, align(16))]
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct Triangle {
pub origin: F32Vector4,
pub edge1: F32Vector4,
pub edge2: F32Vector4,
}
#[repr(C, align(16))]
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct Triangle3 {
pub origin: F32Vector3,
pub edge1: F32Vector3,
pub edge2: F32Vector3,
}
#[repr(C, align(16))]
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct Frustum {
pub planes: [Plane; 6],
}