private IEnumerator ActivateInstant(Vector3 pos) { m_isTeleporting = true; // Deactivate thumbstick movement and rotation ChangePlayerMovement(false, false); // Deactivate the pointer m_Pointer.TrulyDeactivate(); // Perform the teleportation Vector3 destination = LocomoteDestinationFromFloor(pos); foreach (Rigidbody rb in m_rbs) { rb.isKinematic = false; } StartCoroutine(InstantTeleport(destination)); // Wait until we stop teleporting while (m_isTeleporting) { yield return(null); } // Reset movement and rigidbodies upon movement completion foreach (Rigidbody rb in m_rbs) { rb.isKinematic = m_originalKinStat[rb.gameObject.GetInstanceID()]; } m_Pointer.TrulyActivate(); m_destinationTarget = null; ResetPlayerMovement(); }