Пример #1
0
        public void Activate(SelectionRegion region, bool isHover)
        {
            if (inOutState == InOutState.Outro)
            {
                return;
            }
            GetComponent <CursorOpener>().enabled = false;
            onAnyActivate?.Invoke(this, isHover);
            switch (region)
            {
            case SelectionRegion.InnerDeadZone:
                inOutState = InOutState.Outro;
                onInnerDeadZoneActivate?.Invoke(this, isHover);
                break;

            case SelectionRegion.OuterDeadZone:
                inOutState = InOutState.Outro;
                onOuterDeadZoneActivate?.Invoke(this, isHover);
                break;

            case SelectionRegion.Button:
                if (selectedButton < 0 || selectedButton > buttons.Count)
                {
                    RadialPingsPlugin.logger.LogError("ProceduralRadialMenu was activated with a bad button index selected, possible layout failure");
                    inOutState = InOutState.Outro;
                    return;
                }
                if (buttons[selectedButton].closeOnActivate)
                {
                    inOutState = InOutState.Outro;
                }
                buttons[selectedButton].Activate(this, isHover);
                break;
            }
        }
            public void Dispose()
            {
                if (oldSelection.IsEmpty)
                {
                    oldSelection.Start = SelectionRegion.Min(oldCaret, owner.view.Position);
                    oldSelection.End   = SelectionRegion.Max(oldCaret, owner.view.Position);
                }
                else if (oldSelection.Start == oldCaret)
                {
                    var pt = oldSelection.End;
                    oldSelection.Start = SelectionRegion.Min(pt, owner.view.Position);
                    oldSelection.End   = SelectionRegion.Max(pt, owner.view.Position);
                }
                else if (oldSelection.End == oldCaret)
                {
                    var pt = oldSelection.Start;
                    oldSelection.Start = SelectionRegion.Min(pt, owner.view.Position);
                    oldSelection.End   = SelectionRegion.Max(pt, owner.view.Position);
                }

                owner.view.Selection = oldSelection;
                owner.processing     = false;
                owner = null;

                GC.SuppressFinalize(this);
            }
            public SelectionReset(PcSelectionMode owner)
            {
                this.owner = owner;

                owner.processing = true;
                oldSelection     = owner.view.Selection;
                oldCaret         = owner.view.Position;
            }
Пример #4
0
            public SelectionReset(PcSelectionMode owner)
            {
                this.owner = owner;

                owner.processing = true;
                oldSelection = owner.view.Selection;
                oldCaret = owner.view.Position;
            }
Пример #5
0
 public void SetTarget(SelectionRegion Selected)
 {
     if (Selected == null || !Selected.Enabled || !typeof(SelectionRegion).IsAssignableFrom(Selected.GetType())) {
         return;
     }
     Morphid = Selected.Morphid;
     Lane = Selected.Lane;
     Minion = Selected.Minion;
 }
Пример #6
0
 public SelectionRegion(
     int top,
     int left,
     int bottom,
     int right,
     VirtualGridViewInfo viewInfo)
 {
     this          = new SelectionRegion();
     this.Top      = top;
     this.Left     = left;
     this.Bottom   = bottom;
     this.Right    = right;
     this.ViewInfo = viewInfo;
 }
Пример #7
0
 private void ClearStuff()
 {
     renderList.Clear();
     renderStuff.clear();
     Position = new Point(0, 0);
     selection = new SelectionRegion();
 }
Пример #8
0
        void UpdateSelection()
        {
            RectTransformUtility.ScreenPointToLocalPointInRectangle(myRect, Input.mousePosition, targetCam, out Vector2 cursorPosNorm);

            cursorPosNorm = Rect.PointToNormalized(myRect.rect, cursorPosNorm);

            float cursorThetaRad = Mathf.Atan2(cursorPosNorm.y - 0.5f, cursorPosNorm.x - 0.5f);

            if (cursorThetaRad < 0)
            {
                cursorThetaRad += Mathf.PI * 2f;
            }
            float cursorDistNorm = ((cursorPosNorm - new Vector2(0.5f, 0.5f)) * 2f).magnitude;

            float cursorThetaWrapDown = cursorThetaRad - Mathf.PI * 2;
            float cursorThetaWrapUp   = cursorThetaRad + Mathf.PI * 2;

            selectedButton = -1;

            var thetaOffsetRad = thetaOffsetDegr * Mathf.PI / 180f;

            for (int i = 0; i < buttons.Count; i++)
            {
                float targetThetaMin = i * buttonThetaRad + thetaOffsetRad;
                float targetThetaMax = (i + 1) * buttonThetaRad + thetaOffsetRad;
                if ((cursorThetaRad > targetThetaMin && cursorThetaRad < targetThetaMax) ||
                    (cursorThetaWrapDown > targetThetaMin && cursorThetaWrapDown < targetThetaMax) ||
                    (cursorThetaWrapUp > targetThetaMin && cursorThetaWrapUp < targetThetaMax))
                {
                    if (cursorDistNorm > buttons[i].outerRadiusFrac)
                    {
                        selectedRegion         = SelectionRegion.OuterDeadZone;
                        buttons[i].hoverActive = false;
                    }
                    else if (cursorDistNorm < buttons[i].innerRadiusFrac)
                    {
                        selectedRegion         = SelectionRegion.InnerDeadZone;
                        buttons[i].hoverActive = false;
                    }
                    else
                    {
                        selectedButton         = i;
                        selectedRegion         = SelectionRegion.Button;
                        buttons[i].hoverActive = true;
                        if (buttons[i].isHoverComplete)
                        {
                            Activate(true);
                            return;
                        }
                    }
                }
                else
                {
                    buttons[i].hoverActive = false;
                }
            }

            if (selectedButton == -1)
            {
                selectedRegion = (cursorDistNorm > deadZoneSplitRadiusNorm) ? SelectionRegion.OuterDeadZone : SelectionRegion.InnerDeadZone;
            }
        }