You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Yeet cursed option hack for relation commands + scope APIs.
Completely reworked Scope API to be more declarative. Not all previous functionality will be possible.
world.spawn(bundle).scope::<ChildOf>(|scope| {// x, y, z are implicitly `ChildOf` the last spawned entity
scope.add(x).add(y).add(z).scope::<ChildOf>(|scope| {// a, b are implicitly `ChildOf` the last spawned entity (z)
scope.add(a).add(b);});});
Improved macro hygiene. All property overrides are done through the aery attribute.
Available attributes: Counted, Recursive, Total, Poly (previously multi), Symmetric.
#[derive(Relation)]#[aery(Recursive)]structR;
Edge direction changes for all operations is now done through the Up modifier. All opereations use hosts by default. To use targets use Up.
Traversal are reworked to make sense with new operations. By default traversal visits each node & to get the old 2 arity ancestor descendant permutations use .track_self().
Rework how Joins work for consistent defaults + better composability:
Join on hosts not targets by default which is more common and makes for a consistent edge default direction. Use Up for targets.
Separate Joins from Traversals. Joins must be done through the Relations<R> world query Item. This adds some rightward drift but significantly reduces API complexity & allows joins to work on tracked query items.