/* INFINITY CODE 2013-2017 */
/* http://www.infinity-code.com */
using UnityEngine;
using UnityEngine.UI;
namespace InfinityCode.OnlineMapsExamples
{
///
/// Example of how to make a tooltip using uGUI for all markers
///
public class uGUICustomTooltipForAllMarkersExample3 : MonoBehaviour
{
///
/// Prefab of the tooltip
///
public GameObject tooltipPrefab;
///
/// Container for tooltip
///
public Canvas container;
private GameObject tooltip;
private void Start()
{
OnlineMapsMarker marker = OnlineMaps.instance.AddMarker(OnlineMaps.instance.position, "Marker 1");
marker.customData = new CData
{
title = "Marker 1",
label = "Hello World"
};
OnlineMapsMarkerBase.OnMarkerDrawTooltip = delegate { };
OnlineMaps.instance.OnUpdateLate += OnUpdateLate;
}
private void OnUpdateLate()
{
OnlineMapsMarker tooltipMarker = OnlineMaps.instance.tooltipMarker as OnlineMapsMarker;
CData data = null;
if (tooltipMarker != null) data = tooltipMarker.customData as CData;
if (data != null)
{
if (tooltip == null)
{
tooltip = Instantiate(tooltipPrefab) as GameObject;
(tooltip.transform as RectTransform).SetParent(container.transform);
}
Vector2 screenPosition = OnlineMapsControlBase.instance.GetScreenPosition(tooltipMarker.position);
screenPosition.y += tooltipMarker.height;
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;
Text[] texts = tooltip.GetComponentsInChildren();
texts[0].text = data.title;
texts[1].text = data.label;
}
else
{
OnlineMapsUtils.DestroyImmediate(tooltip);
tooltip = null;
}
}
internal class CData
{
public string title;
public string label;
}
}
}