Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        /// <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);
            }
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        /// <inheritdoc />
        public override void Initialize()
        {
            base.Initialize();

            if (!Application.isPlaying)
            {
                return;
            }

            teleportEventData = new TeleportEventData(EventSystem.current);
        }
Esempio n. 6
0
 /// <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);
     }
 }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
    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);
 }
Esempio n. 10
0
 /// <inheritdoc />
 public void OnTeleportCompleted(TeleportEventData eventData)
 {
     ResetCursor();
 }
Esempio n. 11
0
 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);
 }
Esempio n. 16
0
 /// <inheritdoc />
 public void OnTeleportCanceled(TeleportEventData eventData)
 {
     throw new System.NotImplementedException();
 }
Esempio n. 17
0
 /// <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);
 }
Esempio n. 19
0
 /// <inheritdoc />
 public void OnTeleportStarted(TeleportEventData eventData)
 {
     ResetCursor();
 }
 /// <inheritdoc />
 public override void OnTeleportCanceled(TeleportEventData eventData)
 {
     IsTeleportRequestActive = false;
     BaseCursor?.SetVisibility(false);
 }
Esempio n. 21
0
 /// <inheritdoc />
 public void OnTeleportCanceled(TeleportEventData eventData)
 {
     ResetCursor();
 }