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)
{
Camera[] cameras = SendMouseEvents.m_Cameras;
for (int j = 0; j < cameras.Length; j++)
{
Camera camera = cameras[j];
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 distance = (!Mathf.Approximately(0f, z)) ? Mathf.Abs((camera.farClipPlane - camera.nearClipPlane) / z) : float.PositiveInfinity;
GameObject gameObject = camera.RaycastTry(ray, distance, 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, distance, 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;
}