scripts
This commit is contained in:
@@ -0,0 +1,211 @@
|
||||
using System;
|
||||
using UnityEngine.Scripting;
|
||||
|
||||
namespace UnityEngine
|
||||
{
|
||||
// Token: 0x0200044D RID: 1101
|
||||
internal class SendMouseEvents
|
||||
{
|
||||
// Token: 0x0600389B RID: 14491 RVA: 0x0006121C File Offset: 0x0005F41C
|
||||
[RequiredByNativeCode]
|
||||
private static void SetMouseMoved()
|
||||
{
|
||||
SendMouseEvents.s_MouseUsed = true;
|
||||
}
|
||||
|
||||
// Token: 0x0600389C RID: 14492 RVA: 0x00061228 File Offset: 0x0005F428
|
||||
[RequiredByNativeCode]
|
||||
private static void DoSendMouseEvents(int skipRTCameras)
|
||||
{
|
||||
Vector3 mousePosition = Input.mousePosition;
|
||||
int allCamerasCount = Camera.allCamerasCount;
|
||||
if (SendMouseEvents.m_Cameras == null || SendMouseEvents.m_Cameras.Length != allCamerasCount)
|
||||
{
|
||||
SendMouseEvents.m_Cameras = new Camera[allCamerasCount];
|
||||
}
|
||||
Camera.GetAllCameras(SendMouseEvents.m_Cameras);
|
||||
for (int i = 0; i < SendMouseEvents.m_CurrentHit.Length; i++)
|
||||
{
|
||||
SendMouseEvents.m_CurrentHit[i] = default(SendMouseEvents.HitInfo);
|
||||
}
|
||||
if (!SendMouseEvents.s_MouseUsed)
|
||||
{
|
||||
foreach (Camera camera in SendMouseEvents.m_Cameras)
|
||||
{
|
||||
if (!(camera == null) && (skipRTCameras == 0 || !(camera.targetTexture != null)))
|
||||
{
|
||||
if (camera.pixelRect.Contains(mousePosition))
|
||||
{
|
||||
GUILayer component = camera.GetComponent<GUILayer>();
|
||||
if (component)
|
||||
{
|
||||
GUIElement guielement = component.HitTest(mousePosition);
|
||||
if (guielement)
|
||||
{
|
||||
SendMouseEvents.m_CurrentHit[0].target = guielement.gameObject;
|
||||
SendMouseEvents.m_CurrentHit[0].camera = camera;
|
||||
}
|
||||
else
|
||||
{
|
||||
SendMouseEvents.m_CurrentHit[0].target = null;
|
||||
SendMouseEvents.m_CurrentHit[0].camera = null;
|
||||
}
|
||||
}
|
||||
if (camera.eventMask != 0)
|
||||
{
|
||||
Ray ray = camera.ScreenPointToRay(mousePosition);
|
||||
float z = ray.direction.z;
|
||||
float num = ((!Mathf.Approximately(0f, z)) ? Mathf.Abs((camera.farClipPlane - camera.nearClipPlane) / z) : float.PositiveInfinity);
|
||||
GameObject gameObject = camera.RaycastTry(ray, num, camera.cullingMask & camera.eventMask);
|
||||
if (gameObject != null)
|
||||
{
|
||||
SendMouseEvents.m_CurrentHit[1].target = gameObject;
|
||||
SendMouseEvents.m_CurrentHit[1].camera = camera;
|
||||
}
|
||||
else if (camera.clearFlags == CameraClearFlags.Skybox || camera.clearFlags == CameraClearFlags.Color)
|
||||
{
|
||||
SendMouseEvents.m_CurrentHit[1].target = null;
|
||||
SendMouseEvents.m_CurrentHit[1].camera = null;
|
||||
}
|
||||
GameObject gameObject2 = camera.RaycastTry2D(ray, num, camera.cullingMask & camera.eventMask);
|
||||
if (gameObject2 != null)
|
||||
{
|
||||
SendMouseEvents.m_CurrentHit[2].target = gameObject2;
|
||||
SendMouseEvents.m_CurrentHit[2].camera = camera;
|
||||
}
|
||||
else if (camera.clearFlags == CameraClearFlags.Skybox || camera.clearFlags == CameraClearFlags.Color)
|
||||
{
|
||||
SendMouseEvents.m_CurrentHit[2].target = null;
|
||||
SendMouseEvents.m_CurrentHit[2].camera = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int k = 0; k < SendMouseEvents.m_CurrentHit.Length; k++)
|
||||
{
|
||||
SendMouseEvents.SendEvents(k, SendMouseEvents.m_CurrentHit[k]);
|
||||
}
|
||||
SendMouseEvents.s_MouseUsed = false;
|
||||
}
|
||||
|
||||
// Token: 0x0600389D RID: 14493 RVA: 0x0006155C File Offset: 0x0005F75C
|
||||
private static void SendEvents(int i, SendMouseEvents.HitInfo hit)
|
||||
{
|
||||
bool mouseButtonDown = Input.GetMouseButtonDown(0);
|
||||
bool mouseButton = Input.GetMouseButton(0);
|
||||
if (mouseButtonDown)
|
||||
{
|
||||
if (hit)
|
||||
{
|
||||
SendMouseEvents.m_MouseDownHit[i] = hit;
|
||||
SendMouseEvents.m_MouseDownHit[i].SendMessage("OnMouseDown");
|
||||
}
|
||||
}
|
||||
else if (!mouseButton)
|
||||
{
|
||||
if (SendMouseEvents.m_MouseDownHit[i])
|
||||
{
|
||||
if (SendMouseEvents.HitInfo.Compare(hit, SendMouseEvents.m_MouseDownHit[i]))
|
||||
{
|
||||
SendMouseEvents.m_MouseDownHit[i].SendMessage("OnMouseUpAsButton");
|
||||
}
|
||||
SendMouseEvents.m_MouseDownHit[i].SendMessage("OnMouseUp");
|
||||
SendMouseEvents.m_MouseDownHit[i] = default(SendMouseEvents.HitInfo);
|
||||
}
|
||||
}
|
||||
else if (SendMouseEvents.m_MouseDownHit[i])
|
||||
{
|
||||
SendMouseEvents.m_MouseDownHit[i].SendMessage("OnMouseDrag");
|
||||
}
|
||||
if (SendMouseEvents.HitInfo.Compare(hit, SendMouseEvents.m_LastHit[i]))
|
||||
{
|
||||
if (hit)
|
||||
{
|
||||
hit.SendMessage("OnMouseOver");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (SendMouseEvents.m_LastHit[i])
|
||||
{
|
||||
SendMouseEvents.m_LastHit[i].SendMessage("OnMouseExit");
|
||||
}
|
||||
if (hit)
|
||||
{
|
||||
hit.SendMessage("OnMouseEnter");
|
||||
hit.SendMessage("OnMouseOver");
|
||||
}
|
||||
}
|
||||
SendMouseEvents.m_LastHit[i] = hit;
|
||||
}
|
||||
|
||||
// Token: 0x0400111A RID: 4378
|
||||
private const int m_HitIndexGUI = 0;
|
||||
|
||||
// Token: 0x0400111B RID: 4379
|
||||
private const int m_HitIndexPhysics3D = 1;
|
||||
|
||||
// Token: 0x0400111C RID: 4380
|
||||
private const int m_HitIndexPhysics2D = 2;
|
||||
|
||||
// Token: 0x0400111D RID: 4381
|
||||
private static bool s_MouseUsed = false;
|
||||
|
||||
// Token: 0x0400111E RID: 4382
|
||||
private static readonly SendMouseEvents.HitInfo[] m_LastHit = new SendMouseEvents.HitInfo[]
|
||||
{
|
||||
default(SendMouseEvents.HitInfo),
|
||||
default(SendMouseEvents.HitInfo),
|
||||
default(SendMouseEvents.HitInfo)
|
||||
};
|
||||
|
||||
// Token: 0x0400111F RID: 4383
|
||||
private static readonly SendMouseEvents.HitInfo[] m_MouseDownHit = new SendMouseEvents.HitInfo[]
|
||||
{
|
||||
default(SendMouseEvents.HitInfo),
|
||||
default(SendMouseEvents.HitInfo),
|
||||
default(SendMouseEvents.HitInfo)
|
||||
};
|
||||
|
||||
// Token: 0x04001120 RID: 4384
|
||||
private static readonly SendMouseEvents.HitInfo[] m_CurrentHit = new SendMouseEvents.HitInfo[]
|
||||
{
|
||||
default(SendMouseEvents.HitInfo),
|
||||
default(SendMouseEvents.HitInfo),
|
||||
default(SendMouseEvents.HitInfo)
|
||||
};
|
||||
|
||||
// Token: 0x04001121 RID: 4385
|
||||
private static Camera[] m_Cameras;
|
||||
|
||||
// Token: 0x0200044E RID: 1102
|
||||
private struct HitInfo
|
||||
{
|
||||
// Token: 0x0600389F RID: 14495 RVA: 0x0006180C File Offset: 0x0005FA0C
|
||||
public void SendMessage(string name)
|
||||
{
|
||||
this.target.SendMessage(name, null, SendMessageOptions.DontRequireReceiver);
|
||||
}
|
||||
|
||||
// Token: 0x060038A0 RID: 14496 RVA: 0x00061820 File Offset: 0x0005FA20
|
||||
public static implicit operator bool(SendMouseEvents.HitInfo exists)
|
||||
{
|
||||
return exists.target != null && exists.camera != null;
|
||||
}
|
||||
|
||||
// Token: 0x060038A1 RID: 14497 RVA: 0x00061858 File Offset: 0x0005FA58
|
||||
public static bool Compare(SendMouseEvents.HitInfo lhs, SendMouseEvents.HitInfo rhs)
|
||||
{
|
||||
return lhs.target == rhs.target && lhs.camera == rhs.camera;
|
||||
}
|
||||
|
||||
// Token: 0x04001122 RID: 4386
|
||||
public GameObject target;
|
||||
|
||||
// Token: 0x04001123 RID: 4387
|
||||
public Camera camera;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user