createEntity method

Entity createEntity(
  1. Iterable<Component> components
)

Implementation

Entity createEntity(Iterable<Component> components) {
  final archetype = _archetypeManager.getArchetype(
    components.map((c) => c.runtimeType),
  );
  final recycleBin = _recycleBin.putIfAbsent(archetype, () => {});
  final recycled = recycleBin.isEmpty ? null : recycleBin.first;

  final entity = recycled ?? _newEntity++;
  if (recycled != null) {
    recycleBin.remove(recycled);
    _entityStats?.incrementRecycled();
  }

  _creationQueue.add((entity, components));
  _entityStats?.updateCreationQueueSize(_creationQueue.length);
  return entity;
}