// Update is called once per frame
    void Update()
    {
        if (FollowPlayerModifier)
        {
            transform.position = FollowPlayerModifier.GetPlayerPosition();
        }

        if (MouseLookModifier)
        {
            transform.localRotation    = MouseLookModifier.GetRotation();
            transform.localEulerAngles = new Vector3(transform.localEulerAngles.x, Player.localEulerAngles.y, transform.localEulerAngles.z);
        }

        if (HeadbobbingModifier)
        {
            transform.position = transform.position + new Vector3(0, HeadbobbingModifier.GetYBobAmount(), 0);
        }

        if (CameraShake && InCameraShakeMode.Value)
        {
            if (CameraShake.Enabled)
            {
                TimeForNewShake = 2 - (CameraShake.Omega.Value * 2);
                _timer         += Time.deltaTime;
                if (_timer > TimeForNewShake)
                {
                    originalPos = transform.localPosition;
                    ShakeOffset = CameraShake.GetRandomOffset();
                    _timer      = 0f;
                }

                transform.localPosition = ETween.Step(transform.localPosition, originalPos + ShakeOffset, 0.2f);
            }
        }
    }