bevy/examples/ecs
Alice Cecile b34833f00c
Add an example teaching users about custom relationships (#17443)
# Objective

After #17398, Bevy now has relations! We don't teach users how to make /
work with these in the examples yet though, but we definitely should.

## Solution

- Add a simple abstract example that goes over defining, spawning,
traversing and removing a custom relations.
- ~~Add `Relationship` and `RelationshipTarget` to the prelude: the
trait methods are really helpful here.~~
- this causes subtle ambiguities with method names and weird compiler
errors. Not doing it here!
- Clean up related documentation that I referenced when writing this
example.

## Testing

`cargo run --example relationships`

## Notes to reviewers

1. Yes, I know that the cycle detection code could be more efficient. I
decided to reduce the caching to avoid distracting from the broader
point of "here's how you traverse relationships".
2. Instead of using an `App`, I've decide to use
`World::run_system_once` + system functions defined inside of `main` to
do something closer to literate programming.

---------

Co-authored-by: Joona Aalto <jondolf.dev@gmail.com>
Co-authored-by: MinerSebas <66798382+MinerSebas@users.noreply.github.com>
Co-authored-by: Kristoffer Søholm <k.soeholm@gmail.com>
2025-01-20 23:17:38 +00:00
..
change_detection.rs
component_hooks.rs
custom_query_param.rs
custom_schedule.rs
dynamic.rs Move #![warn(clippy::allow_attributes, clippy::allow_attributes_without_reason)] to the workspace Cargo.toml (#17374) 2025-01-15 01:14:58 +00:00
ecs_guide.rs
event.rs
fallible_params.rs Renamed members of ParamWarnPolicy to reflect new behaviour. (#17311) 2025-01-12 05:40:04 +00:00
fallible_systems.rs
fixed_timestep.rs
generic_system.rs Relationships (non-fragmenting, one-to-many) (#17398) 2025-01-18 22:20:30 +00:00
hierarchy.rs Add an example teaching users about custom relationships (#17443) 2025-01-20 23:17:38 +00:00
immutable_components.rs Move #![warn(clippy::allow_attributes, clippy::allow_attributes_without_reason)] to the workspace Cargo.toml (#17374) 2025-01-15 01:14:58 +00:00
iter_combinations.rs
nondeterministic_system_order.rs
observer_propagation.rs Parent -> ChildOf (#17427) 2025-01-20 22:13:29 +00:00
observers.rs Fix a missing .entity() -> .target() conversion in observers example (#17363) 2025-01-14 21:52:24 +00:00
one_shot_systems.rs
parallel_query.rs
relationships.rs Add an example teaching users about custom relationships (#17443) 2025-01-20 23:17:38 +00:00
removal_detection.rs
run_conditions.rs
send_and_receive_events.rs
startup_system.rs
system_closure.rs
system_param.rs
system_piping.rs
system_stepping.rs