175 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			175 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using UnityEngine.UIElements;
 | |
| 
 | |
| namespace UnityEngine.EventSystems
 | |
| {
 | |
|     /// <summary>
 | |
|     /// A hit result from a BaseRaycaster.
 | |
|     /// </summary>
 | |
|     public struct RaycastResult
 | |
|     {
 | |
|         private GameObject m_GameObject; // Game object hit by the raycast
 | |
| 
 | |
|         /// <summary>
 | |
|         /// The GameObject that was hit by the raycast.
 | |
|         /// </summary>
 | |
|         public GameObject gameObject
 | |
|         {
 | |
|             get { return m_GameObject; }
 | |
|             set { m_GameObject = value; }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// BaseRaycaster that raised the hit.
 | |
|         /// </summary>
 | |
|         public BaseRaycaster module;
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Distance to the hit.
 | |
|         /// </summary>
 | |
|         public float distance;
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Hit index
 | |
|         /// </summary>
 | |
|         public float index;
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Used by raycasters where elements may have the same unit distance, but have specific ordering.
 | |
|         /// </summary>
 | |
|         public int depth;
 | |
| 
 | |
|         /// <summary>
 | |
|         /// The sorting group ID when the hit object is influenced by a SortingGroup.
 | |
|         /// </summary>
 | |
|         /// <remarks>
 | |
|         /// For UI.Graphic elements will always be 0.
 | |
|         /// For 3D objects this will always be 0.
 | |
|         /// For 2D objects if a SortingOrder is influencing the same object as the hit collider then the renderers sortingGroupID will be used; otherwise SortingGroup.invalidSortingGroupID.
 | |
|         /// </remarks>
 | |
|         public int sortingGroupID;
 | |
| 
 | |
|         /// <summary>
 | |
|         /// The sorting group order when the hit object is influenced by a SortingGroup.
 | |
|         /// </summary>
 | |
|         /// <remarks>
 | |
|         /// For UI.Graphic elements this will always be 0.
 | |
|         /// For 3D objects this will always be 0.
 | |
|         /// For 2D objects if a SortingOrder is influencing the same object as the hit collider then the renderers sortingGroupOrder will be used.
 | |
|         /// </remarks>
 | |
|         public int sortingGroupOrder;
 | |
| 
 | |
|         /// <summary>
 | |
|         /// The SortingLayer of the hit object.
 | |
|         /// </summary>
 | |
|         /// <remarks>
 | |
|         /// For UI.Graphic elements this will be the values from that graphic's Canvas
 | |
|         /// For 3D objects this will always be 0.
 | |
|         /// For 2D objects if a 2D Renderer (Sprite, Tilemap, SpriteShape) is attached to the same object as the hit collider that sortingLayerID will be used.
 | |
|         /// </remarks>
 | |
|         public int sortingLayer;
 | |
| 
 | |
|         /// <summary>
 | |
|         /// The SortingOrder for the hit object.
 | |
|         /// </summary>
 | |
|         /// <remarks>
 | |
|         /// For Graphic elements this will be the values from that graphics Canvas
 | |
|         /// For 3D objects this will always be 0.
 | |
|         /// For 2D objects if a 2D Renderer (Sprite, Tilemap, SpriteShape) is attached to the same object as the hit collider that sortingOrder will be used.
 | |
|         /// </remarks>
 | |
|         public int sortingOrder;
 | |
| 
 | |
|         /// <summary>
 | |
|         /// The world position of the raycast ray origin.
 | |
|         /// </summary>
 | |
|         public Vector3 origin;
 | |
| 
 | |
|         /// <summary>
 | |
|         /// The world position of the where the raycast has hit.
 | |
|         /// </summary>
 | |
|         public Vector3 worldPosition;
 | |
| 
 | |
|         /// <summary>
 | |
|         /// The normal at the hit location of the raycast.
 | |
|         /// </summary>
 | |
|         public Vector3 worldNormal;
 | |
| 
 | |
|         /// <summary>
 | |
|         /// The screen position from which the raycast was generated.
 | |
|         /// </summary>
 | |
|         public Vector2 screenPosition;
 | |
| 
 | |
|         /// <summary>
 | |
|         /// The display index from which the raycast was generated.
 | |
|         /// </summary>
 | |
|         public int displayIndex;
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Is there an associated module and a hit GameObject.
 | |
|         /// </summary>
 | |
|         public bool isValid
 | |
|         {
 | |
|             get { return module != null && gameObject != null; }
 | |
|         }
 | |
| 
 | |
|         // This code is disabled unless the com.unity.modules.uielements module is present.
 | |
|         // The UIElements module is always present in the Editor but it can be stripped from a project build if unused.
 | |
| #if PACKAGE_UITOOLKIT
 | |
|         /// <summary>
 | |
|         /// The UIToolkit Document that was intersected by this raycast, if any.
 | |
|         /// </summary>
 | |
|         /// <remarks>This is only useful in the context of EventSystem UI Toolkit interoperability.</remarks>
 | |
|         /// <seealso cref="UnityEngine.UIElements.EventSystemUIToolkitInteroperabilityBridge"/>
 | |
|         public UIDocument document;
 | |
| 
 | |
|         /// <summary>
 | |
|         /// The UIToolkit Visual Element that was intersected by this raycast, if any.
 | |
|         /// </summary>
 | |
|         /// <remarks>This is only useful in the context of EventSystem UI Toolkit interoperability.</remarks>
 | |
|         /// <seealso cref="UnityEngine.UIElements.EventSystemUIToolkitInteroperabilityBridge"/>
 | |
|         public VisualElement element;
 | |
| #endif
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Reset the result.
 | |
|         /// </summary>
 | |
|         public void Clear()
 | |
|         {
 | |
|             gameObject = null;
 | |
|             module = null;
 | |
|             distance = 0;
 | |
|             index = 0;
 | |
|             depth = 0;
 | |
|             sortingLayer = 0;
 | |
|             sortingOrder = 0;
 | |
|             origin = Vector3.zero;
 | |
|             worldNormal = Vector3.up;
 | |
|             worldPosition = Vector3.zero;
 | |
|             screenPosition = Vector3.zero;
 | |
|             displayIndex = 0;
 | |
| #if PACKAGE_UITOOLKIT
 | |
|             document = null;
 | |
|             element = null;
 | |
| #endif
 | |
|         }
 | |
| 
 | |
|         public override string ToString()
 | |
|         {
 | |
|             if (!isValid)
 | |
|                 return "";
 | |
| 
 | |
|             return "Name: " + gameObject + "\n" +
 | |
|                 "module: " + module + "\n" +
 | |
|                 "distance: " + distance + "\n" +
 | |
|                 "index: " + index + "\n" +
 | |
|                 "depth: " + depth + "\n" +
 | |
|                 "worldNormal: " + worldNormal + "\n" +
 | |
|                 "worldPosition: " + worldPosition + "\n" +
 | |
|                 "screenPosition: " + screenPosition + "\n" +
 | |
|                 "module.sortOrderPriority: " + module.sortOrderPriority + "\n" +
 | |
|                 "module.renderOrderPriority: " + module.renderOrderPriority + "\n" +
 | |
|                 "sortingLayer: " + sortingLayer + "\n" +
 | |
|                 "sortingOrder: " + sortingOrder;
 | |
|         }
 | |
|     }
 | |
| }
 |