void Update()
        {
            if (Time.timeScale <= 0)
            {
                return;
            }

#if USE_NEW_INPUT
            var mouseX = UnityEngine.InputSystem.Mouse.current.delta.x.ReadValue() * Time.deltaTime;
            var mouseY = UnityEngine.InputSystem.Mouse.current.delta.y.ReadValue() * Time.deltaTime;
#else
            var mouseX = InputDeviceManager.GetAxis(mouseXAxis);
            var mouseY = InputDeviceManager.GetAxis(mouseYAxis);
#endif

            // Mouse X rotation:
            transform.Rotate(0, mouseX * mouseSensitivityX, 0);

            // Mouse Y rotation:
            m_cameraRotationY += mouseY * mouseSensitivityY;
            m_cameraRotationY  = ClampAngle(m_cameraRotationY, mouseMinimumY, mouseMaximumY);
            Quaternion yQuaternion = Quaternion.AngleAxis(m_cameraRotationY, -Vector3.right);
            if (m_smoothCamera != null)
            {
                // If we have a SmoothCameraWithBumper, leave camera adjustments to it:
                m_smoothCamera.adjustQuaternion = yQuaternion;
            }
            else
            {
                UnityEngine.Camera.main.transform.localRotation = m_originalCameraRotation * yQuaternion;
            }

            // Weapon:
            if (m_animator != null)
            {
                m_animator.SetBool(twoHandWeaponBoolParameter, useTwoHandWeapon);
            }

            // Firing:
            if (DialogueManager.GetInputButtonDown(attackButton) && !m_firing)
            {
                if (m_animator != null)
                {
                    m_animator.SetTrigger(attackTriggerParameter);
                }
                m_firing = true;
                Invoke("OnFired", hitDelay);
            }

            // Movement:
            float centralSpeed = InputDeviceManager.GetAxis(verticalAxis);
            float lateralSpeed = InputDeviceManager.GetAxis(horizontalAxis);
            if ((Mathf.Abs(centralSpeed) > 0.1f) || (Mathf.Abs(lateralSpeed) > 0.1f))
            {
                SetSpeed(centralSpeed, lateralSpeed);
            }
            else
            {
                SetSpeed(0, 0);
            }

            // Move, including gravity:
            if (m_animator == null || !m_animator.applyRootMotion)
            {
                m_controller.Move(transform.rotation * ((Vector3.forward * centralSpeed * runSpeed * Time.deltaTime) + (Vector3.right * lateralSpeed * runSpeed * Time.deltaTime)) + Vector3.down * 20f * Time.deltaTime);
            }
        }