using UnityEngine; using System.Collections.Generic; namespace Lean.Touch { /// This component tells you when a finger finishes touching the screen. The finger must begin touching the screen with the specified the specified conditions for it to be considered. [HelpURL(LeanTouch.HelpUrlPrefix + "LeanFingerUp")] [AddComponentMenu(LeanTouch.ComponentPathPrefix + "Finger Up")] public class LeanFingerUp : LeanFingerDown { /// Ignore fingers with OverGui? public bool IgnoreIsOverGui { set { ignoreIsOverGui = value; } get { return ignoreIsOverGui; } } [SerializeField] private bool ignoreIsOverGui; private List fingers = new List(); protected override void OnEnable() { LeanTouch.OnFingerDown += HandleFingerDown; LeanTouch.OnFingerUp += HandleFingerUp; } protected override void OnDisable() { LeanTouch.OnFingerDown -= HandleFingerDown; LeanTouch.OnFingerUp -= HandleFingerUp; } protected override bool UseFinger(LeanFinger finger) { if (ignoreIsOverGui == true && finger.IsOverGui == true) { return false; } return base.UseFinger(finger); } protected override void HandleFingerDown(LeanFinger finger) { if (UseFinger(finger) == true) { fingers.Add(finger); } } protected virtual void HandleFingerUp(LeanFinger finger) { if (fingers.Remove(finger) == true) { InvokeFinger(finger); } } } } #if UNITY_EDITOR namespace Lean.Touch.Editor { using UnityEditor; using TARGET = LeanFingerUp; [CanEditMultipleObjects] [CustomEditor(typeof(TARGET))] public class LeanFingerUp_Editor : LeanFingerDown_Editor { protected override void OnInspector() { TARGET tgt; TARGET[] tgts; GetTargets(out tgt, out tgts); base.OnInspector(); } } } #endif