Skip to content
Snippets Groups Projects
Select Git revision
  • 436df6b712169fbb7f7934c54baedde743032d89
  • master default
  • JS-based-scroll-rendering
  • Paul_Marius_Level
  • Paul_Marius_2
  • Paul_Marius
  • Andi_Mark
  • be-UnityWebView
  • gitignoreFrameitServer
  • ZimmerBSc
  • Bugfix_StageLoading
  • stages
  • MAZIFAU_Experimental
  • tsc/coneworld
  • tsc/fact-interaction
  • marcel
  • MaZiFAU_TopSort
  • mergeHelper
  • zwischenSpeichern
  • tempAndrToMaster
  • SebBranch
  • 3.0
  • v2.1
  • v2.0
  • v1.0
25 results

OpenFactExplorer.cs

Blame
  • 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);