Example #1
0
    private IFocusableItem GetCurrentFocusedItem()
    {
        IFocusableItem ret = TryGetFocusable(highPris);

        if (ret != null)
        {
            return(ret);
        }

        ret = TryGetFocusable(midPris);
        if (ret != null)
        {
            return(ret);
        }

        return(TryGetFocusable(lowPris));
    }
Example #2
0
    public void RegisterFocusable(IFocusableItem focusable)
    {
        switch (focusable.Priority)
        {
        case FocusPriority.High:
            highPris.Add(focusable);
            break;

        case FocusPriority.Medium:
            midPris.Add(focusable);
            break;

        case FocusPriority.Low:
        default:
            lowPris.Add(focusable);
            break;
        }
    }
Example #3
0
    private IFocusableItem TryGetFocusable(IEnumerable <IFocusableItem> items)
    {
        Vector3 pokePoint = HandPrototypeProxies.Instance.RightIndex.position;
        Vector3 grabPoint = MainPinchDetector.Instance.PinchPoint.position;

        IFocusableItem ret             = null;
        float          closestDistance = float.PositiveInfinity;

        foreach (IFocusableItem item in items.Where(item => item.IsFocusable))
        {
            Vector3 pointer = item.Source == FocusSource.Fingertip ? pokePoint : grabPoint;
            float   dist    = item.GetDistanceToPointer(pointer);
            if (dist < item.ActivationDistance && dist < closestDistance)
            {
                ret             = item;
                closestDistance = dist;
            }
        }
        return(ret);
    }