Exemple #1
0
 // Token: 0x060062A9 RID: 25257 RVA: 0x0022FFB8 File Offset: 0x0022E3B8
 public void ClearPlayerSelection()
 {
     if (this.selectedPlayer != null)
     {
         PlayerSelector playerSelector = this.selectedPlayer.playerSelector;
         playerSelector.Select(false);
         this.selectedPlayer = null;
     }
     if (this.hoveredPlayer != null)
     {
         PlayerSelector playerSelector2 = this.hoveredPlayer.playerSelector;
         playerSelector2.Hover(false);
         this.hoveredPlayer = null;
     }
 }
Exemple #2
0
    // Token: 0x060062A6 RID: 25254 RVA: 0x0022F9C8 File Offset: 0x0022DDC8
    public void SetTargetInfo(VRCUiCursor.CursorRaycast target, bool useForUi)
    {
        if (this.inUse == null)
        {
            VRCUiCursor.CursorHandedness cursorHandedness = this.handedness;
            if (cursorHandedness != VRCUiCursor.CursorHandedness.Right)
            {
                if (cursorHandedness == VRCUiCursor.CursorHandedness.Left)
                {
                    this.inUse  = VRCInputManager.FindInput("UseLeft");
                    this.inDrop = VRCInputManager.FindInput("DropLeft");
                }
            }
            else
            {
                this.inUse  = VRCInputManager.FindInput("UseRight");
                this.inDrop = VRCInputManager.FindInput("DropRight");
            }
            if (this.inUse == null)
            {
                return;
            }
        }
        this.over           = target.over;
        this.distance       = target.hitInfo.distance;
        this.targetPosition = target.hitInfo.point;
        bool flag = false;

        if (useForUi)
        {
            if (target.over.Contains(VRCUiCursor.CursorOver.Ui))
            {
                Vector2          screenPos        = new Vector2(0f, 0f);
                UiShapeGenerator uiShapeGenerator = target.uiShape as UiShapeGenerator;
                if (uiShapeGenerator != null)
                {
                    screenPos = uiShapeGenerator.GetPointerPosition(target.hitInfo.textureCoord);
                }
                else
                {
                    screenPos = VRCVrCamera.GetInstance().screenCamera.WorldToScreenPoint(target.hitInfo.point);
                }
                this.uiInput.SetInputState(screenPos, target.hitInfo.point, this.inUse.down, this.inUse.up, this.inDrop.down, this.inDrop.up);
                if (this.uiInput.IsOverSelection())
                {
                    List <VRCUiCursor.CursorOver> list = new List <VRCUiCursor.CursorOver>
                    {
                        VRCUiCursor.CursorOver.UiSelectable
                    };
                    list.AddRange(target.over);
                    target.over = list.ToArray();
                }
                flag = true;
            }
            if (target.over.Contains(VRCUiCursor.CursorOver.Player))
            {
                if (this.inUse.click)
                {
                    this.SelectHoveredPlayer();
                }
                else
                {
                    if (this.hoveredPlayer != null)
                    {
                        PlayerSelector playerSelector = this.hoveredPlayer.playerSelector;
                        playerSelector.Hover(false);
                    }
                    this.hoveredPlayer = target.player;
                    PlayerSelector playerSelector2 = this.hoveredPlayer.playerSelector;
                    if (playerSelector2 != null)
                    {
                        playerSelector2.Hover(true);
                    }
                }
                flag = true;
            }
            else if (this.hoveredPlayer != null)
            {
                PlayerSelector playerSelector3 = this.hoveredPlayer.playerSelector;
                if (playerSelector3 != null)
                {
                    playerSelector3.Hover(false);
                }
                this.hoveredPlayer = null;
            }
            if (target.over.Contains(VRCUiCursor.CursorOver.Web))
            {
                if (this.activeWebView != target.webPanel && this.activeWebView != null)
                {
                    this.activeWebView.HandleFocusLoss();
                }
                this.activeWebView = target.webPanel;
                if (this.activeWebView != null)
                {
                    this.activeWebView.HandleRayHit(target.hitInfo);
                    flag = true;
                }
            }
            else if (this.activeWebView != null)
            {
                this.activeWebView.HandleFocusLoss();
                this.activeWebView = null;
            }
            if (target.over.Length == 0)
            {
                this.uiInput.SetInputState(Vector2.zero, target.hitInfo.point, false, true, false, true);
            }
            VRCUiCursor.CursorHandedness hand = this.handedness;
            if (!flag)
            {
                hand = VRCUiCursor.CursorHandedness.None;
            }
            VRCUiCursorManager.ForceCursorOn(hand);
        }
        VRC_Pickup selectedPickup = null;

        VRC_Interactable[] selectedInteractable = null;
        if (!VRCInputManager.legacyGrasp)
        {
            Component component;
            if (target.interactable == null)
            {
                component = null;
            }
            else
            {
                component = target.interactable.FirstOrDefault((VRC_Interactable i) => i.GetComponent <VRC_UseEvents>() != null || (i.GetComponent <VRC_Trigger>() != null && (i.GetComponent <VRC_Trigger>().HasInteractiveTriggers || i.GetComponent <VRC_Trigger>().HasPickupTriggers)));
            }
            Component component2 = component;
            this.outline.Clone(null);
            if (this.over.Contains(VRCUiCursor.CursorOver.Interactable) && component2 != null)
            {
                Transform trackedTransform = VRCTrackingManager.GetTrackedTransform((this.handedness != VRCUiCursor.CursorHandedness.Left) ? VRCTracking.ID.HandTracker_RightPalm : VRCTracking.ID.HandTracker_LeftPalm);
                bool      flag2            = trackedTransform == null || VRCTrackingManager.IsPointWithinHMDView(trackedTransform.position);
                if (flag2)
                {
                    this.outline.Clone(component2);
                    if (TutorialManager.Instance != null)
                    {
                        TutorialManager.Instance.InteractableSelected(target.interactable, component2, this.handedness == VRCUiCursor.CursorHandedness.Left);
                    }
                    selectedInteractable = target.interactable;
                }
            }
            if (this.over.Contains(VRCUiCursor.CursorOver.Pickup) && target.pickup != null)
            {
                if (target.pickup.currentlyHeldBy == null)
                {
                    this.outline.Clone(target.pickup);
                    if (TutorialManager.Instance != null)
                    {
                        TutorialManager.Instance.PickupSelected(target.pickup, this.handedness == VRCUiCursor.CursorHandedness.Left);
                    }
                    selectedPickup = target.pickup;
                }
                else
                {
                    this.outline.Clone(null);
                }
            }
        }
        else
        {
            this.outline.Clone(null);
        }
        VRCHandGrasper vrchandGrasper = null;

        if (VRCPlayer.Instance != null)
        {
            vrchandGrasper = VRCPlayer.Instance.GetHandGrasper((this.handedness != VRCUiCursor.CursorHandedness.Left) ? ControllerHand.Right : ControllerHand.Left);
        }
        if (vrchandGrasper != null)
        {
            vrchandGrasper.SetSelectedObject(selectedPickup, selectedInteractable);
        }
    }