ComponentManager constructor
ComponentManager({
- Map<
Type, ComponentListFactory> componentArrayFactories = const {}, - required ArchetypeManagerInterface archetypeManagerFactory(),
Implementation
ComponentManager({
Map<Type, ComponentListFactory> componentArrayFactories = const {},
required ArchetypeManagerInterface Function(Iterable<Type>)
archetypeManagerFactory,
}) {
_componentArrayFactories = componentArrayFactories;
_archetypeManager = archetypeManagerFactory(_componentArrayFactories.keys);
final maxIndex = _componentArrayFactories.keys
.map((type) => _archetypeManager.getTypeIndex(type) ?? -1)
.fold<int>(-1, (max, index) => index > max ? index : max);
_indexedComponentArrays = List.filled(maxIndex + 1, null);
for (var entry in _componentArrayFactories.entries) {
final list = entry.value();
_componentArrays[entry.key] = list;
final index = _archetypeManager.getTypeIndex(entry.key);
if (index != null) {
_indexedComponentArrays[index] = list;
_typeIndexCache[entry.key] = index;
}
}
}