use crate::CuboidInstances;
use bevy::{
prelude::*,
render::{
primitives::Aabb,
view::{ComputedVisibility, Visibility},
},
};
#[derive(Bundle)]
pub struct CuboidInstancesBundle {
pub cube_mesh: Handle<Mesh>,
pub instances: CuboidInstances,
pub aabb: Aabb,
pub transform: Transform,
pub global_transform: GlobalTransform,
pub visibility: Visibility,
pub computed_visibility: ComputedVisibility,
}
impl CuboidInstancesBundle {
pub fn new(instances: CuboidInstances, cube_mesh: Handle<Mesh>) -> Self {
let aabb = instances.aabb.clone();
Self {
instances,
cube_mesh,
aabb,
transform: Default::default(),
global_transform: Default::default(),
visibility: Default::default(),
computed_visibility: Default::default(),
}
}
}
#[derive(Clone, Debug)]
pub struct CubeMesh {
handle: Handle<Mesh>,
}
impl CubeMesh {
pub fn new(meshes: &mut Assets<Mesh>) -> Self {
let cube = shape::Box {
min_x: 0.0,
max_x: 1.0,
min_y: 0.0,
max_y: 1.0,
min_z: 0.0,
max_z: 1.0,
};
Self {
handle: meshes.add(Mesh::from(cube)),
}
}
pub fn handle(&self) -> &Handle<Mesh> {
&self.handle
}
}