use bevy::{
prelude::{GlobalTransform, Transform},
render::primitives::{Aabb, Frustum, Sphere},
};
use glam::Vec3;
use parry3d::bounding_volume::Aabb as AabbP;
pub fn intersects_parry(frustum: &Frustum, transform: Transform, aabb: &AabbP) -> bool {
let transform = GlobalTransform::from(transform);
let aabb = Aabb::from_min_max(Vec3::from(aabb.mins), Vec3::from(aabb.maxs));
intersects_bevy(frustum, &transform, &aabb)
}
pub fn intersects_bevy(frustum: &Frustum, transform: &GlobalTransform, aabb: &Aabb) -> bool {
let model_sphere = Sphere {
center: transform.transform_point(aabb.center.into()).into(),
radius: transform.radius_vec3a(aabb.half_extents),
};
frustum.intersects_sphere(&model_sphere, false)
&& frustum.intersects_obb(aabb, &transform.affine(), false, true)
}