Example #1
0
        protected virtual void Rotate()
        {
            if (!rotationActivated)
            {
                return;
            }

            if (rotationTrackingController == TrackingController.BothControllers && VRTK_ControllerReference.IsValid(leftControllerReference) && VRTK_ControllerReference.IsValid(rightControllerReference))
            {
                Vector2 currentRotationAngle = GetControllerRotation();
                float   newAngle             = Vector2.Angle(currentRotationAngle, previousRotationAngle) * Mathf.Sign(Vector3.Cross(currentRotationAngle, previousRotationAngle).z);
                RotateByAngle(newAngle);
                previousRotationAngle = currentRotationAngle;
            }
            else
            {
                float leftControllerAngle  = (TrackingControllerEnabled(rotationTrackingController, TrackingController.LeftController, rotationLeftControllerActivated) ? VRTK_DeviceFinder.GetControllerAngularVelocity(leftControllerReference).y : 0f);
                float rightControllerAngle = (TrackingControllerEnabled(rotationTrackingController, TrackingController.RightController, rotationRightControllerActivated) ? VRTK_DeviceFinder.GetControllerAngularVelocity(rightControllerReference).y : 0f);
                RotateByAngle(leftControllerAngle + rightControllerAngle);
            }
        }