use bevy_ecs::component::Component;
use wgpu::{Buffer, Queue};
use crate::{prelude::InstanceRaw, structs::MeshType};
#[derive(Component)]
pub struct Prefab {
pub length: u32,
pub buffer: Buffer,
pub mesh_type: MeshType,
pub is_changed: bool, }
impl Prefab {
pub fn new(buffer: Buffer, mesh_type: MeshType, length: u32) -> Self {
Self {
buffer,
mesh_type,
length,
is_changed: false,
}
}
pub fn update_buffer(&mut self, instances: Vec<InstanceRaw>, queue: &Queue) {
queue.write_buffer(&self.buffer, 0, bytemuck::cast_slice(&instances));
self.length = instances.len() as u32;
}
}