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
 }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        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);
                }
            }
        }