removeEntities method
Implementation
void removeEntities(Iterable<EntityID> entities) {
final Map<Archetype, List<int>> rows = {};
for (final e in entities) {
final record = _entityIndex.remove(e);
if (record == null) continue;
rows.putIfAbsent(record.archetype, () => []).add(record.entityRow);
}
for (final entry in rows.entries) {
final archetype = entry.key;
final rowsToRemove = entry.value..sort((a, b) => b.compareTo(a));
for (final row in rowsToRemove) {
for (final column in archetype.components) {
column.removeAt(row);
}
}
for (int i = 0; i < archetype.components[0].length; i++) {
final eid = archetype.components[0][i].entityID;
if (eid != -1) {
_entityIndex[eid]!.entityRow = i;
}
}
}
}