public void OnTick(SystemContext context, EntitiesTick tick) { var aList = context.Pool.ListPop <EntityId>(); match.GetEntities(aList); var filter = match.Filter; foreach (var entityId in aList) { var componentB = filter.ComponentsB[entityId.Index]; var componentC = filter.ComponentsC[entityId.Index]; var componentD = filter.ComponentsD[entityId.Index]; var componentE = filter.ComponentsE[entityId.Index]; componentC.b = componentC.b + entityId.Index; componentC.c = (int)(entityId.Index + componentC.b); componentD.d = componentD.d + componentC.c; componentE.e = componentB.a % componentD.d == 0; filter.ComponentsB[entityId.Index] = componentB; filter.ComponentsC[entityId.Index] = componentC; filter.ComponentsD[entityId.Index] = componentD; filter.ComponentsE[entityId.Index] = componentE; } context.Pool.ListPush(aList); }
public void Tick() { _trimManager.TrimEntities(); ++_tick; var tick = new EntitiesTick { Tick = _tick }; foreach (var system in _systems) { system.OnTick(_systemContext, tick); } }
public void OnTick(SystemContext context, EntitiesTick tick) { var aList = context.Pool.ListPop <EntityId>(); match.GetEntities(aList); var filter = match.Filter; foreach (var entityId in aList) { var component = filter.ComponentsB[entityId.Index]; component.a = entityId.Id; } context.Pool.ListPush(aList); }
public void OnTick(SystemContext context, EntitiesTick tick) { var filter = context.Matcher.CreateMatcher <Filter>(); var aList = context.Pool.ListPop <EntityId>(); filter.GetEntities(aList); int a = 0; foreach (var entityId in aList) { a += entityId.Id; } int b = a; context.Pool.ListPush(aList); }
public void OnTick(SystemContext context, EntitiesTick tick) { var aList = context.Pool.ListPop <EntityId>(); match.GetEntities(aList); var filter = match.Filter; foreach (var entityId in aList) { var componentB = filter.ComponentsB[entityId.Index]; var componentC = filter.ComponentsC[entityId.Index]; componentC.b = componentB.a / 10f + componentC.b; componentC.c = entityId.Index + entityId.Id; filter.ComponentsB[entityId.Index] = componentB; filter.ComponentsC[entityId.Index] = componentC; } context.Pool.ListPush(aList); }
public void OnTick(SystemContext context, EntitiesTick tick) { var e = context.EntityManager.GetEntities(); while (e.MoveNext()) { var id = e.Current; EComponent component; if (context.EntityManager.GetComponent <EComponent>(id, out component)) { component.X += 2; component.Y += 3; context.EntityManager.SetComponent <EComponent>(id, component); } } var entities = context.Pool.ListPop <EntityId>(); var entities_pre = context.Pool.ListPop <EntityId>(); var entities_init = context.Pool.ListPop <EntityId>(); var entities_post = context.Pool.ListPop <EntityId>(); var matcher = context.Matcher.CreateMatcher <MatchFilter>(); matcher.GetEntities(entities); _pre_matcher.GetEntities(entities_pre); _init_matcher.GetEntities(entities_init); _post_matcher.GetEntities(entities_post); var ents = new[] { entities, entities_pre, entities_init, entities_post }; foreach (var ent in ents) { foreach (var ent1 in ents) { Assert.True(ent.Count == ent1.Count); } } foreach (var ent in ents) { foreach (var ent1 in ents) { for (int i = 0; i < ent.Count; i++) { Assert.True(ent[i] == ent1[i]); } } } foreach (var entityId in entities) { var component = matcher.Filter.EComponents[entityId.Index]; if (!component.NoFirst) { Assert.True(component.Ticks == tick.Tick - 1); component.Ticks = tick.Tick; } component.NoFirst = true; matcher.Filter.EComponents[entityId.Index] = component; } context.Pool.ListPush(entities); context.Pool.ListPush(entities_pre); context.Pool.ListPush(entities_init); context.Pool.ListPush(entities_post); }