Exemplo n.º 1
0
        /// <summary>
        /// Reads an Aseprite File from the given path
        ///
        /// .ase and .aseprite files are acceptable
        ///
        /// maxFileAccessAttempts is useful due to file
        /// saving while accessing live files
        /// </summary>
        public static void ReadFromFile(string path, Aseprite sprite, int maxFileAccessAttempts = 10)
        {
            sprite.Clear();

            if (!File.Exists(path))
            {
                return;
            }

            var fileAccessAttempts = 0;

            while (fileAccessAttempts < maxFileAccessAttempts)
            {
                try
                {
                    using (var stream = new FileStream(path, FileMode.Open))
                    {
                        var reader = new AsepriteStreamReader(stream);
                        ReadFromStream(reader, sprite);
                        return;
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    fileAccessAttempts++;
                }
            }
        }
Exemplo n.º 2
0
        private static void ReadFromStream(AsepriteStreamReader reader, Aseprite sprite)
        {
            // Read the ASE header
            var header = Header.Read(reader);
            var frames = new FrameData[header.Frames];

            for (int i = 0; i < header.Frames; i++)
            {
                frames[i] = FrameData.Read(reader, header.ColorDepth);
            }

            sprite.Update(header, frames);
        }