add project files
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace OHM.UnityToolkit
|
||||
{
|
||||
public static class UIUtils
|
||||
{
|
||||
public static void AlignToWorldObject(Transform worldObject, RectTransform uiObjectToAlign)
|
||||
{
|
||||
if (worldObject != null)
|
||||
{
|
||||
AlignToWorldPosition(worldObject.position, uiObjectToAlign);
|
||||
}
|
||||
}
|
||||
|
||||
public static void AlignToWorldPosition(Vector3 targetWorldPosition, RectTransform uiObjectToAlign)
|
||||
{
|
||||
Camera cam = Camera.main;
|
||||
if (cam == null || uiObjectToAlign == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
Canvas canvas = uiObjectToAlign.GetComponentInParent<Canvas>();
|
||||
if (canvas == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
RectTransform canvasRect = canvas.GetComponent<RectTransform>();
|
||||
Vector3 viewport = cam.WorldToViewportPoint(targetWorldPosition);
|
||||
Vector2 canvasSize = canvasRect.sizeDelta;
|
||||
uiObjectToAlign.anchoredPosition = new Vector2(
|
||||
(viewport.x - canvasRect.pivot.x) * canvasSize.x,
|
||||
(viewport.y - canvasRect.pivot.y) * canvasSize.y);
|
||||
}
|
||||
|
||||
public static bool IsInputBlocked(Vector2 inputPos)
|
||||
{
|
||||
var pointer = new PointerEventData(EventSystem.current);
|
||||
pointer.position = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
|
||||
var results = new List<RaycastResult>();
|
||||
EventSystem.current.RaycastAll(pointer, results);
|
||||
for (int i = 0; i < results.Count; i++)
|
||||
{
|
||||
GameObject go = results[i].gameObject;
|
||||
if (go.GetComponent<Button>() != null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (go.GetComponent<UIInputBlocker>() != null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user