private void InitializeInternal() { #if UNITY_EDITOR if (!UnityEditor.EditorApplication.isPlaying) { var eventSystems = Object.FindObjectsOfType <EventSystem>(); if (eventSystems.Length == 0) { if (!MixedRealityToolkit.Instance.ActiveProfile.IsInputSystemEnabled) { eventSystemReference = new GameObject("Event System"); eventSystemReference.AddComponent <EventSystem>(); } else { Debug.Log("The Input System didn't properly add an event system to your scene. Please make sure the Input System's priority is set higher than the teleport system."); } } else if (eventSystems.Length > 1) { Debug.Log("Too many event systems in the scene. The Teleport System requires only one."); } } #endif // UNITY_EDITOR teleportEventData = new TeleportEventData(EventSystem.current); }
private void ProcessTeleportationRequest(TeleportEventData eventData) { isProcessingTeleportRequest = true; var cameraParent = CameraCache.Main.transform.parent; targetRotation = Vector3.zero; targetRotation.y = eventData.Pointer.PointerOrientation; targetPosition = eventData.Pointer.Result.Details.Point; if (eventData.HotSpot != null) { targetPosition = eventData.HotSpot.Position; if (eventData.HotSpot.OverrideTargetOrientation) { targetRotation.y = eventData.HotSpot.TargetOrientation; } } float height = targetPosition.y; targetPosition -= CameraCache.Main.transform.position - cameraParent.position; targetPosition.y = height; cameraParent.position = targetPosition; cameraParent.RotateAround(CameraCache.Main.transform.position, Vector3.up, targetRotation.y - CameraCache.Main.transform.eulerAngles.y); isProcessingTeleportRequest = false; // Raise complete event using the pointer and hot spot provided. RaiseTeleportComplete(eventData.Pointer, eventData.HotSpot); }
/// <inheritdoc /> public override void Initialize() { base.Initialize(); if (Application.isPlaying) { teleportEventData = new TeleportEventData(EventSystem.current); } if (teleportProvider == null) { // No provier selected, we'll be using default teleport. // Make sure to remove any leftover provider attached to the camera. var component = CameraCache.Main.GetComponent <IMixedRealityTeleportProvider>() as Component; if (!component.IsNull()) { if (Application.isPlaying) { Object.Destroy(component); } else { Object.DestroyImmediate(component); } } } else { // A provider is set, make sure it's attached to the camera. CameraCache.Main.gameObject.EnsureComponent(teleportProvider.Type); } }
private void PerformDefaultTeleport(TeleportEventData eventData) { var cameraTransform = MixedRealityToolkit.CameraSystem != null ? MixedRealityToolkit.CameraSystem.MainCameraRig.CameraTransform : CameraCache.Main.transform; var teleportTransform = cameraTransform.parent; Debug.Assert(teleportTransform != null, $"{nameof(MixedRealityTeleportSystem)} without a provider set requires that the camera be parented under another object! Assign a teleport provider in the system profile or fix the camera setup."); var targetRotation = Vector3.zero; var targetPosition = eventData.Pointer.Result.EndPoint; targetRotation.y = eventData.Pointer.PointerOrientation; if (eventData.HotSpot != null) { targetPosition = eventData.HotSpot.Position; if (eventData.HotSpot.OverrideTargetOrientation) { targetRotation.y = eventData.HotSpot.TargetOrientation; } } var height = targetPosition.y; targetPosition -= cameraTransform.position - teleportTransform.position; targetPosition.y = height; teleportTransform.position = targetPosition; teleportTransform.RotateAround(cameraTransform.position, Vector3.up, targetRotation.y - cameraTransform.eulerAngles.y); RaiseTeleportComplete(eventData.Pointer, eventData.HotSpot); }
/// <inheritdoc /> public override void Initialize() { base.Initialize(); if (!Application.isPlaying) { return; } teleportEventData = new TeleportEventData(EventSystem.current); }
/// <inheritdoc /> public override void OnTeleportRequest(TeleportEventData eventData) { // Only turn off the pointer if we're not the one sending the request if (eventData.Pointer.PointerId == PointerId) { IsTeleportRequestActive = false; } else { IsTeleportRequestActive = true; BaseCursor?.SetVisibility(false); } }
private void InitializeInternal() { if (CameraCache.Main.transform.parent == null) { var cameraParent = new GameObject("Body"); CameraCache.Main.transform.SetParent(cameraParent.transform); } // Make sure the camera is at the scene origin. CameraCache.Main.transform.parent.transform.position = Vector3.zero; CameraCache.Main.transform.localPosition = Vector3.zero; #if UNITY_EDITOR if (!UnityEditor.EditorApplication.isPlaying) { var eventSystems = Object.FindObjectsOfType <EventSystem>(); if (eventSystems.Length == 0) { if (!MixedRealityManager.Instance.ActiveProfile.IsInputSystemEnabled) { eventSystemReference = new GameObject("Event System"); eventSystemReference.AddComponent <EventSystem>(); } else { Debug.Log("The Input System didn't properly add an event system to your scene. Please make sure the Input System's priority is set higher than the teleport system."); } } else if (eventSystems.Length > 1) { Debug.Log("Too many event systems in the scene. The Teleport System requires only one."); } } #endif // UNITY_EDITOR TeleportDuration = MixedRealityManager.Instance.ActiveProfile.TeleportDuration; teleportEventData = new TeleportEventData(EventSystem.current); }
void Teleport(TeleporterTileLogic fromTeleporter, TeleporterTileLogic toTeleporter) { var fromPosition = m_Transform.position; var toPosition = toTeleporter.m_Transform.position; var eventData = new TeleportEventData() { m_FromTeleporter = fromTeleporter, m_ToTeleporter = toTeleporter, m_FromPosition = fromPosition, m_ToPosition = toPosition, }; m_LastTeleportDestination = eventData.m_ToTeleporter; m_Transform.position = eventData.m_ToPosition; eventData.m_FromTeleporter.m_Events.TeleportedFrom.Invoke(eventData); m_Events.UsedTeleporter.Invoke(eventData); eventData.m_ToTeleporter.m_Events.TeleportedTo.Invoke(eventData); var teleporterColor = fromTeleporter.m_ColorCode.GetCurrentColor(); CreateStreak(fromPosition, toPosition, teleporterColor); }
/// <inheritdoc /> public void OnTeleportRequest(TeleportEventData eventData) { OnCursorStateChange(CursorStateEnum.Observe); }
/// <inheritdoc /> public void OnTeleportCompleted(TeleportEventData eventData) { ResetCursor(); }
public void OnUsedTeleporter(TeleportEventData eventData) { m_PreviousX = eventData.m_ToPosition.x; }
/// <inheritdoc /> public void OnTeleportCompleted(TeleportEventData eventData) { }
/// <inheritdoc /> public virtual void OnTeleportCanceled(TeleportEventData eventData) { // Turn all our pointers back on. IsTeleportRequestActive = false; BaseCursor?.SetVisibility(true); }
/// <inheritdoc /> public void OnTeleportCanceled(TeleportEventData eventData) { OnCursorStateChange(CursorStateEnum.Release); }
/// <inheritdoc /> public virtual void OnTeleportRequest(TeleportEventData eventData) { // Only turn off pointers that aren't making the request. IsTeleportRequestActive = true; BaseCursor?.SetVisibility(false); }
/// <inheritdoc /> public void OnTeleportCanceled(TeleportEventData eventData) { throw new System.NotImplementedException(); }
/// <inheritdoc /> public void OnTeleportRequest(TeleportEventData eventData) { ResetCursor(); }
/// <inheritdoc /> public override void OnTeleportStarted(TeleportEventData eventData) { // Turn off all pointers while we teleport. IsTeleportRequestActive = true; BaseCursor?.SetVisibility(false); }
/// <inheritdoc /> public void OnTeleportStarted(TeleportEventData eventData) { ResetCursor(); }
/// <inheritdoc /> public override void OnTeleportCanceled(TeleportEventData eventData) { IsTeleportRequestActive = false; BaseCursor?.SetVisibility(false); }
/// <inheritdoc /> public void OnTeleportCanceled(TeleportEventData eventData) { ResetCursor(); }