Benjamin Saunders

Results 187 issues of Benjamin Saunders

`CommandBuffer` allows deferred execution of component insertion and removal. At present, it executes all insertions first, then all removals. This might not reflect the user's intention after calling e.g. `cmd.remove_one::();...

Column-major serialization is desirable for compressibility and efficient processing. hecs provides APIs sufficient to allow column-major serialization of the entire world by walking its archetypes, but is less helpful when...

The current `Bundle` traits are data-oriented, exposing properties of the bundle, and fairly complex as a result of that, and somewhat unstable besides. This ugliness is part of why they're...

enhancement

Sometimes it's useful to allow components to be inserted/removed and entities to be spawned/despawned in the course of iteration. This is impossible using a conventional interface, but could be achieved...

enhancement

Previously, some archetypes might be left permanently borrowed, making the World unusable.

This event handling pattern has came up a few times lately: ```rust for (entity, event) in events.drain(..) { if let Ok(components) = world.query_one::(entity) { handle_a(event, components); } if let Ok(components)...

enhancement

A uniquely-borrowing equivalent of `EntityRef`, analogous to std's `HashMap::entry`, might be useful for more ergonomic and very slightly more efficient repeated mutation of a single entity, saving redundant archetype lookups...

enhancement

It might be useful/fun to allow certain components to be stored per archetype in ways other than a flat array. For example, a `bool` component might be stored in a...

enhancement