public void SetComponent <T0>(Entity entity, T0 component) where T0 : IComponent { for (int i = 0; i < chunks.Count; i++) { ref EntityChunk chunk = ref chunks[i]; for (int e = 0; e < chunk.Count; e++) { Entity currEntity = chunk.GetEntity(e); if (currEntity.id == entity.id) { chunk.SetComponent(e, component); chunk.UpdateVersion(version); return; } } }
private static void PerformChunkIteration(EntityWorld world, IQueryChunkIterator chunkIterator, EntityQuery query, bool checkVersion, uint version) { StructArray <EntityChunk> chunks = world.EntityManager.GetChunks(); bool generalWrite = query.IsGeneralWrite(); for (int i = 0; i < chunks.Count; i++) { ref EntityChunk chunk = ref chunks[i]; if (query.Matches(chunk.Archetype)) { if (checkVersion && !chunk.HasChanged(version)) { continue; } chunkIterator.Iteration(ref chunk); if (generalWrite || query.NeedsUpdate(ref chunk)) { chunk.UpdateVersion(world.EntityManager.Version); } } }