public override void OnImport() { size = new Vector2Int(AsepriteFile.Header.Width, AsepriteFile.Header.Height); frames = AsepriteFile.GetFrames(); BuildAtlas(AssetPath); }
public override void OnImport() { size = new Vector2Int(AsepriteFile.Header.Width, AsepriteFile.Header.Height); Texture2D frame = AsepriteFile.GetFrames()[0]; BuildAtlas(AssetPath, frame); }
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; }
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; } }
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); } }