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(); }
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); }