/// <summary> /// /// </summary> /// <param name="gameObject"></param> /// <param name="includeChildren"></param> /// <param name="callback"></param> public void RegisterTouchDown(GameObject gameObject, bool includeChildren, OnTouchDelegate callback) { if (gameObject == null) { RegisterTouchDown(callback); return; } GameObject target = gameObject; if (gameObject.transform is RectTransform) { } else { Collider collider = gameObject.GetComponentInChildren <Collider>(); if (collider == null) { DebugLogger.LogWarning("Touch : Could not register touch down. No Collider found on {0}", gameObject.name); return; } target = collider.gameObject; } LeanFingerDown down = target.AddComponent <LeanFingerDown>(); down.IgnoreStartedOverGui = false; LeanSelectable selectable = AddSelectableComponent(gameObject); selectable.DeselectOnUp = true; down.RequiredSelectable = selectable; down.OnFinger.AddListener((LeanFinger leanFinger) => { Vector3 pos = leanFinger.ScreenPosition; callback?.Invoke(new TouchCallbackVO { gameObject = gameObject, screenPosition = leanFinger.ScreenPosition }); }); }
public void Initialize() { registeredSwipeDeltaCallbacks = new Dictionary <GameObject, List <OnTouchDelegate> >(); registeredTapCallbacks = new Dictionary <LeanFingerTap, List <OnTouchDelegate> >(); leanTouch = gameObject.AddComponent <LeanTouch>(); leanSelect = gameObject.AddComponent <LeanSelect>(); leanFingerTap = gameObject.AddComponent <LeanFingerTap>(); leanFingerDown = gameObject.AddComponent <LeanFingerDown>(); leanFingerUp = gameObject.AddComponent <LeanFingerUp>(); leanFingerTap.OnFinger.AddListener(leanSelect.SelectScreenPosition); leanFingerDown.OnFinger.AddListener(leanSelect.SelectScreenPosition); leanSelect.LayerMask &= ~(1 << LayerMask.NameToLayer("PostProcessing")); leanSelect.SelectUsing = LeanSelect.SelectType.CanvasUI; leanSelect.SelectUsingAlt = LeanSelect.SelectType.Raycast3D; leanFingerDown.IgnoreStartedOverGui = false; leanFingerUp.IgnoreStartedOverGui = false; leanFingerTap.IgnoreStartedOverGui = false; }
/// <summary> /// /// </summary> /// <param name="gameObject"></param> public void UnRegisterAll(GameObject gameObject) { LeanFingerTap tap = gameObject.GetComponent <LeanFingerTap>(); LeanFingerDown down = gameObject.GetComponent <LeanFingerDown>(); LeanFingerUp up = gameObject.GetComponent <LeanFingerUp>(); LeanDragTranslate drag = gameObject.GetComponent <LeanDragTranslate>(); if (drag != null) { GameObject.Destroy(drag); } if (down != null) { down.OnFinger.RemoveAllListeners(); down.OnPosition.RemoveAllListeners(); } if (up != null) { up.OnFinger.RemoveAllListeners(); up.OnPosition.RemoveAllListeners(); } if (tap != null) { tap.OnFinger.RemoveAllListeners(); tap.OnPosition.RemoveAllListeners(); if (registeredTapCallbacks.ContainsKey(tap)) { registeredTapCallbacks.Remove(tap); } } if (registeredSwipeDeltaCallbacks.ContainsKey(gameObject)) { registeredSwipeDeltaCallbacks.Remove(gameObject); } }