/* INFINITY CODE */
/* https://infinity-code.com */
using UnityEngine;
using UnityEngine.UI;
namespace InfinityCode.OnlineMapsExamples
{
///
/// Example of how to make a tooltip using uGUI for all markers
///
[AddComponentMenu("Infinity Code/Online Maps/Examples (API Usage)/uGUICustomTooltipForAllMarkersExample")]
public class uGUICustomTooltipForAllMarkersExample : MonoBehaviour
{
///
/// Prefab of the tooltip
///
public GameObject tooltipPrefab;
///
/// Container for tooltip
///
public Canvas container;
private GameObject tooltip;
private void Start()
{
OnlineMapsMarkerManager.CreateItem(Vector2.zero, "Marker 1");
OnlineMapsMarkerManager.CreateItem(new Vector2(1, 1), "Marker 2");
OnlineMapsMarkerManager.CreateItem(new Vector2(2, 1), "Marker 3");
OnlineMapsMarkerBase.OnMarkerDrawTooltip = delegate { };
OnlineMaps.instance.OnUpdateLate += OnUpdateLate;
}
private void OnUpdateLate()
{
OnlineMapsMarkerBase tooltipMarker = OnlineMapsTooltipDrawerBase.tooltipMarker;
if (tooltipMarker != null)
{
if (tooltip == null)
{
tooltip = Instantiate(tooltipPrefab) as GameObject;
(tooltip.transform as RectTransform).SetParent(container.transform);
}
Vector2 screenPosition = OnlineMapsControlBase.instance.GetScreenPosition(tooltipMarker.position);
OnlineMapsMarker marker2D = tooltipMarker as OnlineMapsMarker;
if (marker2D != null) screenPosition.y += marker2D.height;
else screenPosition.y += 20;
Vector2 point;
Camera cam = container.renderMode == RenderMode.ScreenSpaceOverlay ? null : container.worldCamera;
RectTransformUtility.ScreenPointToLocalPointInRectangle(container.transform as RectTransform, screenPosition, cam, out point);
(tooltip.transform as RectTransform).localPosition = point;
tooltip.GetComponentInChildren().text = tooltipMarker.label;
}
else
{
OnlineMapsUtils.Destroy(tooltip);
tooltip = null;
}
}
}
}