Client/Server Feature Split (#63)
This commit is contained in:
@@ -1,15 +1,10 @@
|
||||
use bevy::ecs::{
|
||||
bundle::Bundle,
|
||||
event::Event,
|
||||
resource::Resource,
|
||||
system::{Commands, EntityCommands},
|
||||
world::{EntityWorldMut, World},
|
||||
};
|
||||
use lightyear::prelude::Disconnected;
|
||||
|
||||
#[derive(Default, Resource)]
|
||||
pub struct IsServer;
|
||||
|
||||
pub trait CommandExt {
|
||||
fn trigger_server(&mut self, event: impl Event) -> &mut Self;
|
||||
}
|
||||
@@ -18,7 +13,7 @@ impl<'w, 's> CommandExt for Commands<'w, 's> {
|
||||
fn trigger_server(&mut self, event: impl Event) -> &mut Self {
|
||||
self.queue(|world: &mut World| {
|
||||
let mut query_state = world.query::<&Disconnected>();
|
||||
if world.contains_resource::<IsServer>() || !query_state.query(world).is_empty() {
|
||||
if cfg!(feature = "server") || !query_state.query(world).is_empty() {
|
||||
world.trigger(event);
|
||||
}
|
||||
});
|
||||
@@ -27,23 +22,14 @@ impl<'w, 's> CommandExt for Commands<'w, 's> {
|
||||
}
|
||||
|
||||
pub trait EntityCommandExt {
|
||||
fn insert_server(&mut self, bundle: impl Bundle) -> &mut Self;
|
||||
|
||||
fn trigger_server(&mut self, event: impl Event) -> &mut Self;
|
||||
}
|
||||
|
||||
impl<'w> EntityCommandExt for EntityCommands<'w> {
|
||||
fn insert_server(&mut self, bundle: impl Bundle) -> &mut Self {
|
||||
self.queue(|mut entity: EntityWorldMut| {
|
||||
if entity.world().contains_resource::<IsServer>() {
|
||||
entity.insert(bundle);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
fn trigger_server(&mut self, event: impl Event) -> &mut Self {
|
||||
self.queue(|mut entity: EntityWorldMut| {
|
||||
if entity.world().contains_resource::<IsServer>() {
|
||||
let mut query_state = entity.world_scope(|world| world.query::<&Disconnected>());
|
||||
if cfg!(feature = "server") || !query_state.query(entity.world()).is_empty() {
|
||||
entity.trigger(event);
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user