bevy/crates/bevy_ecs/src
urben1680 1e47604506
Adding ScheduleGraph::contains_set (#16206)
# Objective

The schedule graph can easily confirm whether a set is contained or not.

This helps me in my personal project where I write an extension trait
for `Schedule` and I want to configure a specific set in its methods.
The set in question has a run condition though and I don't want to add
that condition to the same schedule as many times as the trait methods
are called. Since the non-pub set is unknown to the schedule until then,
a `contains_set` is sufficient.

It is probably trivial to add a method that returns an `Option<NodeId>`
as well but as I personally don't need it I did not add that. If it is
desired I can do so here though. It might be unneeded to have a
`contains_set` then because one could check `is_some` on the returned id
in that case.

An argument against that is that future changes may be easier if only a
`contains_set` needs to be ported.

## Solution

Added `ScheduleGraph::contains_set`.

## Testing

I put the below showcase code into a temporary unit test and it worked.
If wanted I add it as a test too but I did not see that other more
somewhat complicated methods have tests

---

## Showcase

```rs
#[derive(ScheduleLabel, Debug, Default, Clone, Copy, PartialEq, Eq, Hash)]
struct MySchedule;

#[derive(SystemSet, Debug, Default, Clone, Copy, PartialEq, Eq, Hash)]
struct MySet;

let mut schedule = Schedule::new(MySchedule);
assert_eq!(schedule.graph().contains_set(MySet), false);
schedule.configure_sets(MySet);
assert_eq!(schedule.graph().contains_set(MySet), true);
```
2024-11-03 16:16:24 +00:00
..
entity Use en-us locale for typos (#16037) 2024-10-20 18:55:17 +00:00
event Add World::get_resource_or_init as an alternative to World::get_resource_or_insert_with (#15758) 2024-10-09 20:56:26 +00:00
identifier Use en-us locale for typos (#16037) 2024-10-20 18:55:17 +00:00
observer Use en-us locale for typos (#16037) 2024-10-20 18:55:17 +00:00
query More #[doc(fake_variadic)] goodness (#16108) 2024-10-27 19:01:50 +00:00
reflect ReflectBundle::remove improvement (#16139) 2024-10-28 22:29:05 +00:00
schedule Adding ScheduleGraph::contains_set (#16206) 2024-11-03 16:16:24 +00:00
storage Add Trigger::components, which lists the component targets that were triggered (#15811) 2024-10-15 02:17:03 +00:00
system Fix fallible param notes (#16218) 2024-11-03 16:14:26 +00:00
world Use en-us locale for typos (#16037) 2024-10-20 18:55:17 +00:00
archetype.rs Add Trigger::components, which lists the component targets that were triggered (#15811) 2024-10-15 02:17:03 +00:00
batching.rs Fix *most* clippy lints (#15906) 2024-10-14 20:52:35 +00:00
bundle.rs Use en-us locale for typos (#16037) 2024-10-20 18:55:17 +00:00
change_detection.rs Migrate from Query::single and friends to Single (#15872) 2024-10-13 20:32:06 +00:00
component.rs Fix some duplicate words in docs/comments (#15980) 2024-10-20 01:03:27 +00:00
intern.rs Add core and alloc over std Lints (#15281) 2024-09-27 00:59:59 +00:00
label.rs Add core and alloc over std Lints (#15281) 2024-09-27 00:59:59 +00:00
lib.rs Add insert_batch and variations (#15702) 2024-10-13 18:14:16 +00:00
removal_detection.rs fix: add reflect to SceneInstanceReady and other observers/events (#16018) 2024-10-20 13:51:41 +00:00
traversal.rs Bubbling observers traversal should use query data (#15385) 2024-09-23 18:08:36 +00:00