🛠️ Moonshine Utilities
A collection of utilities for Bevy game engine.
Features
Expect<T>
A QueryData "decorator" which panics if it doesn't match.
This helps avoid silent failures in systems due to missing components:
use *;
use Expect;
;
;
HierarchyQuery
A convenient SystemParam for traversing and querying entity hierarchies:
use *;
use HierarchyQuery;
;
;
Some useful functions include:
fn parent(&self, entity: Entity) -> Option<Entity>fn has_parent(&self, entity: Entity) -> boolfn children(&self, entity: Entity) -> impl Iterator<Item = Entity>fn has_children(&self, entity: Entity) -> boolfn root(&self, entity: Entity) -> Entityfn is_root(&self, entity: Entity) -> boolfn ancestors(&self, entity: Entity) -> impl Iterator<Item = Entity>fn descendants(&self, entity: Entity) -> impl Iterator<Item = Entity>fn is_ancestor_of(&self, entity: Entity, descendant: Entity) -> boolfn is_descendant_of(&self, entity: Entity, ancestor: Entity) -> boolfn find_ancestor<T, F>(&self, entity: Entity, query: &Query<T, F>) -> Option<QueryItem<T>fn find_descendant<T, F>(&self, entity: Entity, query: &Query<T, F>) -> Option<QueryItem<T>
RunSystemLoop
A trait similar to RunSystemOnce which allows you to run a system loop for testing purposes:
use *;
use RunSystemLoop;
let mut world = new;
let outputs = world.run_system_loop;
assert_eq!;
assert!;
assert!;