Select Git revision
OpenFactExplorer.cs
OpenFactExplorer.cs 2.29 KiB
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
[RequireComponent(typeof(FactObject), typeof(RectTransform), typeof(DragHandling))]
public class OpenFactExplorer : MonoBehaviour, IPointerClickHandler
{
#region Variables
public GameObject factExplorerPrefab;
private static Transform factExplorer;
private float pressTime = 0f;
private const float LONG_PRESS_DURATION = 0.5f;
#endregion Variables
#region UnityMethods
public void OnPointerClick(PointerEventData eventData)
{
// open FactExplorer on right click on PC
if (eventData.button == PointerEventData.InputButton.Right)
{
DoOpenFactExplorer();
}
}
private void Update()
{
// open FactExplorer on press on fact longer than LONG_PRESS_DURATION
HandleTouches();
}
#endregion UnityMethods
#region Implementation
private void HandleTouches()
{
if (Input.touchCount != 1 || transform.GetComponent<DragHandling>().dragged)
{
pressTime = 0;
return;
}
var touch = Input.GetTouch(0);
if (!RectTransformUtility.RectangleContainsScreenPoint(transform.GetComponent<RectTransform>(), touch.position))
{
pressTime = 0;
return;
}
switch (touch.phase)
{
case TouchPhase.Moved:
case TouchPhase.Began:
case TouchPhase.Ended:
case TouchPhase.Canceled:
pressTime = 0;
break;
case TouchPhase.Stationary:
pressTime += Time.deltaTime;
if (pressTime >= LONG_PRESS_DURATION)
DoOpenFactExplorer();
break;
}
}
private void DoOpenFactExplorer()
{
Destroy(factExplorer != null ? factExplorer.gameObject : null);