diff --git a/Editor/SceneView.meta b/Editor/SceneView.meta new file mode 100644 index 0000000..edecc0e --- /dev/null +++ b/Editor/SceneView.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 028316b5da4e417bb514260047ab5989 +timeCreated: 1658768591 \ No newline at end of file diff --git a/Editor/SceneView/EditorSceneViewToolHandleOverlay.cs b/Editor/SceneView/EditorSceneViewToolHandleOverlay.cs new file mode 100644 index 0000000..91f2052 --- /dev/null +++ b/Editor/SceneView/EditorSceneViewToolHandleOverlay.cs @@ -0,0 +1,16 @@ +#if UNITY_2021_1_OR_NEWER +using UnityEditor; +using UnityEditor.Overlays; + +namespace Module.NavigationTool.Editor.SceneViewToolbar +{ + [Overlay(typeof(SceneView), "unity-custom-tool-handle-utility", "Custom/Tool Settings", true)] + internal sealed class EditorSceneViewToolHandleOverlay : ToolbarOverlay + { + public EditorSceneViewToolHandleOverlay() + : base("SceneView/Custom/HandlePosition", "SceneView/Custom/HandleRotation") + { + } + } +} +#endif diff --git a/Editor/SceneView/EditorSceneViewToolHandleOverlay.cs.meta b/Editor/SceneView/EditorSceneViewToolHandleOverlay.cs.meta new file mode 100644 index 0000000..eb93270 --- /dev/null +++ b/Editor/SceneView/EditorSceneViewToolHandleOverlay.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7b94bff7197641bfb17797d5e3a685e5 +timeCreated: 1658768617 \ No newline at end of file diff --git a/Editor/SceneView/EditorSceneViewToolHandlePosition.cs b/Editor/SceneView/EditorSceneViewToolHandlePosition.cs new file mode 100644 index 0000000..98b77ed --- /dev/null +++ b/Editor/SceneView/EditorSceneViewToolHandlePosition.cs @@ -0,0 +1,44 @@ +#if UNITY_2021_1_OR_NEWER +using UnityEditor; +using UnityEditor.Toolbars; +using UnityEngine; + +namespace Module.NavigationTool.Editor.SceneViewToolbar +{ + [EditorToolbarElement("SceneView/Custom/HandlePosition", typeof(SceneView))] + internal sealed class EditorSceneViewToolHandlePosition : EditorToolbarButton + { + public EditorSceneViewToolHandlePosition() + { + tooltip = "Toggle Tool Handle Position\nThe tool handle is placed at the active object's pivot point."; + clicked += OnClicked; + + RefreshIcon(); + Tools.pivotModeChanged += OnPivotModeChanged; + } + + ~EditorSceneViewToolHandlePosition() + { + Tools.pivotModeChanged -= OnPivotModeChanged; + } + + private void RefreshIcon() + { + if (Tools.pivotMode == PivotMode.Center) + icon = EditorGUIUtility.IconContent("d_ToolHandleCenter").image as Texture2D; + else + icon = EditorGUIUtility.IconContent("d_ToolHandlePivot").image as Texture2D; + } + + private void OnClicked() + { + Tools.pivotMode = Tools.pivotMode == PivotMode.Center ? PivotMode.Pivot : PivotMode.Center; + } + + private void OnPivotModeChanged() + { + RefreshIcon(); + } + } +} +#endif diff --git a/Editor/SceneView/EditorSceneViewToolHandlePosition.cs.meta b/Editor/SceneView/EditorSceneViewToolHandlePosition.cs.meta new file mode 100644 index 0000000..5307a2c --- /dev/null +++ b/Editor/SceneView/EditorSceneViewToolHandlePosition.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b88e5d3205024d6da608ef18f4f46225 +timeCreated: 1658778834 \ No newline at end of file diff --git a/Editor/SceneView/EditorSceneViewToolHandleRotation.cs b/Editor/SceneView/EditorSceneViewToolHandleRotation.cs new file mode 100644 index 0000000..b786285 --- /dev/null +++ b/Editor/SceneView/EditorSceneViewToolHandleRotation.cs @@ -0,0 +1,44 @@ +#if UNITY_2021_1_OR_NEWER +using UnityEditor; +using UnityEditor.Toolbars; +using UnityEngine; + +namespace Module.NavigationTool.Editor.SceneViewToolbar +{ + [EditorToolbarElement("SceneView/Custom/HandleRotation", typeof(SceneView))] + internal sealed class EditorSceneViewToolHandleRotation : EditorToolbarButton + { + public EditorSceneViewToolHandleRotation() + { + tooltip = "Toggle Tool Handle Rotation\nTool handles are in the active object's rotation."; + clicked += OnClicked; + + RefreshIcon(); + Tools.pivotRotationChanged += OnPivotRotationChanged; + } + + ~EditorSceneViewToolHandleRotation() + { + Tools.pivotRotationChanged -= OnPivotRotationChanged; + } + + private void RefreshIcon() + { + if (Tools.pivotRotation == PivotRotation.Global) + icon = EditorGUIUtility.IconContent("d_ToolHandleGlobal").image as Texture2D; + else + icon = EditorGUIUtility.IconContent("d_ToolHandleLocal").image as Texture2D; + } + + private void OnClicked() + { + Tools.pivotRotation = Tools.pivotRotation == PivotRotation.Local ? PivotRotation.Global : PivotRotation.Local; + } + + private void OnPivotRotationChanged() + { + RefreshIcon(); + } + } +} +#endif diff --git a/Editor/SceneView/EditorSceneViewToolHandleRotation.cs.meta b/Editor/SceneView/EditorSceneViewToolHandleRotation.cs.meta new file mode 100644 index 0000000..e70fe0a --- /dev/null +++ b/Editor/SceneView/EditorSceneViewToolHandleRotation.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 42aa2d22dd9840e7abf9ef3bdf457634 +timeCreated: 1658778874 \ No newline at end of file diff --git a/README.md b/README.md index 86f5927..0f4151a 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ internal sealed class MyCustomTool : AbstractToolbarDrawer public override float CalculateWidth() { - // Default height for toolbar buttons is 30 + // Default width for toolbar buttons is 30 return 30.0f; } } diff --git a/package.json b/package.json index 25054e2..0391a32 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "com.module.navigationtool", - "version": "1.5.2", + "version": "1.6.0", "displayName": "Module.NavigationTool", "description": "Support for navigation tools, like favorites, history and toolbars", "unity": "2019.2",