示例#1
0
            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);
            }
示例#2
0
        public void Tick()
        {
            _trimManager.TrimEntities();

            ++_tick;
            var tick = new EntitiesTick
            {
                Tick = _tick
            };

            foreach (var system in _systems)
            {
                system.OnTick(_systemContext, tick);
            }
        }
示例#3
0
            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);
            }
示例#4
0
            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);
            }
示例#5
0
            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);
            }
示例#6
0
            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);
            }