Remove last uses of string-labels (#5420)
# Objective * Related: #4341 * Remove all remaining uses of stringly-typed labels in the repo. Right now, it's just a bunch of tests and examples.
This commit is contained in:
parent
cbb884cb02
commit
697d297b55
@ -1,7 +1,7 @@
|
|||||||
use bevy_ecs::{
|
use bevy_ecs::{
|
||||||
component::Component,
|
component::Component,
|
||||||
prelude::{ParallelSystemDescriptorCoercion, Res, Resource, RunCriteriaDescriptorCoercion},
|
prelude::{ParallelSystemDescriptorCoercion, Res, Resource, RunCriteriaDescriptorCoercion},
|
||||||
schedule::{ShouldRun, Stage, SystemStage},
|
schedule::{RunCriteriaLabel, ShouldRun, Stage, SystemStage},
|
||||||
system::Query,
|
system::Query,
|
||||||
world::World,
|
world::World,
|
||||||
};
|
};
|
||||||
@ -11,6 +11,13 @@ fn run_stage(stage: &mut SystemStage, world: &mut World) {
|
|||||||
stage.run(world);
|
stage.run(world);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Labels for run criteria which either always return yes, or always return no.
|
||||||
|
#[derive(RunCriteriaLabel)]
|
||||||
|
enum Always {
|
||||||
|
Yes,
|
||||||
|
No,
|
||||||
|
}
|
||||||
|
|
||||||
pub fn run_criteria_yes(criterion: &mut Criterion) {
|
pub fn run_criteria_yes(criterion: &mut Criterion) {
|
||||||
let mut world = World::new();
|
let mut world = World::new();
|
||||||
let mut group = criterion.benchmark_group("run_criteria/yes");
|
let mut group = criterion.benchmark_group("run_criteria/yes");
|
||||||
@ -85,14 +92,15 @@ pub fn run_criteria_yes_with_labels(criterion: &mut Criterion) {
|
|||||||
}
|
}
|
||||||
for amount in 0..21 {
|
for amount in 0..21 {
|
||||||
let mut stage = SystemStage::parallel();
|
let mut stage = SystemStage::parallel();
|
||||||
stage.add_system(empty.with_run_criteria(always_yes.label("always yes")));
|
|
||||||
|
stage.add_system(empty.with_run_criteria(always_yes.label(Always::Yes)));
|
||||||
for _ in 0..amount {
|
for _ in 0..amount {
|
||||||
stage
|
stage
|
||||||
.add_system(empty.with_run_criteria("always yes"))
|
.add_system(empty.with_run_criteria(Always::Yes))
|
||||||
.add_system(empty.with_run_criteria("always yes"))
|
.add_system(empty.with_run_criteria(Always::Yes))
|
||||||
.add_system(empty.with_run_criteria("always yes"))
|
.add_system(empty.with_run_criteria(Always::Yes))
|
||||||
.add_system(empty.with_run_criteria("always yes"))
|
.add_system(empty.with_run_criteria(Always::Yes))
|
||||||
.add_system(empty.with_run_criteria("always yes"));
|
.add_system(empty.with_run_criteria(Always::Yes));
|
||||||
}
|
}
|
||||||
// run once to initialize systems
|
// run once to initialize systems
|
||||||
run_stage(&mut stage, &mut world);
|
run_stage(&mut stage, &mut world);
|
||||||
@ -116,14 +124,15 @@ pub fn run_criteria_no_with_labels(criterion: &mut Criterion) {
|
|||||||
}
|
}
|
||||||
for amount in 0..21 {
|
for amount in 0..21 {
|
||||||
let mut stage = SystemStage::parallel();
|
let mut stage = SystemStage::parallel();
|
||||||
stage.add_system(empty.with_run_criteria(always_no.label("always no")));
|
|
||||||
|
stage.add_system(empty.with_run_criteria(always_no.label(Always::No)));
|
||||||
for _ in 0..amount {
|
for _ in 0..amount {
|
||||||
stage
|
stage
|
||||||
.add_system(empty.with_run_criteria("always no"))
|
.add_system(empty.with_run_criteria(Always::No))
|
||||||
.add_system(empty.with_run_criteria("always no"))
|
.add_system(empty.with_run_criteria(Always::No))
|
||||||
.add_system(empty.with_run_criteria("always no"))
|
.add_system(empty.with_run_criteria(Always::No))
|
||||||
.add_system(empty.with_run_criteria("always no"))
|
.add_system(empty.with_run_criteria(Always::No))
|
||||||
.add_system(empty.with_run_criteria("always no"));
|
.add_system(empty.with_run_criteria(Always::No));
|
||||||
}
|
}
|
||||||
// run once to initialize systems
|
// run once to initialize systems
|
||||||
run_stage(&mut stage, &mut world);
|
run_stage(&mut stage, &mut world);
|
||||||
|
@ -151,7 +151,9 @@ impl App {
|
|||||||
/// # use bevy_ecs::prelude::*;
|
/// # use bevy_ecs::prelude::*;
|
||||||
/// # let mut app = App::new();
|
/// # let mut app = App::new();
|
||||||
/// #
|
/// #
|
||||||
/// app.add_stage("my_stage", SystemStage::parallel());
|
/// #[derive(StageLabel)]
|
||||||
|
/// struct MyStage;
|
||||||
|
/// app.add_stage(MyStage, SystemStage::parallel());
|
||||||
/// ```
|
/// ```
|
||||||
pub fn add_stage<S: Stage>(&mut self, label: impl StageLabel, stage: S) -> &mut Self {
|
pub fn add_stage<S: Stage>(&mut self, label: impl StageLabel, stage: S) -> &mut Self {
|
||||||
self.schedule.add_stage(label, stage);
|
self.schedule.add_stage(label, stage);
|
||||||
@ -168,7 +170,9 @@ impl App {
|
|||||||
/// # use bevy_ecs::prelude::*;
|
/// # use bevy_ecs::prelude::*;
|
||||||
/// # let mut app = App::new();
|
/// # let mut app = App::new();
|
||||||
/// #
|
/// #
|
||||||
/// app.add_stage_after(CoreStage::Update, "my_stage", SystemStage::parallel());
|
/// #[derive(StageLabel)]
|
||||||
|
/// struct MyStage;
|
||||||
|
/// app.add_stage_after(CoreStage::Update, MyStage, SystemStage::parallel());
|
||||||
/// ```
|
/// ```
|
||||||
pub fn add_stage_after<S: Stage>(
|
pub fn add_stage_after<S: Stage>(
|
||||||
&mut self,
|
&mut self,
|
||||||
@ -190,7 +194,9 @@ impl App {
|
|||||||
/// # use bevy_ecs::prelude::*;
|
/// # use bevy_ecs::prelude::*;
|
||||||
/// # let mut app = App::new();
|
/// # let mut app = App::new();
|
||||||
/// #
|
/// #
|
||||||
/// app.add_stage_before(CoreStage::Update, "my_stage", SystemStage::parallel());
|
/// #[derive(StageLabel)]
|
||||||
|
/// struct MyStage;
|
||||||
|
/// app.add_stage_before(CoreStage::Update, MyStage, SystemStage::parallel());
|
||||||
/// ```
|
/// ```
|
||||||
pub fn add_stage_before<S: Stage>(
|
pub fn add_stage_before<S: Stage>(
|
||||||
&mut self,
|
&mut self,
|
||||||
@ -212,7 +218,9 @@ impl App {
|
|||||||
/// # use bevy_ecs::prelude::*;
|
/// # use bevy_ecs::prelude::*;
|
||||||
/// # let mut app = App::new();
|
/// # let mut app = App::new();
|
||||||
/// #
|
/// #
|
||||||
/// app.add_startup_stage("my_startup_stage", SystemStage::parallel());
|
/// #[derive(StageLabel)]
|
||||||
|
/// struct MyStartupStage;
|
||||||
|
/// app.add_startup_stage(MyStartupStage, SystemStage::parallel());
|
||||||
/// ```
|
/// ```
|
||||||
pub fn add_startup_stage<S: Stage>(&mut self, label: impl StageLabel, stage: S) -> &mut Self {
|
pub fn add_startup_stage<S: Stage>(&mut self, label: impl StageLabel, stage: S) -> &mut Self {
|
||||||
self.schedule
|
self.schedule
|
||||||
@ -234,9 +242,11 @@ impl App {
|
|||||||
/// # use bevy_ecs::prelude::*;
|
/// # use bevy_ecs::prelude::*;
|
||||||
/// # let mut app = App::new();
|
/// # let mut app = App::new();
|
||||||
/// #
|
/// #
|
||||||
|
/// #[derive(StageLabel)]
|
||||||
|
/// struct MyStartupStage;
|
||||||
/// app.add_startup_stage_after(
|
/// app.add_startup_stage_after(
|
||||||
/// StartupStage::Startup,
|
/// StartupStage::Startup,
|
||||||
/// "my_startup_stage",
|
/// MyStartupStage,
|
||||||
/// SystemStage::parallel()
|
/// SystemStage::parallel()
|
||||||
/// );
|
/// );
|
||||||
/// ```
|
/// ```
|
||||||
@ -265,9 +275,11 @@ impl App {
|
|||||||
/// # use bevy_ecs::prelude::*;
|
/// # use bevy_ecs::prelude::*;
|
||||||
/// # let mut app = App::new();
|
/// # let mut app = App::new();
|
||||||
/// #
|
/// #
|
||||||
|
/// #[derive(StageLabel)]
|
||||||
|
/// struct MyStartupStage;
|
||||||
/// app.add_startup_stage_before(
|
/// app.add_startup_stage_before(
|
||||||
/// StartupStage::Startup,
|
/// StartupStage::Startup,
|
||||||
/// "my_startup_stage",
|
/// MyStartupStage,
|
||||||
/// SystemStage::parallel()
|
/// SystemStage::parallel()
|
||||||
/// );
|
/// );
|
||||||
/// ```
|
/// ```
|
||||||
|
@ -148,9 +148,13 @@ fn main() {
|
|||||||
// Create a new Schedule, which defines an execution strategy for Systems
|
// Create a new Schedule, which defines an execution strategy for Systems
|
||||||
let mut schedule = Schedule::default();
|
let mut schedule = Schedule::default();
|
||||||
|
|
||||||
|
// Define a unique public name for a new Stage.
|
||||||
|
#[derive(StageLabel)]
|
||||||
|
pub struct UpdateLabel;
|
||||||
|
|
||||||
// Add a Stage to our schedule. Each Stage in a schedule runs all of its systems
|
// Add a Stage to our schedule. Each Stage in a schedule runs all of its systems
|
||||||
// before moving on to the next Stage
|
// before moving on to the next Stage
|
||||||
schedule.add_stage("update", SystemStage::parallel()
|
schedule.add_stage(UpdateLabel, SystemStage::parallel()
|
||||||
.with_system(movement)
|
.with_system(movement)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -30,7 +30,9 @@ fn main() {
|
|||||||
update.add_system(remove_old_entities.after(SimulationSystem::Age));
|
update.add_system(remove_old_entities.after(SimulationSystem::Age));
|
||||||
update.add_system(print_changed_entities.after(SimulationSystem::Age));
|
update.add_system(print_changed_entities.after(SimulationSystem::Age));
|
||||||
// Add the Stage with our systems to the Schedule
|
// Add the Stage with our systems to the Schedule
|
||||||
schedule.add_stage("update", update);
|
#[derive(StageLabel)]
|
||||||
|
struct Update;
|
||||||
|
schedule.add_stage(Update, update);
|
||||||
|
|
||||||
// Simulate 10 frames in our world
|
// Simulate 10 frames in our world
|
||||||
for iteration in 1..=10 {
|
for iteration in 1..=10 {
|
||||||
|
@ -10,6 +10,12 @@ fn main() {
|
|||||||
// Create a schedule and a stage
|
// Create a schedule and a stage
|
||||||
let mut schedule = Schedule::default();
|
let mut schedule = Schedule::default();
|
||||||
|
|
||||||
|
#[derive(StageLabel)]
|
||||||
|
enum Stages {
|
||||||
|
First,
|
||||||
|
Second,
|
||||||
|
}
|
||||||
|
|
||||||
// Events need to be updated in every frame. This update should happen before we use
|
// Events need to be updated in every frame. This update should happen before we use
|
||||||
// the events. To guarantee this, we can let the update run in an earlier stage than our logic.
|
// the events. To guarantee this, we can let the update run in an earlier stage than our logic.
|
||||||
// Here we will use a stage called "first" that will always run it's systems before the Stage
|
// Here we will use a stage called "first" that will always run it's systems before the Stage
|
||||||
@ -17,7 +23,7 @@ fn main() {
|
|||||||
// sending and receiving events.
|
// sending and receiving events.
|
||||||
let mut first = SystemStage::parallel();
|
let mut first = SystemStage::parallel();
|
||||||
first.add_system(Events::<MyEvent>::update_system);
|
first.add_system(Events::<MyEvent>::update_system);
|
||||||
schedule.add_stage("first", first);
|
schedule.add_stage(Stages::First, first);
|
||||||
|
|
||||||
// Add systems sending and receiving events to a "second" Stage
|
// Add systems sending and receiving events to a "second" Stage
|
||||||
let mut second = SystemStage::parallel();
|
let mut second = SystemStage::parallel();
|
||||||
@ -25,7 +31,7 @@ fn main() {
|
|||||||
second.add_system(receiving_system.after(sending_system));
|
second.add_system(receiving_system.after(sending_system));
|
||||||
|
|
||||||
// Run the "second" Stage after the "first" Stage, so our Events always get updated before we use them
|
// Run the "second" Stage after the "first" Stage, so our Events always get updated before we use them
|
||||||
schedule.add_stage_after("first", "second", second);
|
schedule.add_stage_after(Stages::First, Stages::Second, second);
|
||||||
|
|
||||||
// Simulate 10 frames of our world
|
// Simulate 10 frames of our world
|
||||||
for iteration in 1..=10 {
|
for iteration in 1..=10 {
|
||||||
|
@ -18,7 +18,13 @@ fn main() {
|
|||||||
// Add systems to increase the counter and to print out the current value
|
// Add systems to increase the counter and to print out the current value
|
||||||
update.add_system(increase_counter);
|
update.add_system(increase_counter);
|
||||||
update.add_system(print_counter.after(increase_counter));
|
update.add_system(print_counter.after(increase_counter));
|
||||||
schedule.add_stage("update", update);
|
|
||||||
|
// Declare a unique label for the stage.
|
||||||
|
#[derive(StageLabel)]
|
||||||
|
struct Update;
|
||||||
|
|
||||||
|
// Add the stage to the schedule.
|
||||||
|
schedule.add_stage(Update, update);
|
||||||
|
|
||||||
for iteration in 1..=10 {
|
for iteration in 1..=10 {
|
||||||
println!("Simulating frame {}/10", iteration);
|
println!("Simulating frame {}/10", iteration);
|
||||||
|
@ -106,7 +106,11 @@ impl Schedule {
|
|||||||
/// # use bevy_ecs::prelude::*;
|
/// # use bevy_ecs::prelude::*;
|
||||||
/// #
|
/// #
|
||||||
/// # let mut schedule = Schedule::default();
|
/// # let mut schedule = Schedule::default();
|
||||||
/// schedule.add_stage("my_stage", SystemStage::parallel());
|
/// // Define a new label for the stage.
|
||||||
|
/// #[derive(StageLabel)]
|
||||||
|
/// struct MyStage;
|
||||||
|
/// // Add a stage with that label to the schedule.
|
||||||
|
/// schedule.add_stage(MyStage, SystemStage::parallel());
|
||||||
/// ```
|
/// ```
|
||||||
pub fn add_stage<S: Stage>(&mut self, label: impl StageLabel, stage: S) -> &mut Self {
|
pub fn add_stage<S: Stage>(&mut self, label: impl StageLabel, stage: S) -> &mut Self {
|
||||||
let label = label.as_label();
|
let label = label.as_label();
|
||||||
@ -124,8 +128,14 @@ impl Schedule {
|
|||||||
/// # use bevy_ecs::prelude::*;
|
/// # use bevy_ecs::prelude::*;
|
||||||
/// #
|
/// #
|
||||||
/// # let mut schedule = Schedule::default();
|
/// # let mut schedule = Schedule::default();
|
||||||
/// # schedule.add_stage("target_stage", SystemStage::parallel());
|
/// # #[derive(StageLabel)]
|
||||||
/// schedule.add_stage_after("target_stage", "my_stage", SystemStage::parallel());
|
/// # struct TargetStage;
|
||||||
|
/// # schedule.add_stage(TargetStage, SystemStage::parallel());
|
||||||
|
/// // Define a new label for the stage.
|
||||||
|
/// #[derive(StageLabel)]
|
||||||
|
/// struct NewStage;
|
||||||
|
/// // Add a stage with that label to the schedule.
|
||||||
|
/// schedule.add_stage_after(TargetStage, NewStage, SystemStage::parallel());
|
||||||
/// ```
|
/// ```
|
||||||
pub fn add_stage_after<S: Stage>(
|
pub fn add_stage_after<S: Stage>(
|
||||||
&mut self,
|
&mut self,
|
||||||
@ -157,9 +167,15 @@ impl Schedule {
|
|||||||
/// # use bevy_ecs::prelude::*;
|
/// # use bevy_ecs::prelude::*;
|
||||||
/// #
|
/// #
|
||||||
/// # let mut schedule = Schedule::default();
|
/// # let mut schedule = Schedule::default();
|
||||||
/// # schedule.add_stage("target_stage", SystemStage::parallel());
|
/// # #[derive(StageLabel)]
|
||||||
|
/// # struct TargetStage;
|
||||||
|
/// # schedule.add_stage(TargetStage, SystemStage::parallel());
|
||||||
/// #
|
/// #
|
||||||
/// schedule.add_stage_before("target_stage", "my_stage", SystemStage::parallel());
|
/// // Define a new, private label for the stage.
|
||||||
|
/// #[derive(StageLabel)]
|
||||||
|
/// struct NewStage;
|
||||||
|
/// // Add a stage with that label to the schedule.
|
||||||
|
/// schedule.add_stage_before(TargetStage, NewStage, SystemStage::parallel());
|
||||||
/// ```
|
/// ```
|
||||||
pub fn add_stage_before<S: Stage>(
|
pub fn add_stage_before<S: Stage>(
|
||||||
&mut self,
|
&mut self,
|
||||||
@ -192,9 +208,11 @@ impl Schedule {
|
|||||||
/// #
|
/// #
|
||||||
/// # fn my_system() {}
|
/// # fn my_system() {}
|
||||||
/// # let mut schedule = Schedule::default();
|
/// # let mut schedule = Schedule::default();
|
||||||
/// # schedule.add_stage("my_stage", SystemStage::parallel());
|
/// # #[derive(StageLabel)]
|
||||||
|
/// # struct MyStage;
|
||||||
|
/// # schedule.add_stage(MyStage, SystemStage::parallel());
|
||||||
/// #
|
/// #
|
||||||
/// schedule.add_system_to_stage("my_stage", my_system);
|
/// schedule.add_system_to_stage(MyStage, my_system);
|
||||||
/// ```
|
/// ```
|
||||||
pub fn add_system_to_stage<Params>(
|
pub fn add_system_to_stage<Params>(
|
||||||
&mut self,
|
&mut self,
|
||||||
@ -228,10 +246,12 @@ impl Schedule {
|
|||||||
/// #
|
/// #
|
||||||
/// # fn my_system() {}
|
/// # fn my_system() {}
|
||||||
/// # let mut schedule = Schedule::default();
|
/// # let mut schedule = Schedule::default();
|
||||||
/// # schedule.add_stage("my_stage", SystemStage::parallel());
|
/// # #[derive(StageLabel)]
|
||||||
|
/// # struct MyStage;
|
||||||
|
/// # schedule.add_stage(MyStage, SystemStage::parallel());
|
||||||
/// #
|
/// #
|
||||||
/// schedule.add_system_set_to_stage(
|
/// schedule.add_system_set_to_stage(
|
||||||
/// "my_stage",
|
/// MyStage,
|
||||||
/// SystemSet::new()
|
/// SystemSet::new()
|
||||||
/// .with_system(system_a)
|
/// .with_system(system_a)
|
||||||
/// .with_system(system_b)
|
/// .with_system(system_b)
|
||||||
@ -265,9 +285,11 @@ impl Schedule {
|
|||||||
/// # use bevy_ecs::prelude::*;
|
/// # use bevy_ecs::prelude::*;
|
||||||
/// #
|
/// #
|
||||||
/// # let mut schedule = Schedule::default();
|
/// # let mut schedule = Schedule::default();
|
||||||
/// # schedule.add_stage("my_stage", SystemStage::parallel());
|
/// # #[derive(StageLabel)]
|
||||||
|
/// # struct MyStage;
|
||||||
|
/// # schedule.add_stage(MyStage, SystemStage::parallel());
|
||||||
/// #
|
/// #
|
||||||
/// schedule.stage("my_stage", |stage: &mut SystemStage| {
|
/// schedule.stage(MyStage, |stage: &mut SystemStage| {
|
||||||
/// stage.add_system(my_system)
|
/// stage.add_system(my_system)
|
||||||
/// });
|
/// });
|
||||||
/// #
|
/// #
|
||||||
@ -301,9 +323,11 @@ impl Schedule {
|
|||||||
/// #
|
/// #
|
||||||
/// # fn my_system() {}
|
/// # fn my_system() {}
|
||||||
/// # let mut schedule = Schedule::default();
|
/// # let mut schedule = Schedule::default();
|
||||||
/// # schedule.add_stage("my_stage", SystemStage::parallel());
|
/// # #[derive(StageLabel)]
|
||||||
|
/// # struct MyStage;
|
||||||
|
/// # schedule.add_stage(MyStage, SystemStage::parallel());
|
||||||
/// #
|
/// #
|
||||||
/// let stage = schedule.get_stage::<SystemStage>("my_stage").unwrap();
|
/// let stage = schedule.get_stage::<SystemStage>(MyStage).unwrap();
|
||||||
/// ```
|
/// ```
|
||||||
pub fn get_stage<T: Stage>(&self, stage_label: impl StageLabel) -> Option<&T> {
|
pub fn get_stage<T: Stage>(&self, stage_label: impl StageLabel) -> Option<&T> {
|
||||||
let label = stage_label.as_label();
|
let label = stage_label.as_label();
|
||||||
@ -323,9 +347,11 @@ impl Schedule {
|
|||||||
/// #
|
/// #
|
||||||
/// # fn my_system() {}
|
/// # fn my_system() {}
|
||||||
/// # let mut schedule = Schedule::default();
|
/// # let mut schedule = Schedule::default();
|
||||||
/// # schedule.add_stage("my_stage", SystemStage::parallel());
|
/// # #[derive(StageLabel)]
|
||||||
|
/// # struct MyStage;
|
||||||
|
/// # schedule.add_stage(MyStage, SystemStage::parallel());
|
||||||
/// #
|
/// #
|
||||||
/// let stage = schedule.get_stage_mut::<SystemStage>("my_stage").unwrap();
|
/// let stage = schedule.get_stage_mut::<SystemStage>(MyStage).unwrap();
|
||||||
/// ```
|
/// ```
|
||||||
pub fn get_stage_mut<T: Stage>(&mut self, stage_label: impl StageLabel) -> Option<&mut T> {
|
pub fn get_stage_mut<T: Stage>(&mut self, stage_label: impl StageLabel) -> Option<&mut T> {
|
||||||
let label = stage_label.as_label();
|
let label = stage_label.as_label();
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -501,6 +501,12 @@ mod test {
|
|||||||
|
|
||||||
let mut stage = SystemStage::parallel();
|
let mut stage = SystemStage::parallel();
|
||||||
|
|
||||||
|
#[derive(SystemLabel)]
|
||||||
|
enum Inactive {
|
||||||
|
S4,
|
||||||
|
S5,
|
||||||
|
}
|
||||||
|
|
||||||
stage.add_system_set(State::<MyState>::get_driver());
|
stage.add_system_set(State::<MyState>::get_driver());
|
||||||
stage
|
stage
|
||||||
.add_system_set(
|
.add_system_set(
|
||||||
@ -548,7 +554,7 @@ mod test {
|
|||||||
},
|
},
|
||||||
))
|
))
|
||||||
.add_system_set(State::on_inactive_update_set(MyState::S4).with_system(
|
.add_system_set(State::on_inactive_update_set(MyState::S4).with_system(
|
||||||
(|mut r: ResMut<NameList>| r.0.push("inactive S4")).label("inactive s4"),
|
(|mut r: ResMut<NameList>| r.0.push("inactive S4")).label(Inactive::S4),
|
||||||
))
|
))
|
||||||
.add_system_set(
|
.add_system_set(
|
||||||
State::on_update_set(MyState::S5).with_system(
|
State::on_update_set(MyState::S5).with_system(
|
||||||
@ -556,14 +562,14 @@ mod test {
|
|||||||
r.0.push("update S5");
|
r.0.push("update S5");
|
||||||
s.overwrite_push(MyState::S6).unwrap();
|
s.overwrite_push(MyState::S6).unwrap();
|
||||||
})
|
})
|
||||||
.after("inactive s4"),
|
.after(Inactive::S4),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.add_system_set(
|
.add_system_set(
|
||||||
State::on_inactive_update_set(MyState::S5).with_system(
|
State::on_inactive_update_set(MyState::S5).with_system(
|
||||||
(|mut r: ResMut<NameList>| r.0.push("inactive S5"))
|
(|mut r: ResMut<NameList>| r.0.push("inactive S5"))
|
||||||
.label("inactive s5")
|
.label(Inactive::S5)
|
||||||
.after("inactive s4"),
|
.after(Inactive::S4),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.add_system_set(
|
.add_system_set(
|
||||||
@ -572,7 +578,7 @@ mod test {
|
|||||||
r.0.push("update S6");
|
r.0.push("update S6");
|
||||||
s.overwrite_push(MyState::Final).unwrap();
|
s.overwrite_push(MyState::Final).unwrap();
|
||||||
})
|
})
|
||||||
.after("inactive s5"),
|
.after(Inactive::S5),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.add_system_set(
|
.add_system_set(
|
||||||
|
@ -130,6 +130,8 @@ pub fn assert_is_exclusive_system<Params, SystemType>(
|
|||||||
mod tests {
|
mod tests {
|
||||||
use std::any::TypeId;
|
use std::any::TypeId;
|
||||||
|
|
||||||
|
use crate::prelude::StageLabel;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
self as bevy_ecs,
|
self as bevy_ecs,
|
||||||
archetype::{ArchetypeComponentId, Archetypes},
|
archetype::{ArchetypeComponentId, Archetypes},
|
||||||
@ -168,6 +170,9 @@ mod tests {
|
|||||||
#[derive(Component)]
|
#[derive(Component)]
|
||||||
struct W<T>(T);
|
struct W<T>(T);
|
||||||
|
|
||||||
|
#[derive(StageLabel)]
|
||||||
|
struct UpdateStage;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn simple_system() {
|
fn simple_system() {
|
||||||
fn sys(query: Query<&A>) {
|
fn sys(query: Query<&A>) {
|
||||||
@ -188,7 +193,7 @@ mod tests {
|
|||||||
let mut schedule = Schedule::default();
|
let mut schedule = Schedule::default();
|
||||||
let mut update = SystemStage::parallel();
|
let mut update = SystemStage::parallel();
|
||||||
update.add_system(system);
|
update.add_system(system);
|
||||||
schedule.add_stage("update", update);
|
schedule.add_stage(UpdateStage, update);
|
||||||
schedule.run(world);
|
schedule.run(world);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -310,12 +315,15 @@ mod tests {
|
|||||||
world.insert_resource(Added(0));
|
world.insert_resource(Added(0));
|
||||||
world.insert_resource(Changed(0));
|
world.insert_resource(Changed(0));
|
||||||
|
|
||||||
|
#[derive(StageLabel)]
|
||||||
|
struct ClearTrackers;
|
||||||
|
|
||||||
let mut schedule = Schedule::default();
|
let mut schedule = Schedule::default();
|
||||||
let mut update = SystemStage::parallel();
|
let mut update = SystemStage::parallel();
|
||||||
update.add_system(incr_e_on_flip);
|
update.add_system(incr_e_on_flip);
|
||||||
schedule.add_stage("update", update);
|
schedule.add_stage(UpdateStage, update);
|
||||||
schedule.add_stage(
|
schedule.add_stage(
|
||||||
"clear_trackers",
|
ClearTrackers,
|
||||||
SystemStage::single(World::clear_trackers.exclusive_system()),
|
SystemStage::single(World::clear_trackers.exclusive_system()),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -257,8 +257,10 @@ mod test {
|
|||||||
world.insert_resource(Count(0));
|
world.insert_resource(Count(0));
|
||||||
let mut schedule = Schedule::default();
|
let mut schedule = Schedule::default();
|
||||||
|
|
||||||
|
#[derive(StageLabel)]
|
||||||
|
struct Update;
|
||||||
schedule.add_stage(
|
schedule.add_stage(
|
||||||
"update",
|
Update,
|
||||||
SystemStage::parallel()
|
SystemStage::parallel()
|
||||||
.with_run_criteria(FixedTimestep::step(0.5).with_label(LABEL))
|
.with_run_criteria(FixedTimestep::step(0.5).with_label(LABEL))
|
||||||
.with_system(fixed_update),
|
.with_system(fixed_update),
|
||||||
|
@ -105,6 +105,9 @@ mod test {
|
|||||||
use crate::TransformBundle;
|
use crate::TransformBundle;
|
||||||
use bevy_hierarchy::{BuildChildren, BuildWorldChildren, Children, Parent};
|
use bevy_hierarchy::{BuildChildren, BuildWorldChildren, Children, Parent};
|
||||||
|
|
||||||
|
#[derive(StageLabel)]
|
||||||
|
struct Update;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn did_propagate() {
|
fn did_propagate() {
|
||||||
let mut world = World::default();
|
let mut world = World::default();
|
||||||
@ -113,7 +116,7 @@ mod test {
|
|||||||
update_stage.add_system(transform_propagate_system);
|
update_stage.add_system(transform_propagate_system);
|
||||||
|
|
||||||
let mut schedule = Schedule::default();
|
let mut schedule = Schedule::default();
|
||||||
schedule.add_stage("update", update_stage);
|
schedule.add_stage(Update, update_stage);
|
||||||
|
|
||||||
// Root entity
|
// Root entity
|
||||||
world
|
world
|
||||||
@ -156,7 +159,7 @@ mod test {
|
|||||||
update_stage.add_system(transform_propagate_system);
|
update_stage.add_system(transform_propagate_system);
|
||||||
|
|
||||||
let mut schedule = Schedule::default();
|
let mut schedule = Schedule::default();
|
||||||
schedule.add_stage("update", update_stage);
|
schedule.add_stage(Update, update_stage);
|
||||||
|
|
||||||
// Root entity
|
// Root entity
|
||||||
let mut queue = CommandQueue::default();
|
let mut queue = CommandQueue::default();
|
||||||
@ -198,7 +201,7 @@ mod test {
|
|||||||
update_stage.add_system(transform_propagate_system);
|
update_stage.add_system(transform_propagate_system);
|
||||||
|
|
||||||
let mut schedule = Schedule::default();
|
let mut schedule = Schedule::default();
|
||||||
schedule.add_stage("update", update_stage);
|
schedule.add_stage(Update, update_stage);
|
||||||
|
|
||||||
// Add parent entities
|
// Add parent entities
|
||||||
let mut children = Vec::new();
|
let mut children = Vec::new();
|
||||||
|
@ -124,7 +124,7 @@ fn update_clipping(
|
|||||||
mod tests {
|
mod tests {
|
||||||
use bevy_ecs::{
|
use bevy_ecs::{
|
||||||
component::Component,
|
component::Component,
|
||||||
schedule::{Schedule, Stage, SystemStage},
|
schedule::{Schedule, Stage, StageLabel, SystemStage},
|
||||||
system::{CommandQueue, Commands},
|
system::{CommandQueue, Commands},
|
||||||
world::World,
|
world::World,
|
||||||
};
|
};
|
||||||
@ -150,6 +150,9 @@ mod tests {
|
|||||||
(transform.translation.z / UI_Z_STEP).round() as u32
|
(transform.translation.z / UI_Z_STEP).round() as u32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(StageLabel)]
|
||||||
|
struct Update;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_ui_z_system() {
|
fn test_ui_z_system() {
|
||||||
let mut world = World::default();
|
let mut world = World::default();
|
||||||
@ -198,7 +201,7 @@ mod tests {
|
|||||||
let mut schedule = Schedule::default();
|
let mut schedule = Schedule::default();
|
||||||
let mut update_stage = SystemStage::parallel();
|
let mut update_stage = SystemStage::parallel();
|
||||||
update_stage.add_system(ui_z_system);
|
update_stage.add_system(ui_z_system);
|
||||||
schedule.add_stage("update", update_stage);
|
schedule.add_stage(Update, update_stage);
|
||||||
schedule.run(&mut world);
|
schedule.run(&mut world);
|
||||||
|
|
||||||
let mut actual_result = world
|
let mut actual_result = world
|
||||||
|
@ -40,6 +40,9 @@ struct PostPhysics;
|
|||||||
struct Done(bool);
|
struct Done(bool);
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
#[derive(RunCriteriaLabel)]
|
||||||
|
struct IsDone;
|
||||||
|
|
||||||
App::new()
|
App::new()
|
||||||
.add_plugins(DefaultPlugins)
|
.add_plugins(DefaultPlugins)
|
||||||
.init_resource::<Done>()
|
.init_resource::<Done>()
|
||||||
@ -70,8 +73,7 @@ fn main() {
|
|||||||
// This shows that we can modify existing run criteria results.
|
// This shows that we can modify existing run criteria results.
|
||||||
// Here we create a _not done_ criteria by piping the output of
|
// Here we create a _not done_ criteria by piping the output of
|
||||||
// the `is_done` system and inverting the output.
|
// the `is_done` system and inverting the output.
|
||||||
// Notice a string literal also works as a label.
|
.with_run_criteria(RunCriteria::pipe(IsDone, inverse))
|
||||||
.with_run_criteria(RunCriteria::pipe("is_done_label", inverse))
|
|
||||||
// `collision` and `sfx` are not ordered with respect to
|
// `collision` and `sfx` are not ordered with respect to
|
||||||
// each other, and may run in any order
|
// each other, and may run in any order
|
||||||
.with_system(collision)
|
.with_system(collision)
|
||||||
@ -80,7 +82,7 @@ fn main() {
|
|||||||
.add_system(
|
.add_system(
|
||||||
exit.after(PostPhysics)
|
exit.after(PostPhysics)
|
||||||
// Label the run criteria such that the `PostPhysics` set can reference it
|
// Label the run criteria such that the `PostPhysics` set can reference it
|
||||||
.with_run_criteria(is_done.label("is_done_label")),
|
.with_run_criteria(is_done.label(IsDone)),
|
||||||
)
|
)
|
||||||
.run();
|
.run();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user