diff --git a/crates/bevy_remote/src/lib.rs b/crates/bevy_remote/src/lib.rs index 9dab9fc4f1..576ee7dbf1 100644 --- a/crates/bevy_remote/src/lib.rs +++ b/crates/bevy_remote/src/lib.rs @@ -305,7 +305,7 @@ use bevy_app::{prelude::*, MainScheduleOrder}; use bevy_derive::{Deref, DerefMut}; use bevy_ecs::{ entity::Entity, - schedule::{IntoSystemConfigs, ScheduleLabel}, + schedule::{IntoSystemConfigs, IntoSystemSetConfigs, ScheduleLabel, SystemSet}, system::{Commands, In, IntoSystem, ResMut, Resource, System, SystemId}, world::World, }; @@ -442,21 +442,36 @@ impl Plugin for RemotePlugin { app.insert_resource(remote_methods) .init_resource::() .add_systems(PreStartup, setup_mailbox_channel) + .configure_sets( + RemoteLast, + (RemoteSet::ProcessRequests, RemoteSet::Cleanup).chain(), + ) .add_systems( RemoteLast, ( - process_remote_requests, - process_ongoing_watching_requests, - remove_closed_watching_requests, - ) - .chain(), + (process_remote_requests, process_ongoing_watching_requests) + .chain() + .in_set(RemoteSet::ProcessRequests), + remove_closed_watching_requests.in_set(RemoteSet::Cleanup), + ), ); } } /// Schedule that contains all systems to process Bevy Remote Protocol requests #[derive(ScheduleLabel, Clone, Debug, PartialEq, Eq, Hash)] -struct RemoteLast; +pub struct RemoteLast; + +/// The systems sets of the [`RemoteLast`] schedule. +/// +/// These can be useful for ordering. +#[derive(Debug, Hash, PartialEq, Eq, Clone, SystemSet)] +pub enum RemoteSet { + /// Processing of remote requests. + ProcessRequests, + /// Cleanup (remove closed watchers etc) + Cleanup, +} /// A type to hold the allowed types of systems to be used as method handlers. #[derive(Debug)]