Check out the issue tracker for existing feature requests. Create a new issue if it does not already exist.
To get started with this project, try working on one of the issues labeled with
scope: S,
which involve fewer components and are easier to get into without prior familiarity with the codebase.
Issues labeled with k: * require specific domain knowledge not acquired by the average developer.
- Before committing, run the following checks:
cargo +nightly fmt -- --check
cargo clippy --all --tests -- -D warnings
cargo test --all- Use the structure of
foo.rs,foo/submodule.rs, etc. Do not usefoo/mod.rs. - Do not import
bevy::prelude::*, nor to import the re-exports frombevy::preludeif a direct import is possible. - Unit tests should be under a separate tests.rs file
and included from the parent with
#[cfg(test)] mod tests;. - Use
distance_cmpandmagnitude_cmpfor comparing vector norms. Do not use the exact or squared methods for comparisons alone. - Use
Vec::from([...])or[...].into()instead ofvec![...]for Vec literals. Large expressions in macros tend to be unfriendly to rust-analyzer.- For consistency, use
Vec::new()instead ofvec![]for empty Vecs.
- For consistency, use
- Use the
TryLogextension trait for getting components fromWorldorQueryif absence of the component would be a bug. Similarly, usetry_log/try_log_returnwhere suitable. TheNonebranch should result in termination of processing of the current entity, unless the system involves aggregation over all queried entities, in which case the aggregation result must not be used to avoid propagating errors.