diff --git a/Source/Editor/Windows/Assets/SpriteAtlasWindow.cs b/Source/Editor/Windows/Assets/SpriteAtlasWindow.cs index 1b60f4257..9d32e5077 100644 --- a/Source/Editor/Windows/Assets/SpriteAtlasWindow.cs +++ b/Source/Editor/Windows/Assets/SpriteAtlasWindow.cs @@ -153,6 +153,14 @@ namespace FlaxEditor.Windows.Assets { var menu = new ContextMenu(); + var copySprite = menu.AddButton("Copy sprite"); + copySprite.Tag = groupPanel.Tag; + copySprite.ButtonClicked += OnCopySpriteClicked; + + var pasteSprite = menu.AddButton("Paste sprite"); + pasteSprite.Tag = groupPanel.Tag; + pasteSprite.ButtonClicked += OnPasteSpriteClicked; + var deleteSprite = menu.AddButton("Delete sprite"); deleteSprite.Tag = groupPanel.Tag; deleteSprite.ButtonClicked += OnDeleteSpriteClicked; @@ -160,6 +168,24 @@ namespace FlaxEditor.Windows.Assets menu.Show(groupPanel, location); } + private void OnCopySpriteClicked(ContextMenuButton button) + { + var window = ((PropertiesProxy)ParentEditor.Values[0])._window; + var index = (int)button.Tag; + var sprite = window.Asset.GetSprite(index); + Clipboard.Text = FlaxEngine.Json.JsonSerializer.Serialize(sprite, typeof(Sprite)); + } + + private void OnPasteSpriteClicked(ContextMenuButton button) + { + var window = ((PropertiesProxy)ParentEditor.Values[0])._window; + var index = (int)button.Tag; + var sprite = window.Asset.GetSprite(index); + var pasted = FlaxEngine.Json.JsonSerializer.Deserialize(Clipboard.Text); + sprite.Area = pasted.Area; + window.Asset.SetSprite(index, ref sprite); + } + private void OnDeleteSpriteClicked(ContextMenuButton button) { var window = ((PropertiesProxy)ParentEditor.Values[0])._window;