removeDependencyWhere method
void
removeDependencyWhere(
- bool test(
- Entity entity,
- Dependency<
Object> dependency
- Entity groupEntity = const DefaultEntity(),
Implementation
@pragma('vm:prefer-inline')
void removeDependencyWhere(
bool Function(Entity entity, Dependency dependency) test, {
Entity groupEntity = const DefaultEntity(),
}) {
final group = _state[groupEntity];
if (group == null) return;
final initialSize = group.length;
group.removeWhere((typeEntity, dependency) {
final drop = test(typeEntity, dependency);
if (drop) _detachFromTypeIndex(typeEntity, groupEntity);
return drop;
});
if (group.length == initialSize) return; // Nothing removed.
// Match the invariant established by removeDependencyExact /
// removeDependencyK: prune the group when it empties so `groupEntities`
// doesn't expose ghost keys, and notify listeners.
if (group.isEmpty) {
_state.remove(groupEntity);
}
_fireOnChange();
}