idk switching to bevy ecs again
This commit is contained in:
@@ -1,49 +1,36 @@
|
||||
use evenio::{
|
||||
event::{EventMut, GlobalEvent, Insert, ReceiverMut, Sender, Spawn},
|
||||
fetch::Single,
|
||||
use bevy_ecs::{
|
||||
query::{Changed, Or},
|
||||
system::{Query, Res},
|
||||
};
|
||||
use nalgebra::{Rotation3, Vector3};
|
||||
use nalgebra::Vector3;
|
||||
use ndarray::Axis;
|
||||
|
||||
use crate::{
|
||||
client::{
|
||||
component::RenderComponent,
|
||||
component::RenderResource,
|
||||
render::{CreateVoxelGrid, RenderMessage},
|
||||
},
|
||||
world::component::{Orientation, Pos, VoxelGrid},
|
||||
};
|
||||
|
||||
#[derive(GlobalEvent)]
|
||||
pub struct SpawnVoxelGrid {
|
||||
pub pos: Vector3<f32>,
|
||||
pub orientation: Rotation3<f32>,
|
||||
pub grid: VoxelGrid,
|
||||
}
|
||||
|
||||
pub fn handle_create_grid(
|
||||
r: ReceiverMut<SpawnVoxelGrid>,
|
||||
renderer: Single<&RenderComponent>,
|
||||
mut s: Sender<(Spawn, Insert<Pos>, Insert<Orientation>, Insert<VoxelGrid>)>,
|
||||
pub fn update_renderer(
|
||||
query: Query<
|
||||
(&Pos, &Orientation, &VoxelGrid),
|
||||
Or<(Changed<Pos>, Changed<Orientation>, Changed<VoxelGrid>)>,
|
||||
>,
|
||||
renderer: Res<RenderResource>,
|
||||
) {
|
||||
let SpawnVoxelGrid {
|
||||
pos,
|
||||
orientation,
|
||||
grid,
|
||||
} = EventMut::take(r.event);
|
||||
renderer
|
||||
.send(RenderMessage::CreateVoxelGrid(CreateVoxelGrid {
|
||||
pos,
|
||||
orientation,
|
||||
for (pos, orientation, grid) in query.iter() {
|
||||
println!("YAY");
|
||||
renderer.send(RenderMessage::CreateVoxelGrid(CreateVoxelGrid {
|
||||
pos: **pos,
|
||||
orientation: **orientation,
|
||||
dimensions: Vector3::new(
|
||||
grid.len_of(Axis(0)),
|
||||
grid.len_of(Axis(1)),
|
||||
grid.len_of(Axis(2)),
|
||||
),
|
||||
grid: grid.iter().cloned().collect(),
|
||||
}))
|
||||
.expect("render broke");
|
||||
let e = s.spawn();
|
||||
s.insert(e, Pos(pos));
|
||||
s.insert(e, Orientation(orientation));
|
||||
s.insert(e, grid);
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user