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); }
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); }
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); }
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; } } } } } }