public void OnPointerDown(MixedRealityPointerEventData eventData)
    {
        if (planetController == null)
        {
            planetController = FindObjectOfType <PlanetPreviewController>();
        }
        switch (ForceState)
        {
        case State.Root:
            if (eventData.Pointer is IMixedRealityNearPointer)
            {
                StartManipulation();
                _manipulationHandler.OnPointerDown(eventData);
            }
            else if (eventData.Pointer == null)
            {
                if (planetController != null)
                {
                    if (previewTarget == null)
                    {
                        previewTarget = GetComponentInChildren <UiPreviewTarget>();
                    }

                    if (previewTarget != null)
                    {
                        planetController.OnButtonSelected(previewTarget.slotId);
                    }
                }
                StartAttraction(true);
            }
            else
            {
                StartAttraction(IsGgvOrDesktopController(eventData.Pointer.Controller));
            }
            break;

        case State.Dwell:
            StartManipulation();
            _manipulationHandler.OnPointerDown(eventData);
            break;

        case State.Attraction:
        case State.Free:
            StartManipulation();
            if (eventData.Pointer != null)
            {
                _manipulationHandler.OnPointerDown(eventData);
            }
            break;

        case State.Manipulation:
        case State.None:
            break;

        default:
            throw new ArgumentOutOfRangeException();
        }
    }
Exemplo n.º 2
0
    IEnumerator WaitForTarget()
    {
        var waitForOneSecond = new WaitForSeconds(1);

        target = GetTargetById(targetSlotId);
        while (target == null)
        {
            yield return(waitForOneSecond);

            target = GetTargetById(targetSlotId);
        }

        Initialize();
    }