private static void SetupTeleport(ITeleportProvider provider, GameObject[] rootObjs) { var viveNavMesh = rootObjs.SelectMany(g => g.GetComponentsInChildren <ViveNavMesh>(true)).FirstOrDefault(vnm => vnm != null); Assert.IsNotNull(provider); var teleportVive = provider.Teleporter; var cameraRig = provider.CameraRig; var parabolicPointer = provider.Pointer; var navMesh = provider.NavMesh; var navMeshAnimator = provider.NavMeshAnimator; teleportVive.CancelTeleport(); cameraRig.position = provider.OriginPosition; cameraRig.rotation = provider.OriginRotation; if (viveNavMesh != null) { parabolicPointer.NavMesh = viveNavMesh; teleportVive.NavAnimator = viveNavMesh.GetComponent <Animator>(); navMesh.gameObject.SetActive(false); } else { teleportVive.CancelTeleport(); parabolicPointer.NavMesh = navMesh; teleportVive.NavAnimator = navMeshAnimator; navMesh.gameObject.SetActive(true); } }
public static void InterruptTeleport(ITeleportProvider provider) { var teleportVive = provider.Teleporter; var cameraRig = provider.CameraRig; var parabolicPointer = provider.Pointer; var navMesh = provider.NavMesh; var navMeshAnimator = provider.NavMeshAnimator; teleportVive.CancelTeleport(); navMesh.gameObject.SetActive(true); parabolicPointer.NavMesh = navMesh; teleportVive.NavAnimator = navMeshAnimator; teleportVive.ManualTeleport(provider.OriginPosition); cameraRig.rotation = provider.OriginRotation; }
public Parameters(Scene scene, ITeleportProvider teleport, Func <AudioMixerGroupBindings, AudioMixerGroup> getAudioGroup) { Scene = scene; TeleportProvider = teleport; GetAudioGroup = getAudioGroup; }