public sealed override void Update(float deltaTime, ECSWorld world) { if (!initialized) { afterUpdateCommands = new ConcurrentEntityCommandBuffer(world); query = GetQuery(); filter = GetComponentFilter(); initialized = true; } BeforeUpdate(deltaTime, world); afterUpdateCommands.PlaybackAfterUpdate(); var blocks = world.ComponentManager.GetBlocksNoSync(query, filter); var group = Jobs.StartNewGroup(query); foreach (BlockAccessor block in blocks) { ComponentProcessJob processJob = new ComponentProcessJob() { block = block, deltaTime = deltaTime, instance = this }; processJob.Schedule(group); } }
internal BlockAccessor(ComponentMemoryBlock block, ComponentQuery query) { this.block = block; this.query = query; this.preIncremented = false; length = block.Size; }
public sealed override void Update(float deltaTime, ECSWorld world) { if (!initialized) { afterUpdateCommands = new EntityCommandBuffer(world); query = GetQuery(); filter = GetComponentFilter(); initialized = true; } BeforeUpdate(deltaTime, world); var blocks = world.ComponentManager.GetBlocks(query, filter); foreach (BlockAccessor block in blocks) { ProcessBlock(deltaTime, block); } afterUpdateCommands.Playback(); AfterUpdate(deltaTime, world); }