private float GetEllipseLength(float degree, float itemCount) { if (itemCount > 4) { itemCount += itemCount % 2; } return(MathfExtension.EvaluateEllipse(degree, 60 + 10 * Mathf.Max(6, itemCount), 50 + 12 * Mathf.Max(3, itemCount))); }
public void ShowSubMenuAt(Vector2 position, MarkingMenuItem[] items, float from = 0, float to = 360) { int itemCount = items.Length; float degreeDelta = (to - from) / (itemCount - 1 == 0 ? 1 : itemCount - 1); for (int i = 0; i < itemCount; ++i) { float degree = from + degreeDelta * i; float length = MathfExtension.EvaluateEllipse(degree, 180, 100); items[i].Show(); items[i].Position = position + new Vector2(length * Mathf.Cos(degree * Mathf.Deg2Rad), length * Mathf.Sin(degree * Mathf.Deg2Rad)); items[i].Degree = degree; } shownItems.Push(items); }