public void Tick(SystemManager systemManager, EntityManager entityManager) { entityManager.EntityArrays.Filter(_spec, array => { Span <ComponentType> componentTypes = _spec.ComponentTypes; Span <int> indices = stackalloc int[componentTypes.Length]; for (var k = 0; k < componentTypes.Length; k++) { indices[k] = array.Specification.GetComponentIndex(componentTypes[k]); } var data = stackalloc void *[componentTypes.Length]; for (var i = 0; i < array.AllChunks.Count; i++) { var chunk = array.AllChunks[i]; for (var k = 0; k < componentTypes.Length; k++) { data[k] = chunk.PackedArray[indices[k]].Memory; } _execute(_owner, chunk.Count, data); } }); }
public void Tick(SystemManager systemManager, EntityManager entityManager) { _logger.LogDebug(Name); ExecutionOrder = (*_execution)++; }
protected abstract void OnTick(SystemManager systemManager, EntityManager entityManager);