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); }
// 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); }