public void Create(SpriteSheetInfo SpriteInfo) // Função usada como construtor, para inicializar os campos do Sprite { if (IsPlaying) //Se o sprite já estiver executando animação { Stop(); //Interrompe a mesma } _spriteInfo = SpriteInfo; renderer.material = new Material(Shader.Find("Transparent/Diffuse")); _spriteTexture = _spriteInfo.GetTexture(); //Busca a textura referente a este atlas na pasta Resources }
public SpriteSheetInfo[] ExtractSpriteSheet(uint[] index, string path) { List<System.Drawing.Bitmap> bitmaps = new List<System.Drawing.Bitmap>(); List<KeyValuePair<string, System.Drawing.Bitmap>> mapperInput = new List<KeyValuePair<string, System.Drawing.Bitmap>>(); List<SpriteSheetInfo> retlist = new List<SpriteSheetInfo>(); int offset = 0; for (int i = 0; i < index.Length; i++) { SpriteSheetInfo ssi = new SpriteSheetInfo(); ssi.imageID = index[i]; var subimg = ExtractOne(index[i], ref ssi.offsetX, ref ssi.offsetY); retlist.Add(ssi); if (subimg != null) { bitmaps.Add(subimg); mapperInput.Add(new KeyValuePair<string, System.Drawing.Bitmap>(index[i].ToString(), subimg)); //imageinfos.Add (new ImageInfo(bitmaps[offset].Width, bitmaps[offset].Height, offset)); offset++; } } if (bitmaps.Count == 0) return null; ImagePacker imagePacker = new ImagePacker(); Bitmap outputImage; Lexicon<string, Rectangle> outputMap; List<uint> trash; // pack the image, generating a map only if desired imagePacker.PackImage(mapperInput, true, true, 2048, 2048, 1, true, out outputImage, out outputMap, out trash); foreach (KeyValuePair<string, Rectangle> mii in outputMap) { uint imgid = uint.Parse(mii.Key); var ssi = retlist.Find(x => x.imageID == imgid); ssi.X = mii.Value.X; ssi.Y = mii.Value.Y; ssi.width = mii.Value.Width; ssi.height = mii.Value.Height; } outputImage.Save(path); return retlist.ToArray(); }
private void ReadInfo(string assetName) { spriteInfo = new SpriteSheetInfo(); spriteInfo.Animations = new Dictionary<string,Animation>(); string input; using (var reader = new StreamReader("Content/" + assetName + ".txt")) { input = reader.ReadLine(); spriteInfo.frameWidth = Convert.ToInt32(input.Split(' ')[1]); input = reader.ReadLine(); spriteInfo.frameHeight = Convert.ToInt32(input.Split(' ')[1]); input = reader.ReadLine(); spriteInfo.maxLength = Convert.ToInt32(input.Split(' ')[1]); input = reader.ReadLine(); var numAnimations = Convert.ToInt32(input.Split(' ')[1]); reader.ReadLine(); for(int i = 0; i < numAnimations; i++) { var temp = new Animation(); string animationName; input = reader.ReadLine(); animationName = input.Split(' ')[1]; temp.Name = animationName; input = reader.ReadLine(); temp.NextAnimation = input.Split(' ')[1]; input = reader.ReadLine(); temp.length = Convert.ToInt32(input.Split(' ')[1]); input = reader.ReadLine(); temp.animationSpeed = Convert.ToDouble(input.Split(' ')[1]); input = reader.ReadLine(); temp.StartingRow = Convert.ToInt32(input.Split(' ')[1]); input = reader.ReadLine(); temp.StartingColumn = Convert.ToInt32(input.Split(' ')[1]); reader.ReadLine(); spriteInfo.Animations.Add(animationName, temp); } } }