Exemplo n.º 1
0
    private void GenerateTiledSprite(List <UIVertex> vbo)
    {
        Vector2 zero;
        Vector4 vector;
        Vector4 vector2;
        Vector4 a;
        Vector2 vector3;

        if (base.get_overrideSprite() != null)
        {
            Vector2 sizeScaling = Image2.s_sizeScaling[(int)this.alphaTexLayout];
            vector     = Image2.GetOuterUV(base.get_overrideSprite(), this.alphaTexLayout, out zero);
            vector2    = Image2.GetInnerUV(base.get_overrideSprite(), sizeScaling);
            a          = base.get_overrideSprite().border;
            vector3    = base.get_overrideSprite().rect.size;
            vector3.x *= sizeScaling.x;
            vector3.y *= sizeScaling.y;
        }
        else
        {
            vector  = Vector4.zero;
            vector2 = Vector4.zero;
            a       = Vector4.zero;
            vector3 = Vector2.one * 100f;
            zero    = Vector2.zero;
        }
        Rect  pixelAdjustedRect = base.GetPixelAdjustedRect();
        float num  = (vector3.x - a.x - a.z) / base.get_pixelsPerUnit();
        float num2 = (vector3.y - a.y - a.w) / base.get_pixelsPerUnit();

        a = this.GetAdjustedBorders(a / base.get_pixelsPerUnit(), pixelAdjustedRect);
        Vector2  uvMin      = new Vector2(vector2.x, vector2.y);
        Vector2  vector4    = new Vector2(vector2.z, vector2.w);
        UIVertex simpleVert = UIVertex.simpleVert;

        simpleVert.color = base.get_color();
        float x    = a.x;
        float num3 = pixelAdjustedRect.width - a.z;
        float y    = a.y;
        float num4 = pixelAdjustedRect.height - a.w;

        if ((double)num3 - (double)x > (double)num * 100.0 || (double)num4 - (double)y > (double)num2 * 100.0)
        {
            num  = (float)(((double)num3 - (double)x) / 100.0);
            num2 = (float)(((double)num4 - (double)y) / 100.0);
        }
        Vector2 uvMax = vector4;

        if (base.get_fillCenter())
        {
            float num5 = y;
            while ((double)num5 < (double)num4)
            {
                float num6 = num5 + num2;
                if ((double)num6 > (double)num4)
                {
                    uvMax.y = uvMin.y + (float)(((double)vector4.y - (double)uvMin.y) * ((double)num4 - (double)num5) / ((double)num6 - (double)num5));
                    num6    = num4;
                }
                uvMax.x = vector4.x;
                float num7 = x;
                while ((double)num7 < (double)num3)
                {
                    float num8 = num7 + num;
                    if ((double)num8 > (double)num3)
                    {
                        uvMax.x = uvMin.x + (float)(((double)vector4.x - (double)uvMin.x) * ((double)num3 - (double)num7) / ((double)num8 - (double)num7));
                        num8    = num3;
                    }
                    this.AddQuad(vbo, simpleVert, new Vector2(num7, num5) + pixelAdjustedRect.position, new Vector2(num8, num6) + pixelAdjustedRect.position, uvMin, uvMax, zero);
                    num7 += num;
                }
                num5 += num2;
            }
        }
        if (!base.get_hasBorder())
        {
            return;
        }
        Vector2 vector5 = vector4;
        float   num9    = y;

        while ((double)num9 < (double)num4)
        {
            float num10 = num9 + num2;
            if ((double)num10 > (double)num4)
            {
                vector5.y = uvMin.y + (float)(((double)vector4.y - (double)uvMin.y) * ((double)num4 - (double)num9) / ((double)num10 - (double)num9));
                num10     = num4;
            }
            this.AddQuad(vbo, simpleVert, new Vector2(0f, num9) + pixelAdjustedRect.position, new Vector2(x, num10) + pixelAdjustedRect.position, new Vector2(vector.x, uvMin.y), new Vector2(uvMin.x, vector5.y), zero);
            this.AddQuad(vbo, simpleVert, new Vector2(num3, num9) + pixelAdjustedRect.position, new Vector2(pixelAdjustedRect.width, num10) + pixelAdjustedRect.position, new Vector2(vector4.x, uvMin.y), new Vector2(vector.z, vector5.y), zero);
            num9 += num2;
        }
        vector5 = vector4;
        float num11 = x;

        while ((double)num11 < (double)num3)
        {
            float num12 = num11 + num;
            if ((double)num12 > (double)num3)
            {
                vector5.x = uvMin.x + (float)(((double)vector4.x - (double)uvMin.x) * ((double)num3 - (double)num11) / ((double)num12 - (double)num11));
                num12     = num3;
            }
            this.AddQuad(vbo, simpleVert, new Vector2(num11, 0f) + pixelAdjustedRect.position, new Vector2(num12, y) + pixelAdjustedRect.position, new Vector2(uvMin.x, vector.y), new Vector2(vector5.x, uvMin.y), zero);
            this.AddQuad(vbo, simpleVert, new Vector2(num11, num4) + pixelAdjustedRect.position, new Vector2(num12, pixelAdjustedRect.height) + pixelAdjustedRect.position, new Vector2(uvMin.x, vector4.y), new Vector2(vector5.x, vector.w), zero);
            num11 += num;
        }
        this.AddQuad(vbo, simpleVert, new Vector2(0f, 0f) + pixelAdjustedRect.position, new Vector2(x, y) + pixelAdjustedRect.position, new Vector2(vector.x, vector.y), new Vector2(uvMin.x, uvMin.y), zero);
        this.AddQuad(vbo, simpleVert, new Vector2(num3, 0f) + pixelAdjustedRect.position, new Vector2(pixelAdjustedRect.width, y) + pixelAdjustedRect.position, new Vector2(vector4.x, vector.y), new Vector2(vector.z, uvMin.y), zero);
        this.AddQuad(vbo, simpleVert, new Vector2(0f, num4) + pixelAdjustedRect.position, new Vector2(x, pixelAdjustedRect.height) + pixelAdjustedRect.position, new Vector2(vector.x, vector4.y), new Vector2(uvMin.x, vector.w), zero);
        this.AddQuad(vbo, simpleVert, new Vector2(num3, num4) + pixelAdjustedRect.position, new Vector2(pixelAdjustedRect.width, pixelAdjustedRect.height) + pixelAdjustedRect.position, new Vector2(vector4.x, vector4.y), new Vector2(vector.z, vector.w), zero);
    }
Exemplo n.º 2
0
 private void GenerateSlicedSprite(List <UIVertex> vbo)
 {
     if (!base.get_hasBorder())
     {
         this.GenerateSimpleSprite(vbo, false);
     }
     else
     {
         Vector2 zero = Vector2.zero;
         Vector4 vector;
         Vector4 vector2;
         Vector4 a;
         Vector4 a2;
         if (base.get_overrideSprite() != null)
         {
             vector  = Image2.GetOuterUV(base.get_overrideSprite(), this.alphaTexLayout, out zero);
             vector2 = Image2.GetInnerUV(base.get_overrideSprite(), Image2.s_sizeScaling[(int)this.alphaTexLayout]);
             a       = DataUtility.GetPadding(base.get_overrideSprite());
             a2      = base.get_overrideSprite().border;
         }
         else
         {
             vector  = Vector4.zero;
             vector2 = Vector4.zero;
             a       = Vector4.zero;
             a2      = Vector4.zero;
         }
         Rect    pixelAdjustedRect = base.GetPixelAdjustedRect();
         Vector4 adjustedBorders   = this.GetAdjustedBorders(a2 / base.get_pixelsPerUnit(), pixelAdjustedRect);
         Vector4 vector3           = a / base.get_pixelsPerUnit();
         Image2.s_VertScratch[0]   = new Vector2(vector3.x, vector3.y);
         Image2.s_VertScratch[3]   = new Vector2(pixelAdjustedRect.width - vector3.z, pixelAdjustedRect.height - vector3.w);
         Image2.s_VertScratch[1].x = adjustedBorders.x;
         Image2.s_VertScratch[1].y = adjustedBorders.y;
         Image2.s_VertScratch[2].x = pixelAdjustedRect.width - adjustedBorders.z;
         Image2.s_VertScratch[2].y = pixelAdjustedRect.height - adjustedBorders.w;
         for (int i = 0; i < 4; i++)
         {
             Vector2[] array = Image2.s_VertScratch;
             int       num   = i;
             array[num].x = array[num].x + pixelAdjustedRect.x;
             Vector2[] array2 = Image2.s_VertScratch;
             int       num2   = i;
             array2[num2].y = array2[num2].y + pixelAdjustedRect.y;
         }
         Image2.s_UVScratch[0] = new Vector2(vector.x, vector.y);
         Image2.s_UVScratch[1] = new Vector2(vector2.x, vector2.y);
         Image2.s_UVScratch[2] = new Vector2(vector2.z, vector2.w);
         Image2.s_UVScratch[3] = new Vector2(vector.z, vector.w);
         UIVertex simpleVert = UIVertex.simpleVert;
         simpleVert.color = base.get_color();
         for (int j = 0; j < 3; j++)
         {
             int num3 = j + 1;
             for (int k = 0; k < 3; k++)
             {
                 if (base.get_fillCenter() || j != 1 || k != 1)
                 {
                     int num4 = k + 1;
                     this.AddQuad(vbo, simpleVert, new Vector2(Image2.s_VertScratch[j].x, Image2.s_VertScratch[k].y), new Vector2(Image2.s_VertScratch[num3].x, Image2.s_VertScratch[num4].y), new Vector2(Image2.s_UVScratch[j].x, Image2.s_UVScratch[k].y), new Vector2(Image2.s_UVScratch[num3].x, Image2.s_UVScratch[num4].y), zero);
                 }
             }
         }
     }
 }