Exemplo n.º 1
0
 static void SetComponentDataValueByMethod(ComponentDataFromEntity <EcsTestData> cdfe, Entity entity, int value)
 {
     cdfe[entity] = new EcsTestData()
     {
         value = value
     };
 }
Exemplo n.º 2
0
            public void Execute(ArchetypeChunk batchInChunk, int batchIndex, int indexOfFirstEntityInQuery)
            {
                var data = batchInChunk.GetNativeArray(EcsTestDataRW);

                data[0] = new EcsTestData {
                    value = 10
                };
            }
Exemplo n.º 3
0
            public void Execute(ArchetypeChunk batchInChunk, int batchIndex)
            {
                var data = batchInChunk.GetNativeArray(EcsTestDataRW);

                data[0] = new EcsTestData {
                    value = 10
                };
            }
Exemplo n.º 4
0
            public void Execute(ArchetypeChunk chunk, int chunkIndex, int firstEntityIndex)
            {
                var data = chunk.GetNativeArray(EcsTestDataRW);

                data[0] = new EcsTestData {
                    value = 10
                };
            }
Exemplo n.º 5
0
 public void GetComponentSetComponentThroughComponentDataFromEntity_SetsValue()
 {
     Entities
     .WithoutBurst()
     .ForEach((Entity entity, in EcsTestDataEntity tde) =>
     {
         var cdfeWrite     = GetComponentDataFromEntity <EcsTestData>(false);
         cdfeWrite[entity] = new EcsTestData()
         {
             value = GetComponentDataFromEntity <EcsTestData>(true)[tde.value1].value
         };
     }).Schedule();
     Dependency.Complete();
 }
        public void GetComponentGroup_WhenObjectWithMatchingComponentAndECSDataExists_ComponentArraysArePopulated()
        {
            var goe = m_GameObject.AddComponent <EcsTestProxy>().GetComponent <GameObjectEntity>();
            var expectedTestData = new EcsTestData(5);

            m_Manager.SetComponentData(goe.Entity, expectedTestData);

            var grp = EmptySystem.GetComponentGroup(typeof(Transform), typeof(EcsTestData));

            var transformArray = grp.GetComponentArray <Transform>();

            Assert.That(transformArray.ToArray(), Is.EqualTo(new[] { goe.transform }));
            var ecsDataArray = grp.GetComponentDataArray <EcsTestData>();

            Assert.That(ecsDataArray.Length, Is.EqualTo(1));
            Assert.That(ecsDataArray[0], Is.EqualTo(expectedTestData));
        }
Exemplo n.º 7
0
            public void GetComponentDataFromEntityInEntitiesForEachWithNestedCaptures_ComponentAccessWorks()
            {
                var outerCapture = 2;
                {
                    var innerCapture = 10;
                    Entities
                    .ForEach((Entity entity, in EcsTestDataEntity tde) =>
                    {
                        if (HasComponent <EcsTestDataEntity>(entity))
                        {
                            outerCapture = 10;
                        }

                        var cdfeRead      = GetComponentDataFromEntity <EcsTestData>(true);
                        var val           = cdfeRead[tde.value1].value;
                        var cdfeWrite     = GetComponentDataFromEntity <EcsTestData>(false);
                        cdfeWrite[entity] = new EcsTestData(val * innerCapture * outerCapture);
                    }).Run();
                }
            }
Exemplo n.º 8
0
            public void RemoveComponent_ModifiedEntity_VisibleFromInsideForEach()
            {
                EntityManager.AddComponentData(EntityManager.CreateEntity(), new EcsTestData(5));
                Entities
                .WithStructuralChanges()
                .ForEach((Entity e, ref EcsTestData testData) =>
                {
                    Assert.IsTrue(EntityManager.HasComponent <EcsTestData>(e));
                    EntityManager.RemoveComponent <EcsTestData>(e);
                    Assert.IsFalse(EntityManager.HasComponent <EcsTestData>(e));
                    EntityManager.AddComponentData(e, new EcsTestData(123));
                    Assert.IsTrue(EntityManager.HasComponent <EcsTestData>(e));
                    {
                        EcsTestData d = EntityManager.GetComponentData <EcsTestData>(e);
                        Assert.AreEqual(123, d.value);
                        testData.value = 123;
                    }

                    EntityManager.AddSharedComponentData(e, new EcsTestSharedComp(22));
                    Assert.IsTrue(EntityManager.HasComponent <EcsTestSharedComp>(e));
                    EntityManager.RemoveComponent <EcsTestSharedComp>(e);
                    Assert.IsFalse(EntityManager.HasComponent <EcsTestSharedComp>(e));

                    Entity c = EntityManager.CreateEntity();
                    EntityManager.AddComponentData(c, new EcsTestData(-22));
                    Assert.IsTrue(EntityManager.HasComponent <EcsTestData>(c));
                    EntityManager.RemoveComponent <EcsTestData>(c);
                    Assert.IsFalse(EntityManager.HasComponent <EcsTestData>(c));
                    EntityManager.AddComponentData(c, new EcsTestData(-123));

                    EntityManager.RemoveComponent <EcsTestData>(c);
                }).Run();

                using (var group = EntityManager.CreateEntityQuery(typeof(EcsTestData)))
                    using (var arr = group.ToComponentDataArray <EcsTestData>(Allocator.TempJob))
                    {
                        Assert.AreEqual(1, arr.Length); // (e)
                        Assert.AreEqual(123, arr[0].value);
                    }
            }
Exemplo n.º 9
0
            public void SetComponentThroughGetComponentDataFromEntity_SetsValue(Entity entity, ScheduleType scheduleType)
            {
                switch (scheduleType)
                {
                case ScheduleType.Run:
                    Entities.ForEach((ref EcsTestDataEntity tde) =>
                    {
                        var cdfe     = GetComponentDataFromEntity <EcsTestData>(false);
                        cdfe[entity] = new EcsTestData()
                        {
                            value = 2
                        };
                    }).Run();
                    break;

                case ScheduleType.Schedule:
                    Entities.ForEach((ref EcsTestDataEntity tde) =>
                    {
                        var cdfe     = GetComponentDataFromEntity <EcsTestData>(false);
                        cdfe[entity] = new EcsTestData()
                        {
                            value = 2
                        };
                    }).Schedule();
                    break;

                case ScheduleType.ScheduleParallel:
                    Entities.ForEach((ref EcsTestDataEntity tde) =>
                    {
                        var cdfe     = GetComponentDataFromEntity <EcsTestData>(false);
                        cdfe[entity] = new EcsTestData()
                        {
                            value = 2
                        };
                    }).ScheduleParallel();
                    break;
                }

                Dependency.Complete();
            }
Exemplo n.º 10
0
            public void Instantiate_HasGetComponent_VisibleFromInsideForEach()
            {
                EntityManager.AddComponentData(EntityManager.CreateEntity(), new EcsTestData(5));

                Entities
                .WithStructuralChanges()
                .ForEach((Entity e, ref EcsTestData testData) =>
                {
                    Assert.AreEqual(5, testData.value);
                    Assert.IsFalse(EntityManager.HasComponent <EcsTestData2>(e));
                    Entity newe1 = EntityManager.Instantiate(e);
                    EntityManager.AddComponentData(e, new EcsTestData2()
                    {
                        value0 = 1, value1 = 3
                    });
                    {
                        EcsTestData2 ed2 = EntityManager.GetComponentData <EcsTestData2>(e);
                        Assert.AreEqual(3, ed2.value1);
                        Assert.AreEqual(1, ed2.value0);
                    }

                    Entity deferred = EntityManager.CreateEntity();
                    EntityManager.AddComponentData(deferred, testData);
                    {
                        var ed = EntityManager.GetComponentData <EcsTestData>(deferred);
                        Assert.AreEqual(testData.value, ed.value);
                    }
                    Entity newe2 = EntityManager.Instantiate(e);

                    Assert.IsFalse(EntityManager.HasComponent <EcsTestData2>(newe1));
                    {
                        EcsTestData ed = EntityManager.GetComponentData <EcsTestData>(newe1);
                        Assert.AreEqual(5, ed.value);
                    }
                    Assert.IsTrue(EntityManager.HasComponent <EcsTestData2>(e));
                    {
                        EcsTestData2 ed2 = EntityManager.GetComponentData <EcsTestData2>(newe2);
                        Assert.AreEqual(3, ed2.value1);
                        Assert.AreEqual(1, ed2.value0);
                    }
                    Assert.IsTrue(EntityManager.HasComponent <EcsTestData>(newe1));
                    EntityManager.RemoveComponent <EcsTestData>(newe1);
                    Assert.IsFalse(EntityManager.HasComponent <EcsTestData>(newe1));
                }).Run();

                using (var allEntities = EntityManager.GetAllEntities())
                    Assert.AreEqual(4, allEntities.Length);

                using (var group = new ExtractTestDataFromEntityManager <EcsTestData>(EntityManager))
                {
                    Assert.AreEqual(3, group.Values.Length);
                    Assert.AreEqual(5, group.Values[0].value); // e
                    Assert.AreEqual(5, group.Values[1].value); // deferred
                    Assert.AreEqual(5, group.Values[2].value); // newe2
                }

                using (var group = new ExtractTestDataFromEntityManager <EcsTestData2>(EntityManager))
                {
                    Assert.AreEqual(2, group.Values.Length); // (e && newe2)
                    Assert.AreEqual(3, group.Values[0].value1);
                    Assert.AreEqual(1, group.Values[0].value0);
                    Assert.AreEqual(3, group.Values[1].value1);
                    Assert.AreEqual(1, group.Values[1].value0);
                }
            }