public override void OnImport()
        {
            size = new Vector2Int(AsepriteFile.Header.Width, AsepriteFile.Header.Height);

            frames = AsepriteFile.GetFrames();
            BuildAtlas(AssetPath);
        }
Esempio n. 2
0
        public override void OnImport()
        {
            size = new Vector2Int(AsepriteFile.Header.Width, AsepriteFile.Header.Height);

            Texture2D frame = AsepriteFile.GetFrames()[0];

            BuildAtlas(AssetPath, frame);
        }
Esempio n. 3
0
        private static void LoadAnimation(string name, string fullPath)
        {
            var file      = new AsepriteFile(fullPath);
            var animation = new AnimationData();

            for (var i = 0; i < file.Layers.Count; i++)
            {
                var layer = file.Layers[i];
                var list  = new List <AnimationFrame>();

                for (var j = 0; j < file.Frames.Count; j++)
                {
                    var frame    = file.Frames[j];
                    var newFrame = new AnimationFrame();

                    newFrame.Duration = frame.Duration;
                    newFrame.Texture  = new TextureRegion(file.Texture, new Rectangle(j * file.Width, i * file.Height, file.Width, file.Height));
                    newFrame.Bounds   = newFrame.Texture.Source;

                    list.Add(newFrame);
                }

                animation.Layers[layer.Name] = list;
            }

            for (var i = 0; i < file.Slices.Count; i++)
            {
                var slice = file.Slices[i];
                animation.Slices[slice.Name] = new TextureRegion(file.Texture, new Rectangle(slice.OriginX, slice.OriginY, slice.Width, slice.Height));
            }

            foreach (var tag in file.Animations.Values)
            {
                var newTag = new AnimationTag();

                newTag.Direction  = (AnimationDirection)tag.Directions;
                newTag.StartFrame = (uint)tag.FirstFrame;
                newTag.EndFrame   = (uint)tag.LastFrame;

                animation.Tags[tag.Name] = newTag;
            }

            foreach (var tag in file.Tags)
            {
                var newTag = new AnimationTag();

                newTag.Direction  = (AnimationDirection)tag.LoopDirection;
                newTag.StartFrame = (uint)tag.From;
                newTag.EndFrame   = (uint)tag.To;

                animation.Tags[tag.Name] = newTag;
            }


            animation.Texture = file.Texture;
            animations[name]  = animation;
        }
Esempio n. 4
0
        private void BuildFromAsepsrite(Stream stream)
        {
            // Load Asesprite File
            using var ase = new AsepriteFile(stream);

            // For each named animation
            foreach (var tag in ase.Tags)
            {
                // Collect frames for specific sequence
                var animation = new SpriteAnimation(tag.Name, tag.Direction);
                for (var i = tag.From; i <= tag.To; i++)
                {
                    var frame = ase.Frames[i];
                    animation.Add(frame.Image, frame.Duration);
                }

                // Store animation
                _animations[tag.Name] = animation;
            }
        }
Esempio n. 5
0
        public void GenerateAtlasTexture(bool overwriteSprites = false)
        {
            if (atlas != null)
            {
                return;
            }

            SpriteAtlasBuilder atlasBuilder = new SpriteAtlasBuilder(AsepriteFile.Header.Width, AsepriteFile.Header.Height);

            Texture2D[] frames = AsepriteFile.GetFrames();

            atlas = atlasBuilder.GenerateAtlas(frames, out AseFileSpriteImportData[] importData);

            textureWidth  = atlas.width;
            textureHeight = atlas.height;
            frameCount    = importData.Length;

            // Rename sprites

            if (overwriteSprites)
            {
                for (int i = 0; i < importData.Length; i++)
                {
                    importData[i].name = string.Format("{0}_{1}", name, importData[i].name);
                }

                SpriteRects      = new SpriteRect[0];
                SpriteImportData = importData;

                if (SpriteImportData.Length > 1)
                {
                    TextureImportSettings.spriteMode = (int)SpriteImportMode.Multiple;
                }


                AssetDatabase.WriteImportSettingsIfDirty(AssetPath);
            }
        }