Пример #1
0
        public void TagInheritanceWorksInTagQueries()
        {
            const int copyCount  = 5;
            var       gameObject = new GameObject();

            gameObject.AddComponent <BaseTag>();
            for (var i = 0; i < copyCount - 1; i++)
            {
                Object.Instantiate(gameObject);
            }

            var gameObject2 = new GameObject();

            gameObject2.AddComponent <DerivedTag>();
            for (var i = 0; i < copyCount - 1; i++)
            {
                Object.Instantiate(gameObject2);
            }

            var tagManager      = RandomizerTagManager.singleton;
            var queriedBaseTags = tagManager.Query <BaseTag>().ToArray();

            Assert.AreEqual(queriedBaseTags.Length, copyCount);

            var queriedDerivedTags = tagManager.Query <DerivedTag>().ToArray();

            Assert.AreEqual(queriedDerivedTags.Length, copyCount);

            queriedBaseTags = tagManager.Query <BaseTag>(true).ToArray();
            Assert.AreEqual(queriedBaseTags.Length, copyCount * 2);
        }
Пример #2
0
        public void TagQueryFindsCorrectNumberOfGameObjects()
        {
            const int copyCount  = 5;
            var       gameObject = new GameObject();

            gameObject.AddComponent <ExampleTag>();
            for (var i = 0; i < copyCount - 1; i++)
            {
                Object.Instantiate(gameObject);
            }

            var gameObject2 = new GameObject();

            gameObject2.AddComponent <ExampleTag2>();
            for (var i = 0; i < copyCount - 1; i++)
            {
                Object.Instantiate(gameObject2);
            }

            var tagManager     = RandomizerTagManager.singleton;
            var queriedObjects = tagManager.Query <ExampleTag>().ToArray();

            Assert.AreEqual(queriedObjects.Length, copyCount);

            queriedObjects = tagManager.Query <ExampleTag2>().ToArray();
            Assert.AreEqual(queriedObjects.Length, copyCount);

            queriedObjects = tagManager.Query <ExampleTag>(true).ToArray();
            Assert.AreEqual(queriedObjects.Length, copyCount * 2);
        }
Пример #3
0
        public void TestInstantiateAtActivated(bool isActivated)
        {
            GraphBuilder.VariableHandle handle = default;

            SetupTestGraphDefinitionMultipleFrames((b, _) =>
            {
                handle = b.BindVariableToDataIndex("TestEntity");

                var onUpdate = b.AddNode(new OnUpdate());
                var enabled  = b.AddNode(new ConstantBool {
                    Value = true
                });
                var instantiateAt          = b.AddNode(new InstantiateAt());
                var constantActivatedValue = b.AddNode(new ConstantBool {
                    Value = isActivated
                });

                b.BindVariableToInput(handle, instantiateAt.Prefab);
                b.CreateEdge(enabled.ValuePort, onUpdate.Enabled);
                b.CreateEdge(onUpdate.Output, instantiateAt.Input);
                b.CreateEdge(constantActivatedValue.ValuePort, instantiateAt.Activate);
            },
                                                   (manager, entity, index) =>
            {
                var instance = GetGraphInstance(entity);
                instance.WriteValueToDataSlot(handle.DataIndex, entity);
            },
                                                   (manager, entity, index) =>
            {
                var e = manager.GetAllEntities().Last();
                Assert.AreEqual(manager.GetEnabled(e), isActivated);
            });
        }
Пример #4
0
        public void Disposed_world_cleans_provider()
        {
            using (var mockWorld = MockWorld.Create(new MockWorld.Options()))
            {
                mockWorld.Step(world =>
                {
                    world.Connection.CreateEntity(entityId, GetTemplate());
                });

                Assert.AreEqual(1, ReferenceProvider <string> .Count);
            }

            Assert.AreEqual(0, ReferenceProvider <string> .Count);
        }
Пример #5
0
        public void TagQueryFindsCorrectNumberOfGameObjects()
        {
            const int copyCount  = 5;
            var       gameObject = new GameObject();

            gameObject.AddComponent <ExampleTag>();
            for (var i = 0; i < copyCount - 1; i++)
            {
                Object.Instantiate(gameObject);
            }

            var queriedObjects = m_Scenario.tagManager.Query <ExampleTag>().ToArray();

            Assert.AreEqual(queriedObjects.Length, copyCount);
        }
Пример #6
0
        public void Removed_component_disposes_reference()
        {
            var template = GetTemplate();

            using (var mockWorld = MockWorld.Create(new MockWorld.Options()))
            {
                mockWorld
                .Step(world =>
                {
                    world.Connection.CreateEntity(entityId, template);
                })
                .Step(world =>
                {
                    Assert.AreEqual(1, ReferenceProvider <string> .Count);
                    world.Connection.RemoveEntityAndComponents(entityId, template);
                });

                Assert.AreEqual(0, ReferenceProvider <string> .Count);
            }
        }
Пример #7
0
        public void TagQueriesPreserveInsertionOrder()
        {
            const int copyCount    = 5;
            const int destroyCount = 3;

            var testObj = new GameObject();

            testObj.AddComponent <BaseTag>();

            var testObjects = new List <GameObject> {
                testObj
            };

            for (var i = 0; i < copyCount - 1; i++)
            {
                testObjects.Add(Object.Instantiate(testObj));
            }

            for (var i = 0; i < destroyCount; i++)
            {
                Object.DestroyImmediate(testObjects[1]);
                testObjects.RemoveAt(1);
            }

            for (var i = 0; i < copyCount + destroyCount; i++)
            {
                testObjects.Add(Object.Instantiate(testObj));
            }

            var tagManager = RandomizerTagManager.singleton;
            var tags       = tagManager.Query <BaseTag>();
            var tagsArray  = tags.ToArray();

            var index = 0;

            foreach (var tag in tagsArray)
            {
                Assert.AreEqual(tag, testObjects[index++].GetComponent <BaseTag>());
            }
        }