public static void InvokeAnySelectedFinger(LeanSelectByFinger select, LeanSelectableByFinger selectable, LeanFinger finger)
 {
     if (OnAnySelectedFinger != null)
     {
         OnAnySelectedFinger.Invoke(select, selectable, finger);
     }
 }
Exemplo n.º 2
0
        /// <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;
            }
        }
Exemplo n.º 4
0
        /// <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);
                }
            }
        }