pub mod thread; use crate::world::component::{Pos, VoxelGridBundle}; use bevy_ecs::{entity::Entity, system::Resource}; use std::sync::mpsc::Sender; use thread::{ThreadChannel, ThreadHandle}; pub enum ServerMessage { Stop, LoadWorld, SpawnVoxelGrid(VoxelGridBundle), } pub enum ClientMessage { SpawnVoxelGrid(Entity, VoxelGridBundle), PosUpdate(Entity, Pos), } pub type ClientChannel = ThreadChannel; pub type ServerHandle = ThreadHandle; #[derive(Resource, Clone)] pub struct ClientSender(pub Sender); impl ClientSender { pub fn send(&self, msg: ClientMessage) { self.0.send(msg).expect("YOU HAVE FAILED THE MISSION"); } }