public IEnumerator Transform_initialises_on_enable_and_resets_on_disable()
        {
            // Load up prefab that already has TransformSynchronization behaviour
            var testTransformPrefab = Resources.Load <GameObject>("TransformTestObject");

            createdGameObject = CreateAndLinkGameObject(EntityId, testTransformPrefab, Vector3.zero, Quaternion.identity);

            var transformSyncBehaviour = createdGameObject.GetComponent <Improbable.Gdk.TransformSynchronization.TransformSynchronization>();

            // TransformSync script applies strategies in a coroutine that yields at least one and up to two times.
            // We yield twice in the test to be extra sure that the strategies are applied and that `initialised` is set.
            yield return(null);

            yield return(null);

            Assert.IsTrue(transformSyncBehaviour.enabled);
            Assert.IsNotNull(GetPrivateField <EntityManager>(transformSyncBehaviour, "entityManager"));
            Assert.IsTrue(GetPrivateField <bool>(transformSyncBehaviour, "initialised"));

            ConnectionHandler.RemoveComponent(EntityId, TransformInternal.ComponentId);
            ReceiveSystem.Update();

            RequireLifecycleSystem.Update();

            Assert.IsFalse(transformSyncBehaviour.enabled);
            Assert.AreEqual(GetPrivateField <EntityManager>(transformSyncBehaviour, "entityManager"), default(EntityManager));
            Assert.IsFalse(GetPrivateField <bool>(transformSyncBehaviour, "initialised"));
        }
예제 #2
0
        public virtual void Setup()
        {
            var connectionBuilder = new MockConnectionHandlerBuilder();

            ConnectionHandler = connectionBuilder.ConnectionHandler;

            WorkerInWorld = WorkerInWorld
                            .CreateWorkerInWorldAsync(connectionBuilder, "TestWorkerType", new LoggingDispatcher(), Vector3.zero)
                            .Result;

            var world = WorkerInWorld.World;

            ReceiveSystem          = world.GetExistingSystem <SpatialOSReceiveSystem>();
            RequireLifecycleSystem = world.GetExistingSystem <RequireLifecycleSystem>();
            Linker = new EntityGameObjectLinker(world);
        }
예제 #3
0
        public void Setup()
        {
            var logDispatcher = new LoggingDispatcher();

            var connectionBuilder = new MockConnectionHandlerBuilder();

            connectionHandler = connectionBuilder.ConnectionHandler;
            workerInWorld     = WorkerInWorld
                                .CreateWorkerInWorldAsync(connectionBuilder, WorkerType, logDispatcher, Vector3.zero)
                                .Result;
            receiveSystem          = workerInWorld.World.GetExistingSystem <SpatialOSReceiveSystem>();
            requireLifecycleSystem = workerInWorld.World.GetExistingSystem <RequireLifecycleSystem>();

            var goInitSystem = workerInWorld.World
                               .CreateSystem <GameObjectInitializationSystem>(
                new GameObjectCreatorFromMetadata(WorkerType, Vector3.zero, logDispatcher), null);

            linker = goInitSystem.Linker;
        }
        public void Setup()
        {
            var connectionBuilder = new MockConnectionHandlerBuilder();

            connectionHandler = connectionBuilder.ConnectionHandler;

            workerInWorld = WorkerInWorld
                            .CreateWorkerInWorldAsync(connectionBuilder, "TestWorkerType", new LoggingDispatcher(), Vector3.zero)
                            .Result;

            var world = workerInWorld.World;

            receiveSystem          = world.GetExistingSystem <SpatialOSReceiveSystem>();
            requireLifecycleSystem = world.GetExistingSystem <RequireLifecycleSystem>();
            linker = new EntityGameObjectLinker(world);

            var template = new EntityTemplate();

            template.AddComponent(new Position.Snapshot(), "worker");
            connectionHandler.CreateEntity(EntityId, template);
            receiveSystem.Update();
        }
예제 #5
0
        public void Setup()
        {
            world             = new World("TestWorld");
            connectionHandler = new MockConnectionHandler();
            world.CreateManager <WorkerSystem>(connectionHandler, null,
                                               new LoggingDispatcher(), "TestWorkerType", Vector3.zero);
            receiveSystem = world.CreateManager <SpatialOSReceiveSystem>();
            world.GetOrCreateManager <ComponentUpdateSystem>();
            world.GetOrCreateManager <ComponentConstraintsCallbackSystem>();
            world.CreateManager <SubscriptionSystem>();
            world.CreateManager <CommandCallbackSystem>();
            world.CreateManager <ComponentCallbackSystem>();
            requireLifecycleSystem = world.CreateManager <RequireLifecycleSystem>();

            linker = new EntityGameObjectLinker(world);

            var template = new EntityTemplate();

            template.AddComponent(new Position.Snapshot(), "worker");
            connectionHandler.CreateEntity(EntityId, template);
            receiveSystem.Update();
        }