102 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| 
 | |
| namespace UnityEngine.EventSystems
 | |
| {
 | |
|     /// <summary>
 | |
|     /// Base class for any RayCaster.
 | |
|     /// </summary>
 | |
|     /// <remarks>
 | |
|     /// A Raycaster is responsible for raycasting against scene elements to determine if the cursor is over them. Default Raycasters include PhysicsRaycaster, Physics2DRaycaster, GraphicRaycaster.
 | |
|     /// Custom raycasters can be added by extending this class.
 | |
|     /// </remarks>
 | |
|     public abstract class BaseRaycaster : UIBehaviour
 | |
|     {
 | |
|         private BaseRaycaster m_RootRaycaster;
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Raycast against the scene.
 | |
|         /// </summary>
 | |
|         /// <param name="eventData">Current event data.</param>
 | |
|         /// <param name="resultAppendList">List of hit Objects.</param>
 | |
|         public abstract void Raycast(PointerEventData eventData, List<RaycastResult> resultAppendList);
 | |
| 
 | |
|         /// <summary>
 | |
|         /// The camera that will generate rays for this raycaster.
 | |
|         /// </summary>
 | |
|         public abstract Camera eventCamera { get; }
 | |
| 
 | |
|         [Obsolete("Please use sortOrderPriority and renderOrderPriority", false)]
 | |
|         public virtual int priority
 | |
|         {
 | |
|             get { return 0; }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Priority of the raycaster based upon sort order.
 | |
|         /// </summary>
 | |
|         public virtual int sortOrderPriority
 | |
|         {
 | |
|             get { return int.MinValue; }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Priority of the raycaster based upon render order.
 | |
|         /// </summary>
 | |
|         public virtual int renderOrderPriority
 | |
|         {
 | |
|             get { return int.MinValue; }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Raycaster on root canvas
 | |
|         /// </summary>
 | |
|         public BaseRaycaster rootRaycaster
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 if (m_RootRaycaster == null)
 | |
|                 {
 | |
|                     var baseRaycasters = GetComponentsInParent<BaseRaycaster>();
 | |
|                     if (baseRaycasters.Length != 0)
 | |
|                         m_RootRaycaster = baseRaycasters[baseRaycasters.Length - 1];
 | |
|                 }
 | |
| 
 | |
|                 return m_RootRaycaster;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public override string ToString()
 | |
|         {
 | |
|             return "Name: " + gameObject + "\n" +
 | |
|                 "eventCamera: " + eventCamera + "\n" +
 | |
|                 "sortOrderPriority: " + sortOrderPriority + "\n" +
 | |
|                 "renderOrderPriority: " + renderOrderPriority;
 | |
|         }
 | |
| 
 | |
|         protected override void OnEnable()
 | |
|         {
 | |
|             base.OnEnable();
 | |
|             RaycasterManager.AddRaycaster(this);
 | |
|         }
 | |
| 
 | |
|         protected override void OnDisable()
 | |
|         {
 | |
|             RaycasterManager.RemoveRaycasters(this);
 | |
|             base.OnDisable();
 | |
|         }
 | |
| 
 | |
|         protected override void OnCanvasHierarchyChanged()
 | |
|         {
 | |
|             base.OnCanvasHierarchyChanged();
 | |
|             m_RootRaycaster = null;
 | |
|         }
 | |
| 
 | |
|         protected override void OnTransformParentChanged()
 | |
|         {
 | |
|             base.OnTransformParentChanged();
 | |
|             m_RootRaycaster = null;
 | |
|         }
 | |
|     }
 | |
| }
 |