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 }