void OnStateEnter(CurrentState m_NewState) { switch (m_NewState) { case CurrentState.Spawn: m_Animator.CrossFade("Boy_Walk", 0.5f); break; case CurrentState.InQueue: break; case CurrentState.MovingInQueue: if (m_CurrentWaitPoint > 0) { m_CurrentWaitPoint--; } break; case CurrentState.Idle: m_IdleTimer = Random.Range(m_StandIdleTimer.x, m_StandIdleTimer.y); break; case CurrentState.MovingTowardChair: m_Animator.CrossFade("Boy_Walk", 0.5f); m_Chair = m_ChairManager.FindChair(this.gameObject); if (m_Chair == null) { SwitchState(CurrentState.MovingTowardExit); } else { m_NavMeshAgent.SetDestination(m_Chair.transform.position); } break; case CurrentState.MovingTowardObject: m_Timer = 0f; m_Animator.CrossFade("Boy_Walk", 0.5f); m_Throwable = m_ChairManager.FindThrowable(this.gameObject); m_NavMeshAgent.SetDestination(m_Throwable.transform.position); break; case CurrentState.ThrowSomething: m_Timer = 0f; m_Throwable.GetComponent <Rigidbody>().AddForceAtPosition((transform.forward * m_ImpulseForce.x) + Vector3.up * m_ImpulseForce.y, transform.position, ForceMode.Impulse); break; case CurrentState.Sitting: m_Animator.CrossFade("Boy_Idle_Sit", 0.5f); canBePickedUp = false; m_Timer = 0f; m_IdleTimer = Random.Range(m_SitIdleTimer.x, m_SitIdleTimer.y); m_Chair.EnterChair(); m_NavMeshAgent.enabled = false; transform.position = m_Chair.transform.position + Vector3.up * 0.25f; transform.forward = m_Chair.transform.forward; break; case CurrentState.Eating: m_Animator.CrossFade("Boy_Eat", 0.5f); vfx_Eating.Play(true); m_Timer = 0f; break; case CurrentState.Spitting: m_Timer = 0f; m_Animator.CrossFade("Boy_Vomi", 0.5f); vfx_Spitting.Play(true); break; case CurrentState.SittingIdle: canBePickedUp = true; m_Animator.CrossFade("Boy_Idle_Sit", 0.5f); m_Timer = 0f; m_IdleTimer = Random.Range(m_SitIdleTimer.x, m_SitIdleTimer.y); break; case CurrentState.MovingTowardExit: m_Animator.CrossFade("Boy_Walk", 0.5f); m_NavMeshAgent.SetDestination(m_ExitPosition); break; case CurrentState.Disapear: if (m_HaveEat) { m_MayhemMeter.ChangeMeter(m_LeaveBonusMalus.x); } else { m_MayhemMeter.ChangeMeter(-m_LeaveBonusMalus.y); } Destroy(gameObject); break; case CurrentState.PickUp: m_NavMeshAgent.enabled = false; m_Animator.CrossFade("Boy_Caught", 0.5f); break; case CurrentState.Release: break; case CurrentState.Berserker: m_Animator.CrossFade("Boy_Heavy_Walk", 0.5f); vfx_Angry.Play(true); m_Renderer.transform.position = transform.position; m_NavMeshAgent.enabled = true; break; } }