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; }
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; }
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; }
private void ClearStuff() { renderList.Clear(); renderStuff.clear(); Position = new Point(0, 0); selection = new SelectionRegion(); }
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; } }