private static AddQuad ( |
||
vertexHelper | ||
posMin | System.Vector2 | |
posMax | System.Vector2 | |
color | Color32 | |
uvMin | System.Vector2 | |
uvMax | System.Vector2 | |
return | void |
private void GenerateSlicedSprite(VertexHelper toFill) { if (!this.hasBorder) { this.GenerateSimpleSprite(toFill, false); } else { Vector4 vector4_1; Vector4 vector4_2; Vector4 vector4_3; Vector4 vector4_4; if ((UnityEngine.Object) this.overrideSprite != (UnityEngine.Object)null) { vector4_1 = DataUtility.GetOuterUV(this.overrideSprite); vector4_2 = DataUtility.GetInnerUV(this.overrideSprite); vector4_3 = DataUtility.GetPadding(this.overrideSprite); vector4_4 = this.overrideSprite.border; } else { vector4_1 = Vector4.zero; vector4_2 = Vector4.zero; vector4_3 = Vector4.zero; vector4_4 = Vector4.zero; } Rect pixelAdjustedRect = this.GetPixelAdjustedRect(); Vector4 adjustedBorders = this.GetAdjustedBorders(vector4_4 / this.pixelsPerUnit, pixelAdjustedRect); Vector4 vector4_5 = vector4_3 / this.pixelsPerUnit; Image.s_VertScratch[0] = new Vector2(vector4_5.x, vector4_5.y); Image.s_VertScratch[3] = new Vector2(pixelAdjustedRect.width - vector4_5.z, pixelAdjustedRect.height - vector4_5.w); Image.s_VertScratch[1].x = adjustedBorders.x; Image.s_VertScratch[1].y = adjustedBorders.y; Image.s_VertScratch[2].x = pixelAdjustedRect.width - adjustedBorders.z; Image.s_VertScratch[2].y = pixelAdjustedRect.height - adjustedBorders.w; for (int index = 0; index < 4; ++index) { Image.s_VertScratch[index].x += pixelAdjustedRect.x; Image.s_VertScratch[index].y += pixelAdjustedRect.y; } Image.s_UVScratch[0] = new Vector2(vector4_1.x, vector4_1.y); Image.s_UVScratch[1] = new Vector2(vector4_2.x, vector4_2.y); Image.s_UVScratch[2] = new Vector2(vector4_2.z, vector4_2.w); Image.s_UVScratch[3] = new Vector2(vector4_1.z, vector4_1.w); toFill.Clear(); for (int index1 = 0; index1 < 3; ++index1) { int index2 = index1 + 1; for (int index3 = 0; index3 < 3; ++index3) { if (this.m_FillCenter || index1 != 1 || index3 != 1) { int index4 = index3 + 1; Image.AddQuad(toFill, new Vector2(Image.s_VertScratch[index1].x, Image.s_VertScratch[index3].y), new Vector2(Image.s_VertScratch[index2].x, Image.s_VertScratch[index4].y), (Color32)this.color, new Vector2(Image.s_UVScratch[index1].x, Image.s_UVScratch[index3].y), new Vector2(Image.s_UVScratch[index2].x, Image.s_UVScratch[index4].y)); } } } } }
private void GenerateFilledSprite(VertexHelper toFill, bool preserveAspect) { toFill.Clear(); if (this.m_FillAmount >= 0.001f) { Vector4 drawingDimensions = this.GetDrawingDimensions(preserveAspect); Vector4 vector = (!(this.activeSprite != null)) ? Vector4.zero : DataUtility.GetOuterUV(this.activeSprite); UIVertex simpleVert = UIVertex.simpleVert; simpleVert.color = this.color; float num = vector.x; float num2 = vector.y; float num3 = vector.z; float num4 = vector.w; if (this.m_FillMethod == Image.FillMethod.Horizontal || this.m_FillMethod == Image.FillMethod.Vertical) { if (this.fillMethod == Image.FillMethod.Horizontal) { float num5 = (num3 - num) * this.m_FillAmount; if (this.m_FillOrigin == 1) { drawingDimensions.x = drawingDimensions.z - (drawingDimensions.z - drawingDimensions.x) * this.m_FillAmount; num = num3 - num5; } else { drawingDimensions.z = drawingDimensions.x + (drawingDimensions.z - drawingDimensions.x) * this.m_FillAmount; num3 = num + num5; } } else if (this.fillMethod == Image.FillMethod.Vertical) { float num6 = (num4 - num2) * this.m_FillAmount; if (this.m_FillOrigin == 1) { drawingDimensions.y = drawingDimensions.w - (drawingDimensions.w - drawingDimensions.y) * this.m_FillAmount; num2 = num4 - num6; } else { drawingDimensions.w = drawingDimensions.y + (drawingDimensions.w - drawingDimensions.y) * this.m_FillAmount; num4 = num2 + num6; } } } Image.s_Xy[0] = new Vector2(drawingDimensions.x, drawingDimensions.y); Image.s_Xy[1] = new Vector2(drawingDimensions.x, drawingDimensions.w); Image.s_Xy[2] = new Vector2(drawingDimensions.z, drawingDimensions.w); Image.s_Xy[3] = new Vector2(drawingDimensions.z, drawingDimensions.y); Image.s_Uv[0] = new Vector2(num, num2); Image.s_Uv[1] = new Vector2(num, num4); Image.s_Uv[2] = new Vector2(num3, num4); Image.s_Uv[3] = new Vector2(num3, num2); if (this.m_FillAmount < 1f && this.m_FillMethod != Image.FillMethod.Horizontal && this.m_FillMethod != Image.FillMethod.Vertical) { if (this.fillMethod == Image.FillMethod.Radial90) { if (Image.RadialCut(Image.s_Xy, Image.s_Uv, this.m_FillAmount, this.m_FillClockwise, this.m_FillOrigin)) { Image.AddQuad(toFill, Image.s_Xy, this.color, Image.s_Uv); } } else if (this.fillMethod == Image.FillMethod.Radial180) { for (int i = 0; i < 2; i++) { int num7 = (this.m_FillOrigin <= 1) ? 0 : 1; float t; float t2; float t3; float t4; if (this.m_FillOrigin == 0 || this.m_FillOrigin == 2) { t = 0f; t2 = 1f; if (i == num7) { t3 = 0f; t4 = 0.5f; } else { t3 = 0.5f; t4 = 1f; } } else { t3 = 0f; t4 = 1f; if (i == num7) { t = 0.5f; t2 = 1f; } else { t = 0f; t2 = 0.5f; } } Image.s_Xy[0].x = Mathf.Lerp(drawingDimensions.x, drawingDimensions.z, t3); Image.s_Xy[1].x = Image.s_Xy[0].x; Image.s_Xy[2].x = Mathf.Lerp(drawingDimensions.x, drawingDimensions.z, t4); Image.s_Xy[3].x = Image.s_Xy[2].x; Image.s_Xy[0].y = Mathf.Lerp(drawingDimensions.y, drawingDimensions.w, t); Image.s_Xy[1].y = Mathf.Lerp(drawingDimensions.y, drawingDimensions.w, t2); Image.s_Xy[2].y = Image.s_Xy[1].y; Image.s_Xy[3].y = Image.s_Xy[0].y; Image.s_Uv[0].x = Mathf.Lerp(num, num3, t3); Image.s_Uv[1].x = Image.s_Uv[0].x; Image.s_Uv[2].x = Mathf.Lerp(num, num3, t4); Image.s_Uv[3].x = Image.s_Uv[2].x; Image.s_Uv[0].y = Mathf.Lerp(num2, num4, t); Image.s_Uv[1].y = Mathf.Lerp(num2, num4, t2); Image.s_Uv[2].y = Image.s_Uv[1].y; Image.s_Uv[3].y = Image.s_Uv[0].y; float value = (!this.m_FillClockwise) ? (this.m_FillAmount * 2f - (float)(1 - i)) : (this.fillAmount * 2f - (float)i); if (Image.RadialCut(Image.s_Xy, Image.s_Uv, Mathf.Clamp01(value), this.m_FillClockwise, (i + this.m_FillOrigin + 3) % 4)) { Image.AddQuad(toFill, Image.s_Xy, this.color, Image.s_Uv); } } } else if (this.fillMethod == Image.FillMethod.Radial360) { for (int j = 0; j < 4; j++) { float t5; float t6; if (j < 2) { t5 = 0f; t6 = 0.5f; } else { t5 = 0.5f; t6 = 1f; } float t7; float t8; if (j == 0 || j == 3) { t7 = 0f; t8 = 0.5f; } else { t7 = 0.5f; t8 = 1f; } Image.s_Xy[0].x = Mathf.Lerp(drawingDimensions.x, drawingDimensions.z, t5); Image.s_Xy[1].x = Image.s_Xy[0].x; Image.s_Xy[2].x = Mathf.Lerp(drawingDimensions.x, drawingDimensions.z, t6); Image.s_Xy[3].x = Image.s_Xy[2].x; Image.s_Xy[0].y = Mathf.Lerp(drawingDimensions.y, drawingDimensions.w, t7); Image.s_Xy[1].y = Mathf.Lerp(drawingDimensions.y, drawingDimensions.w, t8); Image.s_Xy[2].y = Image.s_Xy[1].y; Image.s_Xy[3].y = Image.s_Xy[0].y; Image.s_Uv[0].x = Mathf.Lerp(num, num3, t5); Image.s_Uv[1].x = Image.s_Uv[0].x; Image.s_Uv[2].x = Mathf.Lerp(num, num3, t6); Image.s_Uv[3].x = Image.s_Uv[2].x; Image.s_Uv[0].y = Mathf.Lerp(num2, num4, t7); Image.s_Uv[1].y = Mathf.Lerp(num2, num4, t8); Image.s_Uv[2].y = Image.s_Uv[1].y; Image.s_Uv[3].y = Image.s_Uv[0].y; float value2 = (!this.m_FillClockwise) ? (this.m_FillAmount * 4f - (float)(3 - (j + this.m_FillOrigin) % 4)) : (this.m_FillAmount * 4f - (float)((j + this.m_FillOrigin) % 4)); if (Image.RadialCut(Image.s_Xy, Image.s_Uv, Mathf.Clamp01(value2), this.m_FillClockwise, (j + 2) % 4)) { Image.AddQuad(toFill, Image.s_Xy, this.color, Image.s_Uv); } } } } else { Image.AddQuad(toFill, Image.s_Xy, this.color, Image.s_Uv); } } }
private void GenerateTiledSprite(VertexHelper toFill) { Vector4 vector; Vector4 vector2; Vector4 a; Vector2 vector3; if (this.activeSprite != null) { vector = DataUtility.GetOuterUV(this.activeSprite); vector2 = DataUtility.GetInnerUV(this.activeSprite); a = this.activeSprite.border; vector3 = this.activeSprite.rect.size; } else { vector = Vector4.zero; vector2 = Vector4.zero; a = Vector4.zero; vector3 = Vector2.one * 100f; } Rect pixelAdjustedRect = base.GetPixelAdjustedRect(); float num = (vector3.x - a.x - a.z) / this.pixelsPerUnit; float num2 = (vector3.y - a.y - a.w) / this.pixelsPerUnit; a = this.GetAdjustedBorders(a / this.pixelsPerUnit, pixelAdjustedRect); Vector2 vector4 = new Vector2(vector2.x, vector2.y); Vector2 vector5 = new Vector2(vector2.z, vector2.w); float x = a.x; float num3 = pixelAdjustedRect.width - a.z; float y = a.y; float num4 = pixelAdjustedRect.height - a.w; toFill.Clear(); Vector2 uvMax = vector5; if (num <= 0f) { num = num3 - x; } if (num2 <= 0f) { num2 = num4 - y; } if (this.activeSprite != null && (this.hasBorder || this.activeSprite.packed || this.activeSprite.texture.wrapMode != TextureWrapMode.Repeat)) { long num5; long num6; if (this.m_FillCenter) { num5 = (long)Math.Ceiling((double)((num3 - x) / num)); num6 = (long)Math.Ceiling((double)((num4 - y) / num2)); double num7; if (this.hasBorder) { num7 = ((double)num5 + 2.0) * ((double)num6 + 2.0) * 4.0; } else { num7 = (double)(num5 * num6) * 4.0; } if (num7 > 65000.0) { Debug.LogError("Too many sprite tiles on Image \"" + base.name + "\". The tile size will be increased. To remove the limit on the number of tiles, convert the Sprite to an Advanced texture, remove the borders, clear the Packing tag and set the Wrap mode to Repeat.", this); double num8 = 16250.0; double num9; if (this.hasBorder) { num9 = ((double)num5 + 2.0) / ((double)num6 + 2.0); } else { num9 = (double)num5 / (double)num6; } double num10 = Math.Sqrt(num8 / num9); double num11 = num10 * num9; if (this.hasBorder) { num10 -= 2.0; num11 -= 2.0; } num5 = (long)Math.Floor(num10); num6 = (long)Math.Floor(num11); num = (num3 - x) / (float)num5; num2 = (num4 - y) / (float)num6; } } else if (this.hasBorder) { num5 = (long)Math.Ceiling((double)((num3 - x) / num)); num6 = (long)Math.Ceiling((double)((num4 - y) / num2)); double num12 = ((double)(num6 + num5) + 2.0) * 2.0 * 4.0; if (num12 > 65000.0) { Debug.LogError("Too many sprite tiles on Image \"" + base.name + "\". The tile size will be increased. To remove the limit on the number of tiles, convert the Sprite to an Advanced texture, remove the borders, clear the Packing tag and set the Wrap mode to Repeat.", this); double num13 = 16250.0; double num14 = (double)num5 / (double)num6; double num15 = (num13 - 4.0) / (2.0 * (1.0 + num14)); double d = num15 * num14; num5 = (long)Math.Floor(num15); num6 = (long)Math.Floor(d); num = (num3 - x) / (float)num5; num2 = (num4 - y) / (float)num6; } } else { num5 = (num6 = 0L); } if (this.m_FillCenter) { for (long num16 = 0L; num16 < num6; num16 += 1L) { float num17 = y + (float)num16 * num2; float num18 = y + (float)(num16 + 1L) * num2; if (num18 > num4) { uvMax.y = vector4.y + (vector5.y - vector4.y) * (num4 - num17) / (num18 - num17); num18 = num4; } uvMax.x = vector5.x; for (long num19 = 0L; num19 < num5; num19 += 1L) { float num20 = x + (float)num19 * num; float num21 = x + (float)(num19 + 1L) * num; if (num21 > num3) { uvMax.x = vector4.x + (vector5.x - vector4.x) * (num3 - num20) / (num21 - num20); num21 = num3; } Image.AddQuad(toFill, new Vector2(num20, num17) + pixelAdjustedRect.position, new Vector2(num21, num18) + pixelAdjustedRect.position, this.color, vector4, uvMax); } } } if (this.hasBorder) { uvMax = vector5; for (long num22 = 0L; num22 < num6; num22 += 1L) { float num23 = y + (float)num22 * num2; float num24 = y + (float)(num22 + 1L) * num2; if (num24 > num4) { uvMax.y = vector4.y + (vector5.y - vector4.y) * (num4 - num23) / (num24 - num23); num24 = num4; } Image.AddQuad(toFill, new Vector2(0f, num23) + pixelAdjustedRect.position, new Vector2(x, num24) + pixelAdjustedRect.position, this.color, new Vector2(vector.x, vector4.y), new Vector2(vector4.x, uvMax.y)); Image.AddQuad(toFill, new Vector2(num3, num23) + pixelAdjustedRect.position, new Vector2(pixelAdjustedRect.width, num24) + pixelAdjustedRect.position, this.color, new Vector2(vector5.x, vector4.y), new Vector2(vector.z, uvMax.y)); } uvMax = vector5; for (long num25 = 0L; num25 < num5; num25 += 1L) { float num26 = x + (float)num25 * num; float num27 = x + (float)(num25 + 1L) * num; if (num27 > num3) { uvMax.x = vector4.x + (vector5.x - vector4.x) * (num3 - num26) / (num27 - num26); num27 = num3; } Image.AddQuad(toFill, new Vector2(num26, 0f) + pixelAdjustedRect.position, new Vector2(num27, y) + pixelAdjustedRect.position, this.color, new Vector2(vector4.x, vector.y), new Vector2(uvMax.x, vector4.y)); Image.AddQuad(toFill, new Vector2(num26, num4) + pixelAdjustedRect.position, new Vector2(num27, pixelAdjustedRect.height) + pixelAdjustedRect.position, this.color, new Vector2(vector4.x, vector5.y), new Vector2(uvMax.x, vector.w)); } Image.AddQuad(toFill, new Vector2(0f, 0f) + pixelAdjustedRect.position, new Vector2(x, y) + pixelAdjustedRect.position, this.color, new Vector2(vector.x, vector.y), new Vector2(vector4.x, vector4.y)); Image.AddQuad(toFill, new Vector2(num3, 0f) + pixelAdjustedRect.position, new Vector2(pixelAdjustedRect.width, y) + pixelAdjustedRect.position, this.color, new Vector2(vector5.x, vector.y), new Vector2(vector.z, vector4.y)); Image.AddQuad(toFill, new Vector2(0f, num4) + pixelAdjustedRect.position, new Vector2(x, pixelAdjustedRect.height) + pixelAdjustedRect.position, this.color, new Vector2(vector.x, vector5.y), new Vector2(vector4.x, vector.w)); Image.AddQuad(toFill, new Vector2(num3, num4) + pixelAdjustedRect.position, new Vector2(pixelAdjustedRect.width, pixelAdjustedRect.height) + pixelAdjustedRect.position, this.color, new Vector2(vector5.x, vector5.y), new Vector2(vector.z, vector.w)); } } else { Vector2 b = new Vector2((num3 - x) / num, (num4 - y) / num2); if (this.m_FillCenter) { Image.AddQuad(toFill, new Vector2(x, y) + pixelAdjustedRect.position, new Vector2(num3, num4) + pixelAdjustedRect.position, this.color, Vector2.Scale(vector4, b), Vector2.Scale(vector5, b)); } } }
private void GenerateSlicedSprite(VertexHelper toFill) { if (!this.hasBorder) { this.GenerateSimpleSprite(toFill, false); } else { Vector4 vector; Vector4 vector2; Vector4 a; Vector4 a2; if (this.activeSprite != null) { vector = DataUtility.GetOuterUV(this.activeSprite); vector2 = DataUtility.GetInnerUV(this.activeSprite); a = DataUtility.GetPadding(this.activeSprite); a2 = this.activeSprite.border; } else { vector = Vector4.zero; vector2 = Vector4.zero; a = Vector4.zero; a2 = Vector4.zero; } Rect pixelAdjustedRect = base.GetPixelAdjustedRect(); Vector4 adjustedBorders = this.GetAdjustedBorders(a2 / this.pixelsPerUnit, pixelAdjustedRect); a /= this.pixelsPerUnit; Image.s_VertScratch[0] = new Vector2(a.x, a.y); Image.s_VertScratch[3] = new Vector2(pixelAdjustedRect.width - a.z, pixelAdjustedRect.height - a.w); Image.s_VertScratch[1].x = adjustedBorders.x; Image.s_VertScratch[1].y = adjustedBorders.y; Image.s_VertScratch[2].x = pixelAdjustedRect.width - adjustedBorders.z; Image.s_VertScratch[2].y = pixelAdjustedRect.height - adjustedBorders.w; for (int i = 0; i < 4; i++) { Vector2[] expr_17E_cp_0 = Image.s_VertScratch; int expr_17E_cp_1 = i; expr_17E_cp_0[expr_17E_cp_1].x = expr_17E_cp_0[expr_17E_cp_1].x + pixelAdjustedRect.x; Vector2[] expr_19D_cp_0 = Image.s_VertScratch; int expr_19D_cp_1 = i; expr_19D_cp_0[expr_19D_cp_1].y = expr_19D_cp_0[expr_19D_cp_1].y + pixelAdjustedRect.y; } Image.s_UVScratch[0] = new Vector2(vector.x, vector.y); Image.s_UVScratch[1] = new Vector2(vector2.x, vector2.y); Image.s_UVScratch[2] = new Vector2(vector2.z, vector2.w); Image.s_UVScratch[3] = new Vector2(vector.z, vector.w); toFill.Clear(); for (int j = 0; j < 3; j++) { int num = j + 1; for (int k = 0; k < 3; k++) { if (this.m_FillCenter || j != 1 || k != 1) { int num2 = k + 1; Image.AddQuad(toFill, new Vector2(Image.s_VertScratch[j].x, Image.s_VertScratch[k].y), new Vector2(Image.s_VertScratch[num].x, Image.s_VertScratch[num2].y), this.color, new Vector2(Image.s_UVScratch[j].x, Image.s_UVScratch[k].y), new Vector2(Image.s_UVScratch[num].x, Image.s_UVScratch[num2].y)); } } } } }
private void GenerateFilledSprite(VertexHelper toFill, bool preserveAspect) { toFill.Clear(); if ((double)this.m_FillAmount < 1.0 / 1000.0) { return; } Vector4 drawingDimensions = this.GetDrawingDimensions(preserveAspect); Vector4 vector4 = !((UnityEngine.Object) this.overrideSprite != (UnityEngine.Object)null) ? Vector4.zero : DataUtility.GetOuterUV(this.overrideSprite); UIVertex.simpleVert.color = (Color32)this.color; float num1 = vector4.x; float num2 = vector4.y; float num3 = vector4.z; float num4 = vector4.w; if (this.m_FillMethod == Image.FillMethod.Horizontal || this.m_FillMethod == Image.FillMethod.Vertical) { if (this.fillMethod == Image.FillMethod.Horizontal) { float num5 = (num3 - num1) * this.m_FillAmount; if (this.m_FillOrigin == 1) { drawingDimensions.x = drawingDimensions.z - (drawingDimensions.z - drawingDimensions.x) * this.m_FillAmount; num1 = num3 - num5; } else { drawingDimensions.z = drawingDimensions.x + (drawingDimensions.z - drawingDimensions.x) * this.m_FillAmount; num3 = num1 + num5; } } else if (this.fillMethod == Image.FillMethod.Vertical) { float num5 = (num4 - num2) * this.m_FillAmount; if (this.m_FillOrigin == 1) { drawingDimensions.y = drawingDimensions.w - (drawingDimensions.w - drawingDimensions.y) * this.m_FillAmount; num2 = num4 - num5; } else { drawingDimensions.w = drawingDimensions.y + (drawingDimensions.w - drawingDimensions.y) * this.m_FillAmount; num4 = num2 + num5; } } } Image.s_Xy[0] = (Vector3) new Vector2(drawingDimensions.x, drawingDimensions.y); Image.s_Xy[1] = (Vector3) new Vector2(drawingDimensions.x, drawingDimensions.w); Image.s_Xy[2] = (Vector3) new Vector2(drawingDimensions.z, drawingDimensions.w); Image.s_Xy[3] = (Vector3) new Vector2(drawingDimensions.z, drawingDimensions.y); Image.s_Uv[0] = (Vector3) new Vector2(num1, num2); Image.s_Uv[1] = (Vector3) new Vector2(num1, num4); Image.s_Uv[2] = (Vector3) new Vector2(num3, num4); Image.s_Uv[3] = (Vector3) new Vector2(num3, num2); if ((double)this.m_FillAmount < 1.0 && this.m_FillMethod != Image.FillMethod.Horizontal && this.m_FillMethod != Image.FillMethod.Vertical) { if (this.fillMethod == Image.FillMethod.Radial90) { if (!Image.RadialCut(Image.s_Xy, Image.s_Uv, this.m_FillAmount, this.m_FillClockwise, this.m_FillOrigin)) { return; } Image.AddQuad(toFill, Image.s_Xy, (Color32)this.color, Image.s_Uv); } else if (this.fillMethod == Image.FillMethod.Radial180) { for (int index = 0; index < 2; ++index) { int num5 = this.m_FillOrigin <= 1 ? 0 : 1; float t1; float t2; float t3; float t4; if (this.m_FillOrigin == 0 || this.m_FillOrigin == 2) { t1 = 0.0f; t2 = 1f; if (index == num5) { t3 = 0.0f; t4 = 0.5f; } else { t3 = 0.5f; t4 = 1f; } } else { t3 = 0.0f; t4 = 1f; if (index == num5) { t1 = 0.5f; t2 = 1f; } else { t1 = 0.0f; t2 = 0.5f; } } Image.s_Xy[0].x = Mathf.Lerp(drawingDimensions.x, drawingDimensions.z, t3); Image.s_Xy[1].x = Image.s_Xy[0].x; Image.s_Xy[2].x = Mathf.Lerp(drawingDimensions.x, drawingDimensions.z, t4); Image.s_Xy[3].x = Image.s_Xy[2].x; Image.s_Xy[0].y = Mathf.Lerp(drawingDimensions.y, drawingDimensions.w, t1); Image.s_Xy[1].y = Mathf.Lerp(drawingDimensions.y, drawingDimensions.w, t2); Image.s_Xy[2].y = Image.s_Xy[1].y; Image.s_Xy[3].y = Image.s_Xy[0].y; Image.s_Uv[0].x = Mathf.Lerp(num1, num3, t3); Image.s_Uv[1].x = Image.s_Uv[0].x; Image.s_Uv[2].x = Mathf.Lerp(num1, num3, t4); Image.s_Uv[3].x = Image.s_Uv[2].x; Image.s_Uv[0].y = Mathf.Lerp(num2, num4, t1); Image.s_Uv[1].y = Mathf.Lerp(num2, num4, t2); Image.s_Uv[2].y = Image.s_Uv[1].y; Image.s_Uv[3].y = Image.s_Uv[0].y; float num6 = !this.m_FillClockwise ? this.m_FillAmount * 2f - (float)(1 - index) : this.fillAmount * 2f - (float)index; if (Image.RadialCut(Image.s_Xy, Image.s_Uv, Mathf.Clamp01(num6), this.m_FillClockwise, (index + this.m_FillOrigin + 3) % 4)) { Image.AddQuad(toFill, Image.s_Xy, (Color32)this.color, Image.s_Uv); } } } else { if (this.fillMethod != Image.FillMethod.Radial360) { return; } for (int index = 0; index < 4; ++index) { float t1; float t2; if (index < 2) { t1 = 0.0f; t2 = 0.5f; } else { t1 = 0.5f; t2 = 1f; } float t3; float t4; if (index == 0 || index == 3) { t3 = 0.0f; t4 = 0.5f; } else { t3 = 0.5f; t4 = 1f; } Image.s_Xy[0].x = Mathf.Lerp(drawingDimensions.x, drawingDimensions.z, t1); Image.s_Xy[1].x = Image.s_Xy[0].x; Image.s_Xy[2].x = Mathf.Lerp(drawingDimensions.x, drawingDimensions.z, t2); Image.s_Xy[3].x = Image.s_Xy[2].x; Image.s_Xy[0].y = Mathf.Lerp(drawingDimensions.y, drawingDimensions.w, t3); Image.s_Xy[1].y = Mathf.Lerp(drawingDimensions.y, drawingDimensions.w, t4); Image.s_Xy[2].y = Image.s_Xy[1].y; Image.s_Xy[3].y = Image.s_Xy[0].y; Image.s_Uv[0].x = Mathf.Lerp(num1, num3, t1); Image.s_Uv[1].x = Image.s_Uv[0].x; Image.s_Uv[2].x = Mathf.Lerp(num1, num3, t2); Image.s_Uv[3].x = Image.s_Uv[2].x; Image.s_Uv[0].y = Mathf.Lerp(num2, num4, t3); Image.s_Uv[1].y = Mathf.Lerp(num2, num4, t4); Image.s_Uv[2].y = Image.s_Uv[1].y; Image.s_Uv[3].y = Image.s_Uv[0].y; float num5 = !this.m_FillClockwise ? this.m_FillAmount * 4f - (float)(3 - (index + this.m_FillOrigin) % 4) : this.m_FillAmount * 4f - (float)((index + this.m_FillOrigin) % 4); if (Image.RadialCut(Image.s_Xy, Image.s_Uv, Mathf.Clamp01(num5), this.m_FillClockwise, (index + 2) % 4)) { Image.AddQuad(toFill, Image.s_Xy, (Color32)this.color, Image.s_Uv); } } } } else { Image.AddQuad(toFill, Image.s_Xy, (Color32)this.color, Image.s_Uv); } }
private void GenerateTiledSprite(VertexHelper toFill) { Vector4 vector4_1; Vector4 vector4_2; Vector4 vector4_3; Vector2 vector2_1; if ((UnityEngine.Object) this.overrideSprite != (UnityEngine.Object)null) { vector4_1 = DataUtility.GetOuterUV(this.overrideSprite); vector4_2 = DataUtility.GetInnerUV(this.overrideSprite); vector4_3 = this.overrideSprite.border; vector2_1 = this.overrideSprite.rect.size; } else { vector4_1 = Vector4.zero; vector4_2 = Vector4.zero; vector4_3 = Vector4.zero; vector2_1 = Vector2.one * 100f; } Rect pixelAdjustedRect = this.GetPixelAdjustedRect(); float num1 = (vector2_1.x - vector4_3.x - vector4_3.z) / this.pixelsPerUnit; float num2 = (vector2_1.y - vector4_3.y - vector4_3.w) / this.pixelsPerUnit; vector4_3 = this.GetAdjustedBorders(vector4_3 / this.pixelsPerUnit, pixelAdjustedRect); Vector2 uvMin = new Vector2(vector4_2.x, vector4_2.y); Vector2 vector2_2 = new Vector2(vector4_2.z, vector4_2.w); UIVertex.simpleVert.color = (Color32)this.color; float x1 = vector4_3.x; float x2 = pixelAdjustedRect.width - vector4_3.z; float y1 = vector4_3.y; float y2 = pixelAdjustedRect.height - vector4_3.w; toFill.Clear(); Vector2 uvMax = vector2_2; if ((double)num1 == 0.0) { num1 = x2 - x1; } if ((double)num2 == 0.0) { num2 = y2 - y1; } if (this.m_FillCenter) { float y3 = y1; while ((double)y3 < (double)y2) { float y4 = y3 + num2; if ((double)y4 > (double)y2) { uvMax.y = uvMin.y + (float)(((double)vector2_2.y - (double)uvMin.y) * ((double)y2 - (double)y3) / ((double)y4 - (double)y3)); y4 = y2; } uvMax.x = vector2_2.x; float x3 = x1; while ((double)x3 < (double)x2) { float x4 = x3 + num1; if ((double)x4 > (double)x2) { uvMax.x = uvMin.x + (float)(((double)vector2_2.x - (double)uvMin.x) * ((double)x2 - (double)x3) / ((double)x4 - (double)x3)); x4 = x2; } Image.AddQuad(toFill, new Vector2(x3, y3) + pixelAdjustedRect.position, new Vector2(x4, y4) + pixelAdjustedRect.position, (Color32)this.color, uvMin, uvMax); x3 += num1; } y3 += num2; } } if (!this.hasBorder) { return; } Vector2 vector2_3 = vector2_2; float y5 = y1; while ((double)y5 < (double)y2) { float y3 = y5 + num2; if ((double)y3 > (double)y2) { vector2_3.y = uvMin.y + (float)(((double)vector2_2.y - (double)uvMin.y) * ((double)y2 - (double)y5) / ((double)y3 - (double)y5)); y3 = y2; } Image.AddQuad(toFill, new Vector2(0.0f, y5) + pixelAdjustedRect.position, new Vector2(x1, y3) + pixelAdjustedRect.position, (Color32)this.color, new Vector2(vector4_1.x, uvMin.y), new Vector2(uvMin.x, vector2_3.y)); Image.AddQuad(toFill, new Vector2(x2, y5) + pixelAdjustedRect.position, new Vector2(pixelAdjustedRect.width, y3) + pixelAdjustedRect.position, (Color32)this.color, new Vector2(vector2_2.x, uvMin.y), new Vector2(vector4_1.z, vector2_3.y)); y5 += num2; } vector2_3 = vector2_2; float x5 = x1; while ((double)x5 < (double)x2) { float x3 = x5 + num1; if ((double)x3 > (double)x2) { vector2_3.x = uvMin.x + (float)(((double)vector2_2.x - (double)uvMin.x) * ((double)x2 - (double)x5) / ((double)x3 - (double)x5)); x3 = x2; } Image.AddQuad(toFill, new Vector2(x5, 0.0f) + pixelAdjustedRect.position, new Vector2(x3, y1) + pixelAdjustedRect.position, (Color32)this.color, new Vector2(uvMin.x, vector4_1.y), new Vector2(vector2_3.x, uvMin.y)); Image.AddQuad(toFill, new Vector2(x5, y2) + pixelAdjustedRect.position, new Vector2(x3, pixelAdjustedRect.height) + pixelAdjustedRect.position, (Color32)this.color, new Vector2(uvMin.x, vector2_2.y), new Vector2(vector2_3.x, vector4_1.w)); x5 += num1; } Image.AddQuad(toFill, new Vector2(0.0f, 0.0f) + pixelAdjustedRect.position, new Vector2(x1, y1) + pixelAdjustedRect.position, (Color32)this.color, new Vector2(vector4_1.x, vector4_1.y), new Vector2(uvMin.x, uvMin.y)); Image.AddQuad(toFill, new Vector2(x2, 0.0f) + pixelAdjustedRect.position, new Vector2(pixelAdjustedRect.width, y1) + pixelAdjustedRect.position, (Color32)this.color, new Vector2(vector2_2.x, vector4_1.y), new Vector2(vector4_1.z, uvMin.y)); Image.AddQuad(toFill, new Vector2(0.0f, y2) + pixelAdjustedRect.position, new Vector2(x1, pixelAdjustedRect.height) + pixelAdjustedRect.position, (Color32)this.color, new Vector2(vector4_1.x, vector2_2.y), new Vector2(uvMin.x, vector4_1.w)); Image.AddQuad(toFill, new Vector2(x2, y2) + pixelAdjustedRect.position, new Vector2(pixelAdjustedRect.width, pixelAdjustedRect.height) + pixelAdjustedRect.position, (Color32)this.color, new Vector2(vector2_2.x, vector2_2.y), new Vector2(vector4_1.z, vector4_1.w)); }