From aa0c524e400c58089fd0ab2d59a39861a2b490e6 Mon Sep 17 00:00:00 2001 From: CortiWins Date: Sun, 12 Oct 2025 10:28:35 +0200 Subject: [PATCH 1/4] MeshSelection.totalVertexCountOptimized All other statics about the current selection are also public. --- CHANGELOG.md | 3 +++ Editor/EditorCore/MeshSelection.cs | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 22b6dba09..e0fa68e8f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] +### Changes +- MeshSelection.totalVertexCountOptimized made public + ### Fixed - [PBLD-240] Fixed a bug where buttons for "Create Cube" and "Create PolyShape" appeared incorrectly on Light theme. diff --git a/Editor/EditorCore/MeshSelection.cs b/Editor/EditorCore/MeshSelection.cs index 39c1c977b..251e4089e 100644 --- a/Editor/EditorCore/MeshSelection.cs +++ b/Editor/EditorCore/MeshSelection.cs @@ -419,8 +419,11 @@ internal static bool Contains(ProBuilderMesh mesh) /// Gets the number of all selected vertices across the selected ProBuilder meshes, excluding coincident duplicates. /// public static int totalCommonVertexCount { get { CacheElementCounts(); return s_TotalCommonVertexCount; } } - - internal static int totalVertexCountOptimized { get { CacheElementCounts(); return s_TotalVertexCountCompiled; } } + + /// + /// Gets the number of all selected ProBuilder compiled mesh vertices. + /// + public static int totalVertexCountOptimized { get { CacheElementCounts(); return s_TotalVertexCountCompiled; } } /// /// Gets the sum of all selected ProBuilderMesh faces. From d42e82b440bcf01a9efd8a08084d6bb002f34cab Mon Sep 17 00:00:00 2001 From: CortiWins Date: Sun, 12 Oct 2025 10:31:54 +0200 Subject: [PATCH 2/4] CutTool made public Useful to set it via ToolManager.SetActiveTool --- CHANGELOG.md | 1 + Editor/EditorCore/CutTool.cs | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e0fa68e8f..b411a96ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### Changes - MeshSelection.totalVertexCountOptimized made public +- CutTool made public ### Fixed diff --git a/Editor/EditorCore/CutTool.cs b/Editor/EditorCore/CutTool.cs index 7f44d05fe..01b358830 100644 --- a/Editor/EditorCore/CutTool.cs +++ b/Editor/EditorCore/CutTool.cs @@ -19,7 +19,7 @@ namespace UnityEditor.ProBuilder { [EditorTool("Cut Tool", typeof(ProBuilderMesh), typeof(PositionToolContext))] - class CutTool : EditorTool + public class CutTool : EditorTool { ProBuilderMesh m_Mesh; From 0c73a20ff7ea9e87a47dc62094b6e798f9744efc Mon Sep 17 00:00:00 2001 From: CortiWins Date: Sun, 12 Oct 2025 10:34:31 +0200 Subject: [PATCH 3/4] PositionToolContext |TextureToolContext made public Useful to set via ToolManager.SetActiveContext --- CHANGELOG.md | 2 ++ Editor/EditorCore/ProBuilderToolsContexts.cs | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b411a96ca..45708c2ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] ### Changes +- PositionToolContext made public +- TextureToolContext made public - MeshSelection.totalVertexCountOptimized made public - CutTool made public diff --git a/Editor/EditorCore/ProBuilderToolsContexts.cs b/Editor/EditorCore/ProBuilderToolsContexts.cs index 99cfcc3c0..92a4a44e7 100644 --- a/Editor/EditorCore/ProBuilderToolsContexts.cs +++ b/Editor/EditorCore/ProBuilderToolsContexts.cs @@ -18,7 +18,7 @@ static class ProBuilderToolManager [Icon("Packages/com.unity.probuilder/Content/Icons/EditableMesh/EditMeshContext.png")] [EditorToolContext("ProBuilder", typeof(ProBuilderMesh))] - class PositionToolContext : EditorToolContext + public class PositionToolContext : EditorToolContext { internal class ProBuilderShortcutContext : IShortcutContext { @@ -407,7 +407,7 @@ static void SetColliderAction(MenuCommand command) } } - class TextureToolContext : EditorToolContext + public class TextureToolContext : EditorToolContext { ProBuilderEditor m_Editor; From b8e46c86c4e3473b9ca75cd38bc9ee579bba639e Mon Sep 17 00:00:00 2001 From: CortiWins Date: Thu, 23 Oct 2025 19:20:12 +0200 Subject: [PATCH 4/4] TextureMoveTool - SnapIncrement on Sliders Fix Class: TextureMoveTool Method: DoToolUI Snapping is done by using EditorSnapping.MoveSnap on the moved position. There are three handles - Slider2D - Slider1D Up ( Green arrow) - Slider1D Right (RedArrow) The Slider2D has an explicit individual snap value of 0.0f. The Slider1Ds use a method override that internally applies -1.0f as a snap factor. The position done via Slider1D is snapped to 1.0 increments before getting to the MoveSnap line where the acutual snap settings are applied. --- Editor/EditorCore/TextureMoveTool.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Editor/EditorCore/TextureMoveTool.cs b/Editor/EditorCore/TextureMoveTool.cs index 8228767e3..ece0c0051 100644 --- a/Editor/EditorCore/TextureMoveTool.cs +++ b/Editor/EditorCore/TextureMoveTool.cs @@ -39,7 +39,6 @@ protected override void DoToolGUI() { if (!isEditing) m_Position = Vector3.zero; - EditorHandleUtility.PushMatrix(); Handles.matrix = Matrix4x4.TRS(m_HandlePosition, m_HandleRotation, Vector3.one); @@ -48,22 +47,25 @@ protected override void DoToolGUI() Handles.color = Color.blue; + // Disable Snap for the individual handles. Snap is applied if movement is detected. + const float SnapFactor = 0.0f; + m_Position = Handles.Slider2D(m_Position, Vector3.forward, Vector3.right, Vector3.up, HandleUtility.GetHandleSize(m_Position) * .2f, Handles.RectangleHandleCap, - 0f, + SnapFactor, false); Handles.color = Color.green; - m_Position = Handles.Slider(m_Position, Vector3.up); + m_Position = Handles.Slider(m_Position, Vector3.up, HandleUtility.GetHandleSize(m_Position), Handles.ArrowHandleCap, SnapFactor); Handles.color = Color.red; - m_Position = Handles.Slider(m_Position, Vector3.right); + m_Position = Handles.Slider(m_Position, Vector3.right, HandleUtility.GetHandleSize(m_Position), Handles.ArrowHandleCap, SnapFactor); Handles.color = Color.white;