UnityEngine.UI.Image.GenerateFilledSprite C# (CSharp) Method

GenerateFilledSprite() private method

private GenerateFilledSprite ( VertexHelper toFill, bool preserveAspect ) : void
toFill VertexHelper
preserveAspect bool
return void
        private void GenerateFilledSprite(VertexHelper toFill, bool preserveAspect)
        {
            toFill.Clear();
            if (this.m_FillAmount >= 0.001f)
            {
                Vector4 drawingDimensions = this.GetDrawingDimensions(preserveAspect);
                Vector4 vector2 = (this.activeSprite == null) ? Vector4.zero : DataUtility.GetOuterUV(this.activeSprite);
                UIVertex.simpleVert.color = this.color;
                float x = vector2.x;
                float y = vector2.y;
                float z = vector2.z;
                float w = vector2.w;
                if ((this.m_FillMethod == FillMethod.Horizontal) || (this.m_FillMethod == FillMethod.Vertical))
                {
                    if (this.fillMethod == FillMethod.Horizontal)
                    {
                        float num5 = (z - x) * this.m_FillAmount;
                        if (this.m_FillOrigin == 1)
                        {
                            drawingDimensions.x = drawingDimensions.z - ((drawingDimensions.z - drawingDimensions.x) * this.m_FillAmount);
                            x = z - num5;
                        }
                        else
                        {
                            drawingDimensions.z = drawingDimensions.x + ((drawingDimensions.z - drawingDimensions.x) * this.m_FillAmount);
                            z = x + num5;
                        }
                    }
                    else if (this.fillMethod == FillMethod.Vertical)
                    {
                        float num6 = (w - y) * this.m_FillAmount;
                        if (this.m_FillOrigin == 1)
                        {
                            drawingDimensions.y = drawingDimensions.w - ((drawingDimensions.w - drawingDimensions.y) * this.m_FillAmount);
                            y = w - num6;
                        }
                        else
                        {
                            drawingDimensions.w = drawingDimensions.y + ((drawingDimensions.w - drawingDimensions.y) * this.m_FillAmount);
                            w = y + num6;
                        }
                    }
                }
                s_Xy[0] = (Vector3) new Vector2(drawingDimensions.x, drawingDimensions.y);
                s_Xy[1] = (Vector3) new Vector2(drawingDimensions.x, drawingDimensions.w);
                s_Xy[2] = (Vector3) new Vector2(drawingDimensions.z, drawingDimensions.w);
                s_Xy[3] = (Vector3) new Vector2(drawingDimensions.z, drawingDimensions.y);
                s_Uv[0] = (Vector3) new Vector2(x, y);
                s_Uv[1] = (Vector3) new Vector2(x, w);
                s_Uv[2] = (Vector3) new Vector2(z, w);
                s_Uv[3] = (Vector3) new Vector2(z, y);
                if (((this.m_FillAmount < 1f) && (this.m_FillMethod != FillMethod.Horizontal)) && (this.m_FillMethod != FillMethod.Vertical))
                {
                    if (this.fillMethod == FillMethod.Radial90)
                    {
                        if (RadialCut(s_Xy, s_Uv, this.m_FillAmount, this.m_FillClockwise, this.m_FillOrigin))
                        {
                            AddQuad(toFill, s_Xy, this.color, s_Uv);
                        }
                    }
                    else if (this.fillMethod == FillMethod.Radial180)
                    {
                        for (int i = 0; i < 2; i++)
                        {
                            float num8;
                            float num9;
                            float num10;
                            float num11;
                            int num12 = (this.m_FillOrigin <= 1) ? 0 : 1;
                            if ((this.m_FillOrigin == 0) || (this.m_FillOrigin == 2))
                            {
                                num10 = 0f;
                                num11 = 1f;
                                if (i == num12)
                                {
                                    num8 = 0f;
                                    num9 = 0.5f;
                                }
                                else
                                {
                                    num8 = 0.5f;
                                    num9 = 1f;
                                }
                            }
                            else
                            {
                                num8 = 0f;
                                num9 = 1f;
                                if (i == num12)
                                {
                                    num10 = 0.5f;
                                    num11 = 1f;
                                }
                                else
                                {
                                    num10 = 0f;
                                    num11 = 0.5f;
                                }
                            }
                            s_Xy[0].x = Mathf.Lerp(drawingDimensions.x, drawingDimensions.z, num8);
                            s_Xy[1].x = s_Xy[0].x;
                            s_Xy[2].x = Mathf.Lerp(drawingDimensions.x, drawingDimensions.z, num9);
                            s_Xy[3].x = s_Xy[2].x;
                            s_Xy[0].y = Mathf.Lerp(drawingDimensions.y, drawingDimensions.w, num10);
                            s_Xy[1].y = Mathf.Lerp(drawingDimensions.y, drawingDimensions.w, num11);
                            s_Xy[2].y = s_Xy[1].y;
                            s_Xy[3].y = s_Xy[0].y;
                            s_Uv[0].x = Mathf.Lerp(x, z, num8);
                            s_Uv[1].x = s_Uv[0].x;
                            s_Uv[2].x = Mathf.Lerp(x, z, num9);
                            s_Uv[3].x = s_Uv[2].x;
                            s_Uv[0].y = Mathf.Lerp(y, w, num10);
                            s_Uv[1].y = Mathf.Lerp(y, w, num11);
                            s_Uv[2].y = s_Uv[1].y;
                            s_Uv[3].y = s_Uv[0].y;
                            float num13 = !this.m_FillClockwise ? ((this.m_FillAmount * 2f) - (1 - i)) : ((this.fillAmount * 2f) - i);
                            if (RadialCut(s_Xy, s_Uv, Mathf.Clamp01(num13), this.m_FillClockwise, ((i + this.m_FillOrigin) + 3) % 4))
                            {
                                AddQuad(toFill, s_Xy, this.color, s_Uv);
                            }
                        }
                    }
                    else if (this.fillMethod == FillMethod.Radial360)
                    {
                        for (int j = 0; j < 4; j++)
                        {
                            float num15;
                            float num16;
                            float num17;
                            float num18;
                            if (j < 2)
                            {
                                num15 = 0f;
                                num16 = 0.5f;
                            }
                            else
                            {
                                num15 = 0.5f;
                                num16 = 1f;
                            }
                            switch (j)
                            {
                                case 0:
                                case 3:
                                    num17 = 0f;
                                    num18 = 0.5f;
                                    break;

                                default:
                                    num17 = 0.5f;
                                    num18 = 1f;
                                    break;
                            }
                            s_Xy[0].x = Mathf.Lerp(drawingDimensions.x, drawingDimensions.z, num15);
                            s_Xy[1].x = s_Xy[0].x;
                            s_Xy[2].x = Mathf.Lerp(drawingDimensions.x, drawingDimensions.z, num16);
                            s_Xy[3].x = s_Xy[2].x;
                            s_Xy[0].y = Mathf.Lerp(drawingDimensions.y, drawingDimensions.w, num17);
                            s_Xy[1].y = Mathf.Lerp(drawingDimensions.y, drawingDimensions.w, num18);
                            s_Xy[2].y = s_Xy[1].y;
                            s_Xy[3].y = s_Xy[0].y;
                            s_Uv[0].x = Mathf.Lerp(x, z, num15);
                            s_Uv[1].x = s_Uv[0].x;
                            s_Uv[2].x = Mathf.Lerp(x, z, num16);
                            s_Uv[3].x = s_Uv[2].x;
                            s_Uv[0].y = Mathf.Lerp(y, w, num17);
                            s_Uv[1].y = Mathf.Lerp(y, w, num18);
                            s_Uv[2].y = s_Uv[1].y;
                            s_Uv[3].y = s_Uv[0].y;
                            float num19 = !this.m_FillClockwise ? ((this.m_FillAmount * 4f) - (3 - ((j + this.m_FillOrigin) % 4))) : ((this.m_FillAmount * 4f) - ((j + this.m_FillOrigin) % 4));
                            if (RadialCut(s_Xy, s_Uv, Mathf.Clamp01(num19), this.m_FillClockwise, (j + 2) % 4))
                            {
                                AddQuad(toFill, s_Xy, this.color, s_Uv);
                            }
                        }
                    }
                }
                else
                {
                    AddQuad(toFill, s_Xy, this.color, s_Uv);
                }
            }
        }