Ejemplo n.º 1
0
    private void Start()
    {
        m_transform = this.transform;

        // reset the offset distance be 1/3 of the distance from the min to max
        if (m_settings != null)
        {
            m_settings.OffsetDistance  = (m_settings.MaxDistance - m_settings.MinDistance) / 3f;
            m_settings.DesiredDistance = m_settings.OffsetDistance;
            m_settings.StoreDefaultValues();

            m_relativePosition   = (m_target.position + (Vector3.up * m_settings.OffsetHeight)) + (m_transform.rotation * (Vector3.forward * -m_settings.OffsetDistance)) + (m_transform.right * m_settings.LateralOffset);
            m_transform.position = m_relativePosition;
        }

        CameraController = this.GetOrAddComponent <EzCameraController>();
        CameraController.Init(this);

        SetLockOnEnabled(m_lockOnEnabled);
        SetFollowEnabled(m_followEnabled);
        SetOrbitEnabled(m_orbitEnabled);

        if (m_checkForCollisions)
        {
            m_cameraCollilder = this.GetOrAddComponent <EzCameraCollider>();
        }

        m_stateMachine = new EzStateMachine();

        m_defaultState = m_followEnabled ? EzCameraState.State.FOLLOW : EzCameraState.State.STATIONARY;
        SetState(m_defaultState);
    }
        public void TriggerTest_UnsupportedTransition_RaiseException()
        {
            // Setup
            var m = new EzStateMachine <TestTrigger, TestState>(TestState.S0, TestState.S2, true);

            // Assert
            Assert.ThrowsException <Exception>(() => { m.Trigger(TestTrigger.T0); });
        }
        public void PermitTest_AddNonExistentPermission()
        {
            // Setup
            var m = new EzStateMachine <TestTrigger, TestState>(TestState.S0, TestState.S2);

            // Action
            var result = m.Permit(TestTrigger.T0, TestState.S0, TestState.S1);

            // Assert
            Assert.IsTrue(result);
        }
        public void TriggerTest_UnsupportedTransition()
        {
            // Setup
            var m = new EzStateMachine <TestTrigger, TestState>(TestState.S0, TestState.S2);

            // Action
            var result = m.Trigger(TestTrigger.T0);

            // Assert
            Assert.IsFalse(result);
        }
        public void SubscribeTest_Add()
        {
            // Setup
            var m   = new EzStateMachine <TestTrigger, TestState>(TestState.S0, TestState.S2);
            var sub = new TestSubscriber();
            // Action
            var ticket = m.Subscribe(sub);
            var result = m.IsSubscriber(sub);

            // Assert
            Assert.IsNotNull(ticket);
            Assert.IsTrue(result);
        }
        public void PermitTest_AddAlmostDuplicatePermission()
        {
            // Setup
            var m = new EzStateMachine <TestTrigger, TestState>(TestState.S0, TestState.S2);

            m.Permit(TestTrigger.T0, TestState.S0, TestState.S1);

            // Action
            var result = m.Permit(TestTrigger.T0, TestState.S0, TestState.S2);

            //Assert
            Assert.IsFalse(result);
        }
        public void SubscribeTest_Add_Remove()
        {
            // Setup
            var m      = new EzStateMachine <TestTrigger, TestState>(TestState.S0, TestState.S2);
            var sub    = new TestSubscriber();
            var ticket = m.Subscribe(sub);

            // Action
            ticket.Dispose();
            var result = m.IsSubscriber(sub);

            // Assert
            Assert.IsFalse(result);
        }
        public void TriggerTest_S0toS1withT0()
        {
            // Setup
            var m = new EzStateMachine <TestTrigger, TestState>(TestState.S0, TestState.S2);

            m.Permit(TestTrigger.T0, TestState.S0, TestState.S1);
            var sub = new TestSubscriber();

            m.Subscribe(sub);

            // Action
            var result = m.Trigger(TestTrigger.T0);

            // Assert
            Assert.IsTrue(result);
            Assert.AreEqual(TestState.S1, sub.State);
        }
        public Demonstrator(Controller controller)
        {
            _controller = controller;
            _machine    = new EzStateMachine <MenuTrigger, MenuState>(MenuState.InterfaceSelection, MenuState.Windows);
            _machine.Subscribe(this);

            #region StateMachineConfig

            _machine.Permit(MenuTrigger.Selection0, MenuState.InterfaceSelection, MenuState.MultiSet);
            _machine.Permit(MenuTrigger.Selection1, MenuState.InterfaceSelection, MenuState.MultiSetSorted);
            _machine.Permit(MenuTrigger.Selection2, MenuState.InterfaceSelection, MenuState.Set);
            _machine.Permit(MenuTrigger.Selection3, MenuState.InterfaceSelection, MenuState.SetSorted);
            _machine.Permit(MenuTrigger.Back, MenuState.InterfaceSelection, MenuState.Windows);

            _machine.Permit(MenuTrigger.Selection0, MenuState.MultiSet, MenuState.MultiSetUnsortedArray);
            _machine.Permit(MenuTrigger.Selection1, MenuState.MultiSet, MenuState.MultiSetUnsortedLinkedList);
            _machine.Permit(MenuTrigger.Back, MenuState.MultiSet, MenuState.InterfaceSelection);

            _machine.Permit(MenuTrigger.Selection0, MenuState.MultiSetSorted, MenuState.MultiSetSortedArray);
            _machine.Permit(MenuTrigger.Selection1, MenuState.MultiSetSorted, MenuState.MultiSetSortedLinkedList);
            _machine.Permit(MenuTrigger.Back, MenuState.MultiSetSorted, MenuState.InterfaceSelection);

            _machine.Permit(MenuTrigger.Selection0, MenuState.Set, MenuState.SetUnsortedArray);
            _machine.Permit(MenuTrigger.Selection1, MenuState.Set, MenuState.SetUnsortedLinkedList);
            _machine.Permit(MenuTrigger.Selection2, MenuState.Set, MenuState.HashTabQuadProb);
            _machine.Permit(MenuTrigger.Selection3, MenuState.Set, MenuState.HashTabSepChain);
            _machine.Permit(MenuTrigger.Back, MenuState.Set, MenuState.InterfaceSelection);

            _machine.Permit(MenuTrigger.Selection0, MenuState.SetSorted, MenuState.SetSortedArray);
            _machine.Permit(MenuTrigger.Selection1, MenuState.SetSorted, MenuState.SetSortedLinkedList);
            _machine.Permit(MenuTrigger.Selection2, MenuState.SetSorted, MenuState.BinSearchTree);
            _machine.Permit(MenuTrigger.Selection3, MenuState.SetSorted, MenuState.AVLTree);
            _machine.Permit(MenuTrigger.Selection4, MenuState.SetSorted, MenuState.Treap);
            _machine.Permit(MenuTrigger.Back, MenuState.SetSorted, MenuState.InterfaceSelection);

            _machine.Permit(MenuTrigger.Selection0, MenuState.MultiSetUnsortedArray, MenuState.Insert);
            _machine.Permit(MenuTrigger.Selection1, MenuState.MultiSetUnsortedArray, MenuState.Delete);
            _machine.Permit(MenuTrigger.Selection2, MenuState.MultiSetUnsortedArray, MenuState.Search);
            _machine.Permit(MenuTrigger.Selection3, MenuState.MultiSetUnsortedArray, MenuState.Print);
            _machine.Permit(MenuTrigger.Back, MenuState.MultiSetUnsortedArray, MenuState.MultiSet);

            _machine.Permit(MenuTrigger.Selection0, MenuState.MultiSetUnsortedLinkedList, MenuState.Insert);
            _machine.Permit(MenuTrigger.Selection1, MenuState.MultiSetUnsortedLinkedList, MenuState.Delete);
            _machine.Permit(MenuTrigger.Selection2, MenuState.MultiSetUnsortedLinkedList, MenuState.Search);
            _machine.Permit(MenuTrigger.Selection3, MenuState.MultiSetUnsortedLinkedList, MenuState.Print);
            _machine.Permit(MenuTrigger.Back, MenuState.MultiSetUnsortedLinkedList, MenuState.MultiSet);

            _machine.Permit(MenuTrigger.Selection0, MenuState.MultiSetSortedArray, MenuState.Insert);
            _machine.Permit(MenuTrigger.Selection1, MenuState.MultiSetSortedArray, MenuState.Delete);
            _machine.Permit(MenuTrigger.Selection2, MenuState.MultiSetSortedArray, MenuState.Search);
            _machine.Permit(MenuTrigger.Selection3, MenuState.MultiSetSortedArray, MenuState.Print);
            _machine.Permit(MenuTrigger.Back, MenuState.MultiSetSortedArray, MenuState.MultiSetSorted);

            _machine.Permit(MenuTrigger.Selection0, MenuState.MultiSetSortedLinkedList, MenuState.Insert);
            _machine.Permit(MenuTrigger.Selection1, MenuState.MultiSetSortedLinkedList, MenuState.Delete);
            _machine.Permit(MenuTrigger.Selection2, MenuState.MultiSetSortedLinkedList, MenuState.Search);
            _machine.Permit(MenuTrigger.Selection3, MenuState.MultiSetSortedLinkedList, MenuState.Print);
            _machine.Permit(MenuTrigger.Back, MenuState.MultiSetSortedLinkedList, MenuState.MultiSetSorted);

            _machine.Permit(MenuTrigger.Selection0, MenuState.SetUnsortedArray, MenuState.Insert);
            _machine.Permit(MenuTrigger.Selection1, MenuState.SetUnsortedArray, MenuState.Delete);
            _machine.Permit(MenuTrigger.Selection2, MenuState.SetUnsortedArray, MenuState.Search);
            _machine.Permit(MenuTrigger.Selection3, MenuState.SetUnsortedArray, MenuState.Print);
            _machine.Permit(MenuTrigger.Back, MenuState.SetUnsortedArray, MenuState.Set);

            _machine.Permit(MenuTrigger.Selection0, MenuState.SetUnsortedLinkedList, MenuState.Insert);
            _machine.Permit(MenuTrigger.Selection1, MenuState.SetUnsortedLinkedList, MenuState.Delete);
            _machine.Permit(MenuTrigger.Selection2, MenuState.SetUnsortedLinkedList, MenuState.Search);
            _machine.Permit(MenuTrigger.Selection3, MenuState.SetUnsortedLinkedList, MenuState.Print);
            _machine.Permit(MenuTrigger.Back, MenuState.SetUnsortedLinkedList, MenuState.Set);

            _machine.Permit(MenuTrigger.Selection0, MenuState.HashTabQuadProb, MenuState.Insert);
            _machine.Permit(MenuTrigger.Selection1, MenuState.HashTabQuadProb, MenuState.Delete);
            _machine.Permit(MenuTrigger.Selection2, MenuState.HashTabQuadProb, MenuState.Search);
            _machine.Permit(MenuTrigger.Selection3, MenuState.HashTabQuadProb, MenuState.Print);
            _machine.Permit(MenuTrigger.Back, MenuState.HashTabQuadProb, MenuState.Set);

            _machine.Permit(MenuTrigger.Selection0, MenuState.HashTabSepChain, MenuState.Insert);
            _machine.Permit(MenuTrigger.Selection1, MenuState.HashTabSepChain, MenuState.Delete);
            _machine.Permit(MenuTrigger.Selection2, MenuState.HashTabSepChain, MenuState.Search);
            _machine.Permit(MenuTrigger.Selection3, MenuState.HashTabSepChain, MenuState.Print);
            _machine.Permit(MenuTrigger.Back, MenuState.HashTabSepChain, MenuState.Set);

            _machine.Permit(MenuTrigger.Selection0, MenuState.SetSortedArray, MenuState.Insert);
            _machine.Permit(MenuTrigger.Selection1, MenuState.SetSortedArray, MenuState.Delete);
            _machine.Permit(MenuTrigger.Selection2, MenuState.SetSortedArray, MenuState.Search);
            _machine.Permit(MenuTrigger.Selection3, MenuState.SetSortedArray, MenuState.Print);
            _machine.Permit(MenuTrigger.Back, MenuState.SetSortedArray, MenuState.SetSorted);

            _machine.Permit(MenuTrigger.Selection0, MenuState.SetSortedLinkedList, MenuState.Insert);
            _machine.Permit(MenuTrigger.Selection1, MenuState.SetSortedLinkedList, MenuState.Delete);
            _machine.Permit(MenuTrigger.Selection2, MenuState.SetSortedLinkedList, MenuState.Search);
            _machine.Permit(MenuTrigger.Selection3, MenuState.SetSortedLinkedList, MenuState.Print);
            _machine.Permit(MenuTrigger.Back, MenuState.SetSortedLinkedList, MenuState.SetSorted);

            _machine.Permit(MenuTrigger.Selection0, MenuState.BinSearchTree, MenuState.Insert);
            _machine.Permit(MenuTrigger.Selection1, MenuState.BinSearchTree, MenuState.Delete);
            _machine.Permit(MenuTrigger.Selection2, MenuState.BinSearchTree, MenuState.Search);
            _machine.Permit(MenuTrigger.Selection3, MenuState.BinSearchTree, MenuState.Print);
            _machine.Permit(MenuTrigger.Back, MenuState.BinSearchTree, MenuState.SetSorted);

            _machine.Permit(MenuTrigger.Selection0, MenuState.AVLTree, MenuState.Insert);
            _machine.Permit(MenuTrigger.Selection1, MenuState.AVLTree, MenuState.Delete);
            _machine.Permit(MenuTrigger.Selection2, MenuState.AVLTree, MenuState.Search);
            _machine.Permit(MenuTrigger.Selection3, MenuState.AVLTree, MenuState.Print);
            _machine.Permit(MenuTrigger.Back, MenuState.AVLTree, MenuState.SetSorted);

            _machine.Permit(MenuTrigger.Selection0, MenuState.Treap, MenuState.Insert);
            _machine.Permit(MenuTrigger.Selection1, MenuState.Treap, MenuState.Delete);
            _machine.Permit(MenuTrigger.Selection2, MenuState.Treap, MenuState.Search);
            _machine.Permit(MenuTrigger.Selection3, MenuState.Treap, MenuState.Print);
            _machine.Permit(MenuTrigger.Back, MenuState.Treap, MenuState.SetSorted);

            #endregion
        }