query method

Set<WorldEntity> query(
  1. List<Iterable<WorldEntity> Function()> queries
)

Queries entities that satisfy all the provided conditions.

final results = query([
      withComponent<Name>,
      withComponent<Position>,
      withComponent<Velocity>,
    ])

Implementation

Set<WorldEntity> query(List<Iterable<WorldEntity> Function()> queries) {
  Set<WorldEntity>? result;
  for (final query in queries) {
    final t1 = query().toSet();
    result ??= t1;
    if (result != t1) {
      result = result.intersection(t1);
    }
  }
  return result ?? {};
}