use crate::prelude::*;
use bevy::prelude::*;
#[derive(Debug, Clone, PartialEq, Eq, Hash, SystemSet)]
pub struct MessageIncomingSet;
#[derive(Debug, Clone, PartialEq, Eq, Hash, SystemSet)]
pub struct MessageOutgoingSet;
#[derive(Default, Component)]
pub struct Replicate {}
pub struct ReplicatePlugin;
impl Plugin for ReplicatePlugin {
fn build(&self, app: &mut App) {
app
.configure_sets(
Update,
MessageIncomingSet.before(MessageOutgoingSet),
)
.init_resource::<ReplicateRegistry>()
.init_resource::<MessageIncoming>()
.init_resource::<MessageOutgoing>()
.add_systems(
Update,
(
handle_incoming_commands.in_set(MessageIncomingSet),
handle_incoming_world.in_set(MessageIncomingSet),
clear_incoming.after(MessageIncomingSet),
),
);
app.world_mut().observe(outgoing_spawn);
app.world_mut().observe(outgoing_despawn);
#[cfg(feature = "beet_ecs")]
{
use beet_ecs::prelude::*;
app.configure_sets(
Update,
(
MessageIncomingSet.in_set(PreTickSet),
MessageOutgoingSet.in_set(PostTickSet),
),
);
}
}
}
fn clear_incoming(mut incoming: ResMut<MessageIncoming>) { incoming.clear(); }