Example #1
0
        protected virtual List <RaycastResult> CheckRaycasts(VRTK_UIPointer pointer)
        {
            var raycastResult = new RaycastResult();

            raycastResult.worldPosition = pointer.GetOriginPosition();
            raycastResult.worldNormal   = pointer.GetOriginForward();

            pointer.pointerEventData.pointerCurrentRaycast = raycastResult;

            List <RaycastResult> raycasts = new List <RaycastResult>();

            eventSystem.RaycastAll(pointer.pointerEventData, raycasts);

            // custom - begin
            // 포인터에 닿은게 없다면 Raycast 강제 무시
            if (pointer.pointerRenderer != null)
            {
                var hit = pointer.pointerRenderer.GetDestinationHit();
                if (hit.collider == null)
                {
                    raycasts.Clear();
                }
            }
            // custom - end

            return(raycasts);
        }
        protected virtual List <RaycastResult> CheckRaycasts(VRTK_UIPointer pointer)
        {
            RaycastResult raycastResult = new RaycastResult();

            raycastResult.worldPosition = pointer.GetOriginPosition();
            raycastResult.worldNormal   = pointer.GetOriginForward();

            pointer.pointerEventData.pointerCurrentRaycast = raycastResult;

            List <RaycastResult> raycasts = new List <RaycastResult>();

            eventSystem.RaycastAll(pointer.pointerEventData, raycasts);

            raycasts.Sort((res1, res2) =>
            {
                // use depth, if the canvas is the same and therefore distance is small
                // you might need to tweak the 0.001 for your case
                if (Mathf.Abs(res1.distance - res2.distance) < 0.001)
                {
                    return(res2.depth.CompareTo(res1.depth));
                }
                return(res1.distance.CompareTo(res2.distance));
            });

            if (raycasts.Count > 0)
            {
                pointer.pointerEventData.pointerCurrentRaycast = raycasts[0];
            }

            return(raycasts);
        }
Example #3
0
        // Token: 0x06001762 RID: 5986 RVA: 0x0007D120 File Offset: 0x0007B320
        protected virtual List <RaycastResult> CheckRaycasts(VRTK_UIPointer pointer)
        {
            RaycastResult pointerCurrentRaycast = default(RaycastResult);

            pointerCurrentRaycast.worldPosition            = pointer.GetOriginPosition();
            pointerCurrentRaycast.worldNormal              = pointer.GetOriginForward();
            pointer.pointerEventData.pointerCurrentRaycast = pointerCurrentRaycast;
            List <RaycastResult> list = new List <RaycastResult>();

            base.eventSystem.RaycastAll(pointer.pointerEventData, list);
            return(list);
        }
        private List <RaycastResult> CheckRaycasts(VRTK_UIPointer pointer)
        {
            var raycastResult = new RaycastResult();

            raycastResult.worldPosition = pointer.GetOriginPosition();
            raycastResult.worldNormal   = pointer.GetOriginForward();

            pointer.pointerEventData.pointerCurrentRaycast = raycastResult;

            List <RaycastResult> raycasts = new List <RaycastResult>();

            eventSystem.RaycastAll(pointer.pointerEventData, raycasts);
            return(raycasts);
        }