summaryrefslogtreecommitdiff
path: root/Assets/uGUI-2017.1/UnityEngine.UI/EventSystem/Raycasters/Physics2DRaycaster.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/uGUI-2017.1/UnityEngine.UI/EventSystem/Raycasters/Physics2DRaycaster.cs')
-rw-r--r--Assets/uGUI-2017.1/UnityEngine.UI/EventSystem/Raycasters/Physics2DRaycaster.cs54
1 files changed, 54 insertions, 0 deletions
diff --git a/Assets/uGUI-2017.1/UnityEngine.UI/EventSystem/Raycasters/Physics2DRaycaster.cs b/Assets/uGUI-2017.1/UnityEngine.UI/EventSystem/Raycasters/Physics2DRaycaster.cs
new file mode 100644
index 0000000..6346938
--- /dev/null
+++ b/Assets/uGUI-2017.1/UnityEngine.UI/EventSystem/Raycasters/Physics2DRaycaster.cs
@@ -0,0 +1,54 @@
+using System.Collections.Generic;
+using UnityEngine.UI;
+
+namespace UnityEngine.EventSystems
+{
+ /// <summary>
+ /// Simple event system using physics raycasts.
+ /// </summary>
+ [AddComponentMenu("Event/Physics 2D Raycaster")]
+ [RequireComponent(typeof(Camera))]
+ public class Physics2DRaycaster : PhysicsRaycaster
+ {
+ protected Physics2DRaycaster()
+ {}
+
+ // ·ΆΙδΟί
+ public override void Raycast(PointerEventData eventData, List<RaycastResult> resultAppendList)
+ {
+ if (eventCamera == null)
+ return;
+
+ Ray ray;
+ float distanceToClipPlane;
+ ComputeRayAndDistance(eventData, out ray, out distanceToClipPlane);
+
+ if (ReflectionMethodsCache.Singleton.getRayIntersectionAll == null)
+ return;
+
+ var hits = ReflectionMethodsCache.Singleton.getRayIntersectionAll(ray, distanceToClipPlane, finalEventMask);
+
+ if (hits.Length != 0)
+ {
+ for (int b = 0, bmax = hits.Length; b < bmax; ++b)
+ {
+ var sr = hits[b].collider.gameObject.GetComponent<SpriteRenderer>();
+
+ var result = new RaycastResult
+ {
+ gameObject = hits[b].collider.gameObject,
+ module = this,
+ distance = Vector3.Distance(eventCamera.transform.position, hits[b].point),
+ worldPosition = hits[b].point,
+ worldNormal = hits[b].normal,
+ screenPosition = eventData.position,
+ index = resultAppendList.Count,
+ sortingLayer = sr != null ? sr.sortingLayerID : 0,
+ sortingOrder = sr != null ? sr.sortingOrder : 0
+ };
+ resultAppendList.Add(result);
+ }
+ }
+ }
+ }
+}