示例#1
0
    static unsafe FakeStructArray SaveSprites(DataBuffer buffer, List <Sprite> sprites)
    {
        FakeStructArray array = new FakeStructArray(buffer, SpriteDataS.ElementSize, sprites.Count);
        float           tx    = sprites[0].texture.width;
        float           ty    = sprites[0].texture.height;

        for (int i = 0; i < sprites.Count; i++)
        {
            var          sprite = sprites[i];
            string       name   = sprite.name;
            SpriteDataS *sp     = (SpriteDataS *)array[i];
            sp->name = buffer.AddData(name);
            var sr = sp->rect = sprite.rect;
            sp->pivot = sprite.pivot;
            float w  = sprite.texture.width;
            float h  = sprite.texture.height;
            float x  = sr.x;
            float rx = sr.width + x;
            float y  = sr.y;
            ty        = sr.height + y;
            x        /= w;
            rx       /= w;
            y        /= h;
            ty       /= h;
            sp->uv0.x = x;
            sp->uv0.y = y;
            sp->uv1.x = x;
            sp->uv1.y = ty;
            sp->uv2.x = rx;
            sp->uv2.y = ty;
            sp->uv3.x = rx;
            sp->uv3.y = y;
        }
        return(array);
    }
示例#2
0
        unsafe FakeStructArray SaveSprites(DataBuffer buffer, List <Sprite> sprites)
        {
            FakeStructArray array = new FakeStructArray(buffer, SpriteDataS.ElementSize, sprites.Count);
            float           tx    = sprites[0].texture.width;
            float           ty    = sprites[0].texture.height;

            for (int i = 0; i < sprites.Count; i++)
            {
                var          sprite = sprites[i];
                string       name   = sprite.name;
                SpriteDataS *sp     = (SpriteDataS *)array[i];
                sp->name      = buffer.AddData(name);
                sp->txtSize.x = tx;
                sp->txtSize.y = ty;
                sp->rect      = sprite.rect;
                sp->pivot     = sprite.pivot;
            }
            return(array);
        }
示例#3
0
        SpriteInfo[] LoadSpriteData(FakeStructArray array)
        {
            var db = array.buffer;

            SpriteInfo[] spr = new SpriteInfo[array.Length];
            for (int i = 0; i < spr.Length; i++)
            {
                unsafe
                {
                    SpriteDataS *sp = (SpriteDataS *)array[i];
                    spr[i].rect  = sp->rect;
                    spr[i].pivot = sp->pivot;
                    spr[i].Name  = db.GetData(sp->name) as string;
                    spr[i].uv    = new Vector2[4];
                    spr[i].uv[0] = sp->uv0;
                    spr[i].uv[1] = sp->uv1;
                    spr[i].uv[2] = sp->uv2;
                    spr[i].uv[3] = sp->uv3;
                }
            }
            return(spr);
        }
示例#4
0
 public static void FindSpriteUV(string tName, string sName, ref Rect rect, ref Vector2 txtSize, ref Vector2 pivot)
 {
     for (int k = 0; k < SpriteDatas.Count; k++)
     {
         var fs = SpriteDatas[k].buffer.fakeStruct;
         if (fs != null)
         {
             var fsa = fs.GetData <FakeStructArray>(1);
             if (fsa != null)
             {
                 for (int i = 0; i < fsa.Length; i++)
                 {
                     if (fsa.GetData(i, 0) as string == tName)
                     {
                         fsa = fsa.GetData(i, 1) as FakeStructArray;
                         if (fsa != null)
                         {
                             for (int j = 0; j < fsa.Length; j++)
                             {
                                 if (fsa.GetData(j, 0) as string == sName)
                                 {
                                     unsafe
                                     {
                                         SpriteDataS *sp = (SpriteDataS *)fsa[j];
                                         txtSize = sp->txtSize;
                                         rect    = sp->rect;
                                         pivot   = sp->pivot;
                                     }
                                 }
                             }
                         }
                         break;
                     }
                 }
             }
         }
     }
 }