public static void InvokeAnySelectedFinger(LeanSelectByFinger select, LeanSelectableByFinger selectable, LeanFinger finger) { if (OnAnySelectedFinger != null) { OnAnySelectedFinger.Invoke(select, selectable, finger); } }
/// <summary>This method returns a list of all fingers based on the current settings. /// NOTE: This method must be called every frame/Update.</summary> public List <LeanFinger> UpdateAndGetFingers(bool ignoreUpFingers = false) { if (filteredFingers == null) { filteredFingers = new List <LeanFinger>(); } filteredFingers.Clear(); if (Filter == FilterType.AllFingers) { filteredFingers.AddRange(LeanSelectableByFinger.GetFingers(IgnoreStartedOverGui, false, 0, RequiredSelectable)); } else if (fingers != null) { filteredFingers.AddRange(fingers); for (var i = fingers.Count - 1; i >= 0; i--) { if (fingers[i].Up == true) { fingers.RemoveAt(i); } } } if (ignoreUpFingers == true) { for (var i = filteredFingers.Count - 1; i >= 0; i--) { if (filteredFingers[i].Up == true) { filteredFingers.RemoveAt(i); } } } if (RequiredMouseButtons > 0 && SimulatedFingersExist(filteredFingers) == true) { for (var i = 0; i < 5; i++) { var mask = 1 << i; if ((RequiredMouseButtons & mask) != 0 && LeanInput.GetMousePressed(i) == false) { filteredFingers.Clear(); } } return(filteredFingers); } if (RequiredFingerCount > 0 && filteredFingers.Count != RequiredFingerCount) { filteredFingers.Clear(); } return(filteredFingers); }
public void Unregister() { if (selectable != null) { selectable.OnSelected.RemoveListener(OnSelected); selectable.OnSelectedFinger.RemoveListener(OnSelectedFinger); selectable.OnSelectedFingerUp.RemoveListener(OnSelectedFingerUp); selectable.OnDeselected.RemoveListener(OnDeselected); selectable = null; } }
/// <summary>This method allows you to manually select an object with the specified finger using this component's selection settings.</summary> public void Select(LeanSelectable selectable, LeanFinger finger) { if (TrySelect(selectable) == true) { var selectableByFinger = selectable as LeanSelectableByFinger; if (selectableByFinger != null) { if (selectableByFinger.SelectingFingers.Contains(finger) == false) { selectableByFinger.SelectingFingers.Add(finger); } selectableByFinger.OnSelectedFinger.Invoke(finger); LeanSelectableByFinger.InvokeAnySelectedFinger(this, selectableByFinger, finger); if (finger.Up == true) { selectableByFinger.OnSelectedFingerUp.Invoke(finger); selectableByFinger.SelectingFingers.Remove(finger); } } if (onSelectedFinger != null) { onSelectedFinger.Invoke(selectable, finger); } if (OnAnySelectedFinger != null) { OnAnySelectedFinger.Invoke(this, selectable, finger); } } else { if (finger.Up == false) { var selectableByFinger = selectable as LeanSelectableByFinger; if (selectableByFinger != null) { if (selectableByFinger.SelectingFingers.Contains(finger) == false) { selectableByFinger.SelectingFingers.Add(finger); } } } } }
/// <summary>This method allows you to manually register the LeanSelectable this component is associated with.</summary> public void Register(LeanSelectableByFinger newSelectable) { if (newSelectable != selectable) { // Unregister existing Unregister(); // Register a new one? if (newSelectable != null) { selectable = newSelectable; selectable.OnSelected.AddListener(OnSelected); selectable.OnSelectedFinger.AddListener(OnSelectedFinger); selectable.OnSelectedFingerUp.AddListener(OnSelectedFingerUp); selectable.OnDeselected.AddListener(OnDeselected); } } }