Benjamin Saunders
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...
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...
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)...
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...
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...