removeComponent<T extends Component> method

void removeComponent<T extends Component>(
  1. EntityID entityID
)

Implementation

void removeComponent<T extends Component>(EntityID entityID) {
  final record = _entityIndex[entityID];
  if (record == null) return;

  final componentID = _getOrCreateComponentID(T);
  final oldArchetype = record.archetype;
  final setHash = oldArchetype.setHash.copy();
  if (!setHash.remove(componentID)) return;

  if (setHash.isEmpty) {
    _removeEntityFromArchetype(entityID, oldArchetype, record.entityRow);
  } else {
    final archetype = _getOrCreateArchetype(setHash);
    _moveEntity(
      entityID,
      oldArchetype,
      record.entityRow,
      archetype,
      toRemove: {componentID},
    );
  }
}