pub struct Schedule { /* private fields */ }
Expand description
A collection of systems, and the metadata and executor needed to run them in a certain order under certain conditions.
Example
Here is an example of a Schedule
running a “Hello world” system:
fn hello_world() { println!("Hello world!") }
fn main() {
let mut world = World::new();
let mut schedule = Schedule::default();
schedule.add_system(hello_world);
schedule.run(&mut world);
}
A schedule can also run several systems in an ordered way:
fn system_one() { println!("System 1 works!") }
fn system_two() { println!("System 2 works!") }
fn system_three() { println!("System 3 works!") }
fn main() {
let mut world = World::new();
let mut schedule = Schedule::default();
schedule.add_systems((
system_two,
system_one.before(system_two),
system_three.after(system_two),
));
schedule.run(&mut world);
}
Implementations§
§impl Schedule
impl Schedule
pub fn set_default_base_set( &mut self, default_base_set: impl SystemSet ) -> &mut Schedule
pub fn add_system<M>(
&mut self,
system: impl IntoSystemConfig<M, SystemConfig>
) -> &mut Schedule
pub fn add_system<M>( &mut self, system: impl IntoSystemConfig<M, SystemConfig> ) -> &mut Schedule
Add a system to the schedule.
pub fn add_systems<M>(
&mut self,
systems: impl IntoSystemConfigs<M>
) -> &mut Schedule
pub fn add_systems<M>( &mut self, systems: impl IntoSystemConfigs<M> ) -> &mut Schedule
Add a collection of systems to the schedule.
pub fn configure_set(&mut self, set: impl IntoSystemSetConfig) -> &mut Schedule
pub fn configure_set(&mut self, set: impl IntoSystemSetConfig) -> &mut Schedule
Configures a system set in this schedule, adding it if it does not exist.
pub fn configure_sets(
&mut self,
sets: impl IntoSystemSetConfigs
) -> &mut Schedule
pub fn configure_sets( &mut self, sets: impl IntoSystemSetConfigs ) -> &mut Schedule
Configures a collection of system sets in this schedule, adding them if they does not exist.
pub fn set_build_settings(
&mut self,
settings: ScheduleBuildSettings
) -> &mut Schedule
pub fn set_build_settings( &mut self, settings: ScheduleBuildSettings ) -> &mut Schedule
Changes miscellaneous build settings.
pub fn get_executor_kind(&self) -> ExecutorKind
pub fn get_executor_kind(&self) -> ExecutorKind
Returns the schedule’s current execution strategy.
pub fn set_executor_kind(&mut self, executor: ExecutorKind) -> &mut Schedule
pub fn set_executor_kind(&mut self, executor: ExecutorKind) -> &mut Schedule
Sets the schedule’s execution strategy.
pub fn set_apply_final_buffers(
&mut self,
apply_final_buffers: bool
) -> &mut Schedule
pub fn set_apply_final_buffers( &mut self, apply_final_buffers: bool ) -> &mut Schedule
Set whether the schedule applies buffers on final time or not. This is a catchall
incase a system uses commands but was not explicitly ordered after a
apply_system_buffers
. By default this
setting is true, but may be disabled if needed.
pub fn run(&mut self, world: &mut World)
pub fn run(&mut self, world: &mut World)
Runs all systems in this schedule on the world
, using its current execution strategy.
pub fn initialize(&mut self, world: &mut World) -> Result<(), ScheduleBuildError>
pub fn initialize(&mut self, world: &mut World) -> Result<(), ScheduleBuildError>
Initializes any newly-added systems and conditions, rebuilds the executable schedule, and re-initializes the executor.
Moves all systems and run conditions out of the ScheduleGraph
.
pub fn graph(&self) -> &ScheduleGraph
pub fn graph(&self) -> &ScheduleGraph
Returns the ScheduleGraph
.
pub fn graph_mut(&mut self) -> &mut ScheduleGraph
pub fn graph_mut(&mut self) -> &mut ScheduleGraph
Returns a mutable reference to the ScheduleGraph
.
pub fn apply_system_buffers(&mut self, world: &mut World)
pub fn apply_system_buffers(&mut self, world: &mut World)
Directly applies any accumulated system buffers (like Commands
) to the world
.
Like always, system buffers are applied in the “topological sort order” of the schedule graph. As a result, buffers from one system are only guaranteed to be applied before those of other systems if there is an explicit system ordering between the two systems.
This is used in rendering to extract data from the main world, storing the data in system buffers, before applying their buffers in a different world.
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for Schedule
impl Send for Schedule
impl Sync for Schedule
impl Unpin for Schedule
impl !UnwindSafe for Schedule
Blanket Implementations§
§impl<T, U> AsBindGroupShaderType<U> for Twhere
U: ShaderType,
&'a T: for<'a> Into<U>,
impl<T, U> AsBindGroupShaderType<U> for Twhere U: ShaderType, &'a T: for<'a> Into<U>,
§fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist.§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere T: Default,
§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Self
using data from the given World