52 lines
1.4 KiB
C#
52 lines
1.4 KiB
C#
![]() |
using TMPro;
|
|||
|
using UnityEngine;
|
|||
|
using UnityEngine.EventSystems;
|
|||
|
|
|||
|
public class BodyLinkHandler : MonoBehaviour, IPointerClickHandler, IPointerExitHandler
|
|||
|
{
|
|||
|
private TextMeshProUGUI tmp;
|
|||
|
|
|||
|
void Awake()
|
|||
|
{
|
|||
|
tmp = GetComponent<TextMeshProUGUI>();
|
|||
|
}
|
|||
|
|
|||
|
void Update()
|
|||
|
{
|
|||
|
Camera eventCam = null;
|
|||
|
|
|||
|
// Try to get the event camera from the canvas (better than Camera.main)
|
|||
|
if (tmp.canvas.renderMode == RenderMode.WorldSpace)
|
|||
|
{
|
|||
|
eventCam = tmp.canvas.worldCamera;
|
|||
|
}
|
|||
|
|
|||
|
int linkIndex = TMP_TextUtilities.FindIntersectingLink(tmp, Input.mousePosition, eventCam);
|
|||
|
if (linkIndex != -1)
|
|||
|
{
|
|||
|
CursorManager.Instance?.SetLinkCursor();
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
CursorManager.Instance?.SetDefaultCursor();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
public void OnPointerClick(PointerEventData eventData)
|
|||
|
{
|
|||
|
int linkIndex = TMP_TextUtilities.FindIntersectingLink(tmp, Input.mousePosition, eventData.pressEventCamera);
|
|||
|
if (linkIndex != -1)
|
|||
|
{
|
|||
|
string linkID = tmp.textInfo.linkInfo[linkIndex].GetLinkID();
|
|||
|
Debug.Log("🔗 Clicked link: " + linkID);
|
|||
|
EmailPopupManager.Instance?.ShowPopup(linkID);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void OnPointerExit(PointerEventData eventData)
|
|||
|
{
|
|||
|
CursorManager.Instance?.SetDefaultCursor();
|
|||
|
}
|
|||
|
}
|