use std::fmt;
use *;
#[derive(Clone, Copy, PartialEq)]
pub struct Frustum {
pub center: Vector,
pub radius: f32,
pub wfov: f32,
pub hfov: f32,
pub xrot: f32,
pub yrot: f32,
}
impl fmt::Debug for Frustum {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "(radius: {:?})", self.radius)
}
}
impl Frustum {
pub fn new(center: Vector, radius: f32, xrot: f32, yrot: f32,
wfov: f32, hfov: f32) -> Frustum
{
Frustum { center, radius, xrot, yrot, wfov, hfov }
}
pub fn collide_bbox(&self, bbox: BBox) -> bool {
for i in bbox.all_points().iter() {
if (*i - self.center).length() <= self.radius {
return true;
}
}
false
}
pub fn collide_bcube(&self, bcube: BCube) -> bool {
for i in bcube.all_points().iter() {
if (*i - self.center).length() <= self.radius {
return true;
}
}
false
}
pub fn collide_point(&self, point: Vector) -> bool {
(point - self.center).length() <= self.radius
}
}