public void EntityManagerAccessDuringTransactionThrows()
        {
            var job = new CreateEntityAddToListJob();

            job.entities = m_Manager.BeginExclusiveEntityTransaction();

            Assert.Throws <InvalidOperationException>(() => { m_Manager.CreateEntity(typeof(EcsTestData)); });
            Assert.Throws <InvalidOperationException>(() => { m_Manager.Exists(new Entity()); });
        }
예제 #2
0
        public void CreateEntitiesChainedJob()
        {
            var job = new CreateEntityAddToListJob();

            job.entities        = m_Manager.BeginExclusiveEntityTransaction();
            job.createdEntities = new NativeList <Entity>(0, Allocator.TempJob);

            m_Manager.ExclusiveEntityTransactionDependency = job.Schedule(m_Manager.ExclusiveEntityTransactionDependency);
            m_Manager.ExclusiveEntityTransactionDependency = job.Schedule(m_Manager.ExclusiveEntityTransactionDependency);

            m_Manager.EndExclusiveEntityTransaction();

            Assert.AreEqual(2, m_Group.CalculateLength());
            Assert.AreEqual(42, m_Group.GetComponentDataArray <EcsTestData>()[0].value);
            Assert.AreEqual(42, m_Group.GetComponentDataArray <EcsTestData>()[1].value);

            Assert.IsTrue(m_Manager.Exists(job.createdEntities[0]));
            Assert.IsTrue(m_Manager.Exists(job.createdEntities[1]));

            job.createdEntities.Dispose();
        }