From 968e1328dce612b773a2281f8213cfe7bd36b51e Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Wed, 26 Apr 2023 16:20:30 +0200 Subject: [PATCH] Add skeleton node or bone copy context menu in Editor --- .../Windows/Assets/SkinnedModelWindow.cs | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/Source/Editor/Windows/Assets/SkinnedModelWindow.cs b/Source/Editor/Windows/Assets/SkinnedModelWindow.cs index a3439cbe9..6bc2e477c 100644 --- a/Source/Editor/Windows/Assets/SkinnedModelWindow.cs +++ b/Source/Editor/Windows/Assets/SkinnedModelWindow.cs @@ -11,6 +11,8 @@ using FlaxEditor.CustomEditors; using FlaxEditor.CustomEditors.Elements; using FlaxEditor.CustomEditors.GUI; using FlaxEditor.GUI; +using FlaxEditor.GUI.ContextMenu; +using FlaxEditor.GUI.Tree; using FlaxEditor.Scripting; using FlaxEditor.Viewport.Cameras; using FlaxEditor.Viewport.Previews; @@ -296,6 +298,7 @@ namespace FlaxEditor.Windows.Assets var group = layout.Group("Skeleton Bones"); var tree = group.Tree(); + tree.TreeControl.RightClick += OnTreeNodeRightClick; for (int i = 0; i < bones.Length; i++) { if (bones[i].ParentIndex == -1) @@ -312,6 +315,7 @@ namespace FlaxEditor.Windows.Assets var group = layout.Group("Skeleton Nodes"); var tree = group.Tree(); + tree.TreeControl.RightClick += OnTreeNodeRightClick; for (int i = 0; i < nodes.Length; i++) { if (nodes[i].ParentIndex == -1) @@ -346,6 +350,25 @@ namespace FlaxEditor.Windows.Assets } } + private void OnTreeNodeRightClick(TreeNode node, Float2 location) + { + var menu = new ContextMenu + { + MinimumWidth = 120 + }; + + var b = menu.AddButton("Copy name"); + b.Tag = node.Text; + b.ButtonClicked += OnTreeNodeCopyName; + + menu.Show(node, location); + } + + private void OnTreeNodeCopyName(ContextMenuButton b) + { + Clipboard.Text = (string)b.Tag; + } + private void BuildSkeletonBonesTree(SkeletonNode[] nodes, SkeletonBone[] bones, TreeNodeElement layout, int boneIndex) { for (int i = 0; i < bones.Length; i++)