You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
3.0 KiB
101 lines
3.0 KiB
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; |
|
} |
|
} |
|
}
|
|
|