From c58648d6633e2a7323f6e85def44da9ea8630886 Mon Sep 17 00:00:00 2001 From: Emre Dogan <48212096+EmreDogann@users.noreply.github.com> Date: Sun, 8 Oct 2023 20:08:19 +0100 Subject: [PATCH] Fixed group resizing code to not jitter anymore. Can now adjust color of group node resize icon. Changed header label rendering to always be vertically centered. Changed group node style. Changed rename text field style. --- Scripts/Editor/NodeEditor.cs | 2 +- Scripts/Editor/NodeEditorAction.cs | 3 +- Scripts/Editor/NodeEditorGUI.cs | 21 +++-- Scripts/Editor/NodeEditorPreferences.cs | 5 ++ Scripts/Editor/NodeEditorResources.cs | 9 ++- Scripts/Editor/NodeGroupEditor.cs | 76 ++++++++++++++---- Scripts/Editor/RenameTextField.cs | 4 + Scripts/Editor/Resources/xnode_corner.png | Bin 16041 -> 5472 bytes .../Editor/Resources/xnode_corner.png.meta | 14 ++-- Scripts/Editor/Resources/xnode_corner.xcf | Bin 0 -> 5554 bytes .../Editor/Resources/xnode_corner.xcf.meta | 7 ++ Scripts/NodeGroup.cs | 4 +- 12 files changed, 103 insertions(+), 42 deletions(-) create mode 100644 Scripts/Editor/Resources/xnode_corner.xcf create mode 100644 Scripts/Editor/Resources/xnode_corner.xcf.meta diff --git a/Scripts/Editor/NodeEditor.cs b/Scripts/Editor/NodeEditor.cs index ba5a7f2..7976904 100644 --- a/Scripts/Editor/NodeEditor.cs +++ b/Scripts/Editor/NodeEditor.cs @@ -31,7 +31,7 @@ namespace XNodeEditor public virtual void OnHeaderGUI() { - GUILayout.Label(target.name, NodeEditorResources.styles.nodeHeaderLabel, GUILayout.Height(30)); + GUILayout.Label(target.name, NodeEditorResources.styles.nodeHeaderLabel); } /// Draws standard field editors for all public fields diff --git a/Scripts/Editor/NodeEditorAction.cs b/Scripts/Editor/NodeEditorAction.cs index b8ef971..63682c9 100644 --- a/Scripts/Editor/NodeEditorAction.cs +++ b/Scripts/Editor/NodeEditorAction.cs @@ -918,7 +918,8 @@ namespace XNodeEditor width = 200; } - Rect windowRect = new Rect(nodePos, new Vector2(width / zoom, 30 / zoom)); + Rect windowRect = new Rect(nodePos, new Vector2(width / zoom, NodeEditor.GetEditor(node, current) + .GetHeaderStyle().fixedHeight / zoom)); return windowRect.Contains(mousePos); } diff --git a/Scripts/Editor/NodeEditorGUI.cs b/Scripts/Editor/NodeEditorGUI.cs index a3f7c07..169ed38 100755 --- a/Scripts/Editor/NodeEditorGUI.cs +++ b/Scripts/Editor/NodeEditorGUI.cs @@ -688,12 +688,12 @@ namespace XNodeEditor if (selected) { - GUIStyle style = new GUIStyle(nodeEditor.GetBodyStyle()); + GUIStyle styleBody = new GUIStyle(nodeEditor.GetBodyStyle()); GUIStyle highlightStyle = new GUIStyle(nodeEditor.GetBodyHighlightStyle()); - highlightStyle.padding = style.padding; - style.padding = new RectOffset(); + highlightStyle.padding = styleBody.padding; + styleBody.padding = new RectOffset(); GUI.color = nodeEditor.GetTint(); - GUILayout.BeginVertical(style); + GUILayout.BeginVertical(styleBody); GUI.color = NodeEditorPreferences.GetSettings().highlightColor; GUILayout.BeginVertical(new GUIStyle(highlightStyle)); } @@ -706,22 +706,21 @@ namespace XNodeEditor EditorGUI.BeginChangeCheck(); //Draw node contents + GUI.color = nodeEditor.GetHeaderColor(); + GUIStyle styleHeader = new GUIStyle(nodeEditor.GetHeaderStyle()); + GUILayout.BeginVertical(styleHeader); + GUI.color = guiColor; if (currentActivity == NodeActivity.Renaming && Selection.activeObject == node) { RenameTextField.current.DrawRenameTextField(); } else { - GUI.color = nodeEditor.GetHeaderColor(); - GUIStyle style = new GUIStyle(nodeEditor.GetHeaderStyle()); - GUILayout.BeginVertical(style); - - GUI.color = guiColor; nodeEditor.OnHeaderGUI(); - - GUILayout.EndVertical(); } + GUILayout.EndVertical(); + GUI.color = nodeEditor.GetBodyColor(); GUIStyle bodyStyle = new GUIStyle(nodeEditor.GetBodyStyle()); GUILayout.BeginVertical(bodyStyle); diff --git a/Scripts/Editor/NodeEditorPreferences.cs b/Scripts/Editor/NodeEditorPreferences.cs index 3090676..9141e6f 100644 --- a/Scripts/Editor/NodeEditorPreferences.cs +++ b/Scripts/Editor/NodeEditorPreferences.cs @@ -71,6 +71,8 @@ namespace XNodeEditor public Color32 bgPortsColor = new Color32(65, 67, 70, 255); public Color32 bgBodyColor = new Color32(65, 67, 70, 255); public Color32 highlightColor = new Color32(255, 255, 255, 255); + public Color32 resizeIconColor = new Color32(255, 255, 255, 26); + public Color32 resizeIconHoverColor = new Color32(255, 255, 255, 100); public bool gridSnap = true; public bool autoSave = true; public bool openOnCreate = true; @@ -276,6 +278,9 @@ namespace XNodeEditor settings.bgHeaderColor = EditorGUILayout.ColorField("Header Background", settings.bgHeaderColor); settings.bgPortsColor = EditorGUILayout.ColorField("Ports Background", settings.bgPortsColor); settings.bgBodyColor = EditorGUILayout.ColorField("Body Background", settings.bgBodyColor); + settings.resizeIconColor = EditorGUILayout.ColorField("Resize Icon Color", settings.resizeIconColor); + settings.resizeIconHoverColor = + EditorGUILayout.ColorField("Resize Icon Hover Color", settings.resizeIconHoverColor); settings.highlightColor = EditorGUILayout.ColorField("Selection", settings.highlightColor); EditorGUILayout.Space(); settings.noodlePath = (NoodlePath)EditorGUILayout.EnumPopup("Noodle path", settings.noodlePath); diff --git a/Scripts/Editor/NodeEditorResources.cs b/Scripts/Editor/NodeEditorResources.cs index 7c7be4e..5f8ed33 100644 --- a/Scripts/Editor/NodeEditorResources.cs +++ b/Scripts/Editor/NodeEditorResources.cs @@ -64,14 +64,15 @@ namespace XNodeEditor nodeHeaderLabel = new GUIStyle(); nodeHeaderLabel.alignment = TextAnchor.MiddleCenter; nodeHeaderLabel.fontStyle = FontStyle.Bold; + nodeHeaderLabel.stretchHeight = true; nodeHeaderLabel.normal.textColor = Color.white; nodeHeaderLabelRename = new GUIStyle(GUI.skin.textField); nodeHeaderLabelRename.alignment = TextAnchor.MiddleCenter; nodeHeaderLabelRename.fontStyle = FontStyle.Bold; + nodeHeaderLabelRename.stretchHeight = true; nodeHeaderLabelRename.normal.textColor = Color.white; - nodeHeaderLabelRename.fixedHeight = 18; - nodeHeaderLabelRename.margin = new RectOffset(5, 5, 10, 8); + nodeHeaderLabelRename.margin = new RectOffset(24, 24, 8, 2); nodePadding = new GUIStyle(); nodePadding.padding = new RectOffset(16, 16, 3, 16); @@ -79,8 +80,8 @@ namespace XNodeEditor nodeHeader = new GUIStyle(); nodeHeader.normal.background = NodeEditorResources.nodeHeader; nodeHeader.border = new RectOffset(32, 32, 16, 0); - // nodeHeader.fixedHeight = 27; - nodeHeader.padding = new RectOffset(0, 0, 1, 0); + nodeHeader.fixedHeight = 28; + nodeHeader.padding = new RectOffset(0, 0, 6, 0); // nodeHeader.padding = new RectOffset(16, 16, 3, 16); nodePorts = new GUIStyle(); diff --git a/Scripts/Editor/NodeGroupEditor.cs b/Scripts/Editor/NodeGroupEditor.cs index f23a1bf..7c3816d 100644 --- a/Scripts/Editor/NodeGroupEditor.cs +++ b/Scripts/Editor/NodeGroupEditor.cs @@ -16,6 +16,7 @@ namespace XNodeEditor.NodeGroups _corner != null ? _corner : _corner = Resources.Load("xnode_corner"); private static Texture2D _corner; private bool _isResizing; + private bool _isResizeHovering; private Vector2 _size; private float _currentHeight; private Vector2 _draggingOffset; @@ -26,17 +27,24 @@ namespace XNodeEditor.NodeGroups private const int mouseRectMargin = 30; private GUIStyle headerStyle; + private GUIStyle headerLabelStyle; public override void OnCreate() { _currentHeight = group.height; - headerStyle = new GUIStyle(NodeEditorResources.styles.nodeHeaderLabel); - headerStyle.fontSize = 18; + headerLabelStyle = new GUIStyle(NodeEditorResources.styles.nodeHeaderLabel); + headerLabelStyle.fontSize = 24; + + headerStyle = new GUIStyle(NodeEditorResources.styles.nodeHeader); + headerStyle.fixedHeight += 18; } public override void OnHeaderGUI() { - GUILayout.Label(target.name, headerStyle, GUILayout.Height(30)); + Color initColor = GUI.contentColor; + GUI.contentColor = new Color(0.6f, 0.6f, 0.6f, 1.0f); + GUILayout.Label(target.name, headerLabelStyle); + GUI.contentColor = initColor; } public override void OnBodyGUI() @@ -45,11 +53,37 @@ namespace XNodeEditor.NodeGroups Event e = Event.current; switch (e.type) { + case EventType.MouseMove: + if (NodeEditorWindow.current.nodeSizes.TryGetValue(target, out _size)) + { + bool initHovering = _isResizeHovering; + // Mouse position checking is in node local space + Rect lowerRight = new Rect(_size.x - (mouseRectMargin + mouseRectPadding), + _size.y - (mouseRectMargin + mouseRectPadding), mouseRectMargin, mouseRectMargin); + if (lowerRight.Contains(e.mousePosition)) + { + _isResizeHovering = true; + } + else + { + _isResizeHovering = false; + } + + if (initHovering != _isResizeHovering) + { + NodeEditorWindow.current.Repaint(); + } + } + + break; case EventType.MouseDrag: if (_isResizing) { - group.width = Mathf.Max(200, (int)e.mousePosition.x + (int)_draggingOffset.x + 16); - group.height = Mathf.Max(100, (int)e.mousePosition.y + (int)_draggingOffset.y - 34); + group.width = (int)Mathf.Max(200, + e.mousePosition.x + _draggingOffset.x + (mouseRectMargin + mouseRectPadding)); + // magic numbers - otherwise resizing will jump vertically. + group.height = (int)Mathf.Max(100, + e.mousePosition.y + _draggingOffset.y - (31 + (30 - mouseRectMargin))); _currentHeight = group.height; NodeEditorWindow.current.Repaint(); } @@ -78,8 +112,7 @@ namespace XNodeEditor.NodeGroups if (lowerRight.Contains(e.mousePosition)) { _isResizing = true; - _draggingOffset = _size - e.mousePosition - new Vector2(GetBodyStyle().padding.right, - GetBodyStyle().padding.bottom); + _draggingOffset = lowerRight.position - e.mousePosition; } } @@ -166,17 +199,23 @@ namespace XNodeEditor.NodeGroups } GUILayout.Space(_currentHeight); - GUI.DrawTexture(new Rect(group.width - 34, group.height + 16, 24, 24), corner); - } - public override void OnRenameActive() - { - _currentHeight += 30 - NodeEditorResources.styles.nodeHeaderLabelRename.fixedHeight - - NodeEditorResources.styles.nodeHeaderLabelRename.margin.top + - NodeEditorResources.styles.nodeHeaderLabelRename.margin.bottom / 2; + if (NodeEditorWindow.current.nodeSizes.TryGetValue(target, out _size)) + { + Color initColor = GUI.color; + GUI.color = _isResizeHovering + ? NodeEditorPreferences.GetSettings().resizeIconHoverColor + : NodeEditorPreferences.GetSettings().resizeIconColor; + GUI.DrawTexture( + new Rect(_size.x - (mouseRectMargin + mouseRectPadding), + _size.y - (mouseRectMargin + mouseRectPadding), + 24, + 24), + corner); + GUI.color = initColor; + } } - public override void OnRenameDeactive() { _currentHeight = group.height; @@ -187,11 +226,16 @@ namespace XNodeEditor.NodeGroups return group.width; } - public override GUIStyle GetHeaderLabelStyle() + public override GUIStyle GetHeaderStyle() { return headerStyle; } + public override GUIStyle GetHeaderLabelStyle() + { + return headerLabelStyle; + } + public static void AddMouseRect(Rect rect, MouseCursor mouseCursor) { EditorGUIUtility.AddCursorRect(rect, mouseCursor); diff --git a/Scripts/Editor/RenameTextField.cs b/Scripts/Editor/RenameTextField.cs index 95138f3..8bd701b 100644 --- a/Scripts/Editor/RenameTextField.cs +++ b/Scripts/Editor/RenameTextField.cs @@ -38,6 +38,10 @@ namespace XNodeEditor GUIStyle stylesNodeHeaderRename = NodeEditorResources.styles.nodeHeaderLabelRename; stylesNodeHeaderRename.fontSize = NodeEditor.GetEditor((Node)target, NodeEditorWindow.current).GetHeaderLabelStyle().fontSize; + stylesNodeHeaderRename.fixedHeight = NodeEditor.GetEditor((Node)target, NodeEditorWindow.current) + .GetHeaderLabelStyle().fixedHeight; + stylesNodeHeaderRename.padding = NodeEditor.GetEditor((Node)target, NodeEditorWindow.current) + .GetHeaderLabelStyle().padding; input = GUILayout.TextField(input, stylesNodeHeaderRename); EditorGUI.FocusTextInControl(inputControlName); diff --git a/Scripts/Editor/Resources/xnode_corner.png b/Scripts/Editor/Resources/xnode_corner.png index 12d25faf2759fea34844b56ce2ed47c84409f84f..31fbf1cb699a770c99fef7e7800dc54afde38ad5 100644 GIT binary patch literal 5472 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 T`IvoRZisgF0?h}r@+ diff --git a/Scripts/Editor/Resources/xnode_corner.png.meta b/Scripts/Editor/Resources/xnode_corner.png.meta index 5b45fe5..fd8222b 100644 --- a/Scripts/Editor/Resources/xnode_corner.png.meta +++ b/Scripts/Editor/Resources/xnode_corner.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 0babe8a4377248fcacd576e5da1a27e5 +guid: d129eb4a5ff1c8a40a23ef0e54de1fa9 TextureImporter: internalIDToNameTable: [] externalObjects: {} @@ -63,16 +63,16 @@ TextureImporter: compressionQualitySet: 0 textureFormatSet: 0 ignorePngGamma: 0 - applyGammaDecoding: 1 + applyGammaDecoding: 0 swizzle: 50462976 - cookieLightType: 2 + cookieLightType: 0 platformSettings: - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 textureFormat: -1 - textureCompression: 1 + textureCompression: 0 compressionQuality: 50 crunchedCompression: 0 allowsAlphaSplitting: 0 @@ -85,7 +85,7 @@ TextureImporter: maxTextureSize: 2048 resizeAlgorithm: 0 textureFormat: -1 - textureCompression: 0 + textureCompression: 1 compressionQuality: 50 crunchedCompression: 0 allowsAlphaSplitting: 0 @@ -98,7 +98,7 @@ TextureImporter: maxTextureSize: 2048 resizeAlgorithm: 0 textureFormat: -1 - textureCompression: 0 + textureCompression: 1 compressionQuality: 50 crunchedCompression: 0 allowsAlphaSplitting: 0 @@ -111,7 +111,7 @@ TextureImporter: maxTextureSize: 2048 resizeAlgorithm: 0 textureFormat: -1 - textureCompression: 0 + textureCompression: 1 compressionQuality: 50 crunchedCompression: 0 allowsAlphaSplitting: 0 diff --git a/Scripts/Editor/Resources/xnode_corner.xcf b/Scripts/Editor/Resources/xnode_corner.xcf new file mode 100644 index 0000000000000000000000000000000000000000..fb5990d9327ca39149b6115f6c2e06e70b3e5389 GIT binary patch literal 5554 zcmds54RBP|6~6nE{mbTmlkgMZx&f0kyv^=r^Rpq@7?Oywq(%rP5ma8@-rYRNzPG%6 z2^&X6ZK*9C7308Yi_^4fYcp6Fs}_GM(u%cGDzvm6nL>5i=@g5O(;^Uzc|G^-Zg#^2 z6GWY9&*t3o-Sf`5_uO;teLo5Ep)ihe0X*n*xeySJvj*f&;2dBL?c@S41YV$pMyEDZ zy?{2^w3|&)9e2x+Y{iBezGEQW_9KG-K? zm)GmXO@6VL;MGGBnS>&^P2fZ+EK00Q{9qfOgSut3h%#Qm@&a}{mr%v$Ni>hK@sjyT z>XI{Y1JYourzSBQVdO;Dpbo^MEocNCM5i@{nikD~<|)ldZGm=`cDwe7E>G8^`+@GX z-mCwX{&<=rZEM;|gV(UraMsvme92@tZ8M!Qv*sg~Cd;$wW$7c}uwtHbu-Ob%=qw5~M<>g!7S#MyO-kZ3) z{kzHAK~rBX&u@5aglX6ZOfeoqWjUL7Pjy_Qq zBYk2Rw>3B8=z|mstQI5 z_OjTi{#<2nxp$h&F0B6ONtM(~4 z2B#X+m~AQR2oag}voafBi>a-?F&gT}gG7q(qR>#{ayUycfrIUbkQz$XbY9EUmNfb- z^$ACx1><^|4Pu(Y277Ci4>;OriX6*%InqI-)odu-Pwc*048QscFuk;k>bQ~!LAlTF zt8~xCx{LSE%J>F}CxXn%uqwOHHN(iO2-I?b+OC02Lnt%YcPAa}zN+e)3b%6xkDl3i zbcezYKj#RDQiz2()V)^`7J}1_PHhQIe+M5W{oO5mhzPWZm&)W+`<_|ZhZ9G`(M-2^ zyXc3?PMb|SdeRyWQb+8OX!oT)3of+|nGXaUGnb4`qM9bN87tVdTW8XGO1Wy>PM``G zZ9g@fDJ7eYR}`XamIyo!TY&98x6|!poF2wi+v#-IReI`N)#U&#J?-QGqSPsh{dQmM zd7HdH!R^WIbXDQfE?)49nUFu01 z#T6BzZJND!o^%IVMUr{mu({C^O{&p3`jdw!}-)F#7uK_m4F$iQ&!9^+9l7evxrr&RL z97&`p@ zI6)WyWuVNDViKXbFx6aSPzsSzDL^JAADI;!vM6~oum=3BV50$Fiz9F{8)sIRe#H4{SOc0+Iuo+_20k**0dcf(Eax?l^Up_hkE4rY{i8*L2 z21X0f`8X;sK<5%rpZ_IdT|7E#%AC4Hr0G+XiKs18w390^Pf;gVWBP*iW^|sWcVe_$ zuTMe?8ru_7rlGODF_exj#DD>5lyT}{MIS2@d&>1jP<*ntT)%;CK^$j#aC4#pycOOC z{|XR@