I am reviving this as I found the true answer:
Go to LocomotionTeleport.cs and paste this in the class:
public OVRPlayerController oVRPlayerController;
Then, go to the DoTeleport method and paste over it with this:
public void DoTeleport()
{
var character = LocomotionController.CharacterController;
oVRPlayerController.enabled = false;
var characterTransform = character.transform;
var destTransform = _teleportDestination.OrientationIndicator;
Vector3 destPosition = destTransform.position;
destPosition.y += character.height * 0.5f;
Quaternion destRotation = _teleportDestination.LandingRotation;// destTransform.rotation;
#if false
Quaternion destRotation = destTransform.rotation;
//Debug.Log("Rots: " + destRotation + " " + destTransform.rotation * Quaternion.Euler(0, -LocomotionController.CameraRig.trackingSpace.localEulerAngles.y, 0));
destRotation = destRotation * Quaternion.Euler(0, -LocomotionController.CameraRig.trackingSpace.localEulerAngles.y, 0);
#endif
if (Teleported != null)
{
Teleported(characterTransform, destPosition, destRotation);
}
characterTransform.position = destPosition;
characterTransform.rotation = destRotation;
oVRPlayerController.enabled = true;
}
All I am doing here is enabling and disabling the OVRPlayerController before and after the teleport. I assume this is because of some clowny under the hood reason that I care not to try and figure out. Best of luck to you all