evaera / matter

A modern ECS library for Roblox.
https://eryn.io/matter/
MIT License
144 stars 34 forks source link

QueryResult needs rework #85

Open Ukendio opened 8 months ago

Ukendio commented 8 months ago

Currently if you use any of the methods of QueryResult it is expected to be used immediately. An example of how this behaviour could be a restriction is that you can't create a Snapshot following a query that has the :without() filter. And consequently impedes the implementation of View.

There are a few potential solutions:

  1. Make the query lazily loaded, and have the user chain on .build() (or analogous) -This is not very ergonomic at all.
  2. Let without modify the expand and next methods on QueryResult and return a new iterator - It is not clear how we would approach this and what issues it would create.
  3. We add query modifiers and allow that to mark the set of components for which to include and exclude. For example for _ in world:query(With(...), Without(....)). - This is completely changing of the api surface and very unrealistic for us to implement.
Ukendio commented 8 months ago

Minimal implementation at done #90.