Files
2026-06-04 11:42:34 +02:00

126 lines
3.4 KiB
C#

using System;
using System.Collections.Generic;
using UnityEngine.UI;
namespace UnityEngine.EventSystems
{
// Token: 0x02000031 RID: 49
[AddComponentMenu("Event/Physics Raycaster")]
[RequireComponent(typeof(Camera))]
public class PhysicsRaycaster : BaseRaycaster
{
// Token: 0x06000148 RID: 328 RVA: 0x00006174 File Offset: 0x00004574
protected PhysicsRaycaster()
{
}
// Token: 0x17000055 RID: 85
// (get) Token: 0x06000149 RID: 329 RVA: 0x0000618C File Offset: 0x0000458C
public override Camera eventCamera
{
get
{
if (this.m_EventCamera == null)
{
this.m_EventCamera = base.GetComponent<Camera>();
}
return this.m_EventCamera ?? Camera.main;
}
}
// Token: 0x17000056 RID: 86
// (get) Token: 0x0600014A RID: 330 RVA: 0x000061D0 File Offset: 0x000045D0
public virtual int depth
{
get
{
return (!(this.eventCamera != null)) ? 16777215 : ((int)this.eventCamera.depth);
}
}
// Token: 0x17000057 RID: 87
// (get) Token: 0x0600014B RID: 331 RVA: 0x0000620C File Offset: 0x0000460C
public int finalEventMask
{
get
{
return (!(this.eventCamera != null)) ? (-1) : (this.eventCamera.cullingMask & this.m_EventMask);
}
}
// Token: 0x17000058 RID: 88
// (get) Token: 0x0600014C RID: 332 RVA: 0x00006250 File Offset: 0x00004650
// (set) Token: 0x0600014D RID: 333 RVA: 0x0000626B File Offset: 0x0000466B
public LayerMask eventMask
{
get
{
return this.m_EventMask;
}
set
{
this.m_EventMask = value;
}
}
// Token: 0x0600014E RID: 334 RVA: 0x00006278 File Offset: 0x00004678
protected void ComputeRayAndDistance(PointerEventData eventData, out Ray ray, out float distanceToClipPlane)
{
ray = this.eventCamera.ScreenPointToRay(eventData.position);
float z = ray.direction.z;
distanceToClipPlane = ((!Mathf.Approximately(0f, z)) ? Mathf.Abs((this.eventCamera.farClipPlane - this.eventCamera.nearClipPlane) / z) : float.PositiveInfinity);
}
// Token: 0x0600014F RID: 335 RVA: 0x000062EC File Offset: 0x000046EC
public override void Raycast(PointerEventData eventData, List<RaycastResult> resultAppendList)
{
if (!(this.eventCamera == null) && this.eventCamera.pixelRect.Contains(eventData.position))
{
Ray ray;
float num;
this.ComputeRayAndDistance(eventData, out ray, out num);
if (ReflectionMethodsCache.Singleton.raycast3DAll != null)
{
RaycastHit[] array = ReflectionMethodsCache.Singleton.raycast3DAll(ray, num, this.finalEventMask);
if (array.Length > 1)
{
Array.Sort<RaycastHit>(array, (RaycastHit r1, RaycastHit r2) => r1.distance.CompareTo(r2.distance));
}
if (array.Length != 0)
{
int i = 0;
int num2 = array.Length;
while (i < num2)
{
RaycastResult raycastResult = new RaycastResult
{
gameObject = array[i].collider.gameObject,
module = this,
distance = array[i].distance,
worldPosition = array[i].point,
worldNormal = array[i].normal,
screenPosition = eventData.position,
index = (float)resultAppendList.Count,
sortingLayer = 0,
sortingOrder = 0
};
resultAppendList.Add(raycastResult);
i++;
}
}
}
}
}
// Token: 0x040000A1 RID: 161
protected const int kNoEventMaskSet = -1;
// Token: 0x040000A2 RID: 162
protected Camera m_EventCamera;
// Token: 0x040000A3 RID: 163
[SerializeField]
protected LayerMask m_EventMask = -1;
}
}