private static bool RadialCut(Vector2[] xy, Vector2[] uv, float fill, bool invert, int corner) { if ((double)fill < 0.001) { return(false); } if ((corner & 1) == 1) { invert = !invert; } if (!invert && (double)fill > 0.999000012874603) { return(true); } float num = Mathf.Clamp01(fill); if (invert) { num = 1f - num; } float f = num * 1.570796f; float cos = Mathf.Cos(f); float sin = Mathf.Sin(f); Image2.RadialCut(xy, cos, sin, invert, corner); Image2.RadialCut(uv, cos, sin, invert, corner); return(true); }
private void GenerateFilledSprite(List <UIVertex> vbo, bool preserveAspect) { if ((double)base.get_fillAmount() < 0.001) { return; } Vector4 drawingDimensions = this.GetDrawingDimensions(preserveAspect, Image2.s_sizeScaling[(int)this.alphaTexLayout]); Vector2 zero = Vector2.zero; Vector4 vector = Vector4.zero; if (base.get_overrideSprite() != null) { vector = Image2.GetOuterUV(base.get_overrideSprite(), this.alphaTexLayout, out zero); } UIVertex simpleVert = UIVertex.simpleVert; simpleVert.color = base.get_color(); float num = vector.x; float num2 = vector.y; float num3 = vector.z; float num4 = vector.w; if (base.get_fillMethod() == null || base.get_fillMethod() == 1) { if (base.get_fillMethod() == null) { float num5 = (num3 - num) * base.get_fillAmount(); if (base.get_fillOrigin() == 1) { drawingDimensions.x = drawingDimensions.z - (drawingDimensions.z - drawingDimensions.x) * base.get_fillAmount(); num = num3 - num5; } else { drawingDimensions.z = drawingDimensions.x + (drawingDimensions.z - drawingDimensions.x) * base.get_fillAmount(); num3 = num + num5; } } else if (base.get_fillMethod() == 1) { float num6 = (num4 - num2) * base.get_fillAmount(); if (base.get_fillOrigin() == 1) { drawingDimensions.y = drawingDimensions.w - (drawingDimensions.w - drawingDimensions.y) * base.get_fillAmount(); num2 = num4 - num6; } else { drawingDimensions.w = drawingDimensions.y + (drawingDimensions.w - drawingDimensions.y) * base.get_fillAmount(); num4 = num2 + num6; } } } Image2.s_Xy[0] = new Vector2(drawingDimensions.x, drawingDimensions.y); Image2.s_Xy[1] = new Vector2(drawingDimensions.x, drawingDimensions.w); Image2.s_Xy[2] = new Vector2(drawingDimensions.z, drawingDimensions.w); Image2.s_Xy[3] = new Vector2(drawingDimensions.z, drawingDimensions.y); Image2.s_Uv[0] = new Vector2(num, num2); Image2.s_Uv[1] = new Vector2(num, num4); Image2.s_Uv[2] = new Vector2(num3, num4); Image2.s_Uv[3] = new Vector2(num3, num2); if ((double)base.get_fillAmount() < 1.0) { if (base.get_fillMethod() == 2) { if (!Image2.RadialCut(Image2.s_Xy, Image2.s_Uv, base.get_fillAmount(), base.get_fillClockwise(), base.get_fillOrigin())) { return; } for (int i = 0; i < 4; i++) { simpleVert.position = Image2.s_Xy[i]; simpleVert.uv0 = Image2.s_Uv[i]; simpleVert.uv1 = simpleVert.uv0 + zero; vbo.Add(simpleVert); } return; } else { if (base.get_fillMethod() == 3) { for (int j = 0; j < 2; j++) { int num7 = (base.get_fillOrigin() <= 1) ? 0 : 1; float t; float t2; float t3; float t4; if (base.get_fillOrigin() == 0 || base.get_fillOrigin() == 2) { t = 0f; t2 = 1f; if (j == num7) { t3 = 0f; t4 = 0.5f; } else { t3 = 0.5f; t4 = 1f; } } else { t3 = 0f; t4 = 1f; if (j == num7) { t = 0.5f; t2 = 1f; } else { t = 0f; t2 = 0.5f; } } Image2.s_Xy[0].x = Mathf.Lerp(drawingDimensions.x, drawingDimensions.z, t3); Image2.s_Xy[1].x = Image2.s_Xy[0].x; Image2.s_Xy[2].x = Mathf.Lerp(drawingDimensions.x, drawingDimensions.z, t4); Image2.s_Xy[3].x = Image2.s_Xy[2].x; Image2.s_Xy[0].y = Mathf.Lerp(drawingDimensions.y, drawingDimensions.w, t); Image2.s_Xy[1].y = Mathf.Lerp(drawingDimensions.y, drawingDimensions.w, t2); Image2.s_Xy[2].y = Image2.s_Xy[1].y; Image2.s_Xy[3].y = Image2.s_Xy[0].y; Image2.s_Uv[0].x = Mathf.Lerp(num, num3, t3); Image2.s_Uv[1].x = Image2.s_Uv[0].x; Image2.s_Uv[2].x = Mathf.Lerp(num, num3, t4); Image2.s_Uv[3].x = Image2.s_Uv[2].x; Image2.s_Uv[0].y = Mathf.Lerp(num2, num4, t); Image2.s_Uv[1].y = Mathf.Lerp(num2, num4, t2); Image2.s_Uv[2].y = Image2.s_Uv[1].y; Image2.s_Uv[3].y = Image2.s_Uv[0].y; float value = (!base.get_fillClockwise()) ? (base.get_fillAmount() * 2f - (float)(1 - j)) : (base.get_fillAmount() * 2f - (float)j); if (Image2.RadialCut(Image2.s_Xy, Image2.s_Uv, Mathf.Clamp01(value), base.get_fillClockwise(), (j + base.get_fillOrigin() + 3) % 4)) { for (int k = 0; k < 4; k++) { simpleVert.position = Image2.s_Xy[k]; simpleVert.uv0 = Image2.s_Uv[k]; simpleVert.uv1 = simpleVert.uv0 + zero; vbo.Add(simpleVert); } } } return; } if (base.get_fillMethod() == 4) { for (int l = 0; l < 4; l++) { float t5; float t6; if (l < 2) { t5 = 0f; t6 = 0.5f; } else { t5 = 0.5f; t6 = 1f; } float t7; float t8; if (l == 0 || l == 3) { t7 = 0f; t8 = 0.5f; } else { t7 = 0.5f; t8 = 1f; } Image2.s_Xy[0].x = Mathf.Lerp(drawingDimensions.x, drawingDimensions.z, t5); Image2.s_Xy[1].x = Image2.s_Xy[0].x; Image2.s_Xy[2].x = Mathf.Lerp(drawingDimensions.x, drawingDimensions.z, t6); Image2.s_Xy[3].x = Image2.s_Xy[2].x; Image2.s_Xy[0].y = Mathf.Lerp(drawingDimensions.y, drawingDimensions.w, t7); Image2.s_Xy[1].y = Mathf.Lerp(drawingDimensions.y, drawingDimensions.w, t8); Image2.s_Xy[2].y = Image2.s_Xy[1].y; Image2.s_Xy[3].y = Image2.s_Xy[0].y; Image2.s_Uv[0].x = Mathf.Lerp(num, num3, t5); Image2.s_Uv[1].x = Image2.s_Uv[0].x; Image2.s_Uv[2].x = Mathf.Lerp(num, num3, t6); Image2.s_Uv[3].x = Image2.s_Uv[2].x; Image2.s_Uv[0].y = Mathf.Lerp(num2, num4, t7); Image2.s_Uv[1].y = Mathf.Lerp(num2, num4, t8); Image2.s_Uv[2].y = Image2.s_Uv[1].y; Image2.s_Uv[3].y = Image2.s_Uv[0].y; float value2 = (!base.get_fillClockwise()) ? (base.get_fillAmount() * 4f - (float)(3 - (l + base.get_fillOrigin()) % 4)) : (base.get_fillAmount() * 4f - (float)((l + base.get_fillOrigin()) % 4)); if (Image2.RadialCut(Image2.s_Xy, Image2.s_Uv, Mathf.Clamp01(value2), base.get_fillClockwise(), (l + 2) % 4)) { for (int m = 0; m < 4; m++) { simpleVert.position = Image2.s_Xy[m]; simpleVert.uv0 = Image2.s_Uv[m]; simpleVert.uv1 = simpleVert.uv0 + zero; vbo.Add(simpleVert); } } } return; } } } for (int n = 0; n < 4; n++) { simpleVert.position = Image2.s_Xy[n]; simpleVert.uv0 = Image2.s_Uv[n]; simpleVert.uv1 = simpleVert.uv0 + zero; vbo.Add(simpleVert); } }