126 lines
3.4 KiB
C#
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;
|
|
}
|
|
}
|