protected override Vector2[] FillItem(ChartItemVO item, Vector2 pos, Vector2 size, float lerp) { Vector2 sizeDelta = (transform as RectTransform).sizeDelta; float radius = Mathf.Min(sizeDelta.x, sizeDelta.y) / 2; Vector2 center = Vector2.one * radius; PiePieceVO piece = item as PiePieceVO; Vector2 fillInfo = Data.GetItemFillInfo(piece); canvas.Arc(center, radius, false, Color.white, 1, true, item.color, fillInfo.x, fillInfo.y, 180); return(new Vector2[] {}); }
/// <summary> /// Get pie piece fill info, x is starting position, y is fill amount /// </summary> public Vector2 GetItemFillInfo(PiePieceVO piece) { float totalValue = this.totalValue; float weight = (piece.value / totalValue); int index = Array.IndexOf(m_Items, piece); float startFill = 0; for (int i = 0; i < index; i++) { startFill += m_Items[i].value; } startFill = (startFill / totalValue); // float dicimalStart = startFill - (int)startFill; // startFill = (int)startFill; // weight = (int) weight + dicimalStart; return(new Vector2(startFill * 100, weight * 100)); }