Пример #1
0
        public void ComponentDataArrayCopy()
        {
            var entity = m_Manager.CreateEntity(typeof(EcsTestData));

            var entities = new NativeArray <Entity>(20000, Allocator.Persistent);

            m_Manager.Instantiate(entity, entities);

            var ecsArray = m_Manager.CreateComponentGroup(typeof(EcsTestData)).GetComponentDataArray <EcsTestData>();

            for (int i = 0; i < ecsArray.Length; i++)
            {
                ecsArray[i] = new EcsTestData(i);
            }

            var copied = new NativeArray <EcsTestData>(entities.Length - 11 + 1, Allocator.Persistent);

            ecsArray.CopyTo(copied, 11);

            for (int i = 0; i < copied.Length; i++)
            {
                if (copied[i].value != i)
                {
                    Assert.AreEqual(i + 11, copied[i].value);
                }
            }

            copied.Dispose();
            entities.Dispose();
        }
Пример #2
0
        public void ReadOnlyComponentDataArray()
        {
            var group = m_Manager.CreateComponentGroup(typeof(EcsTestData2), ComponentType.ReadOnly(typeof(EcsTestData)));

            var entity = m_Manager.CreateEntity(typeof(EcsTestData), typeof(EcsTestData2));

            m_Manager.SetComponentData(entity, new EcsTestData(42));

            // EcsTestData is read only
            var arr = group.GetComponentDataArray <EcsTestData>();

            Assert.AreEqual(1, arr.Length);
            Assert.AreEqual(42, arr[0].value);
            Assert.Throws <System.InvalidOperationException>(() => { arr[0] = new EcsTestData(0); });

            // EcsTestData2 can be written to
            var arr2 = group.GetComponentDataArray <EcsTestData2>();

            Assert.AreEqual(1, arr2.Length);
            arr2[0] = new EcsTestData2(55);
            Assert.AreEqual(55, arr2[0].value0);

            m_Manager.DestroyEntity(entity);
        }