From 66cc3196e1222f031c27f3b4d277c82dfdf52025 Mon Sep 17 00:00:00 2001 From: xxSeys1 Date: Thu, 5 Dec 2024 20:50:32 +0100 Subject: [PATCH 1/3] improve "Editor Options -> Visual" categories --- Source/Editor/Options/VisualOptions.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Source/Editor/Options/VisualOptions.cs b/Source/Editor/Options/VisualOptions.cs index 4e94538e2..8a55ded91 100644 --- a/Source/Editor/Options/VisualOptions.cs +++ b/Source/Editor/Options/VisualOptions.cs @@ -22,35 +22,35 @@ namespace FlaxEditor.Options /// Gets or sets the first outline color. /// [DefaultValue(typeof(Color), "0.039,0.827,0.156")] - [EditorDisplay("Gizmo"), EditorOrder(100), Tooltip("The first color of the selection outline gradient.")] + [EditorDisplay("Transform Gizmo"), EditorOrder(100), Tooltip("The first color of the selection outline gradient.")] public Color SelectionOutlineColor0 { get; set; } = new Color(0.039f, 0.827f, 0.156f); /// /// Gets or sets the second outline color. /// [DefaultValue(typeof(Color), "0.019,0.615,0.101")] - [EditorDisplay("Gizmo"), EditorOrder(101), Tooltip("The second color of the selection outline gradient.")] + [EditorDisplay("Transform Gizmo"), EditorOrder(101), Tooltip("The second color of the selection outline gradient.")] public Color SelectionOutlineColor1 { get; set; } = new Color(0.019f, 0.615f, 0.101f); /// /// Gets or sets the selection outline size for UI controls. /// [DefaultValue(2.0f)] - [EditorDisplay("Gizmo", "UI Control Outline Size"), EditorOrder(100), Tooltip("The size of the selection outline for UI controls.")] + [EditorDisplay("UI Gizmo", "UI Control Outline Size"), EditorOrder(103), Tooltip("The size of the selection outline for UI controls.")] public float UISelectionOutlineSize { get; set; } = 2.0f; /// /// Gets or sets the transform gizmo size. /// [DefaultValue(1.0f), Limit(0.01f, 100.0f, 0.01f)] - [EditorDisplay("Gizmo"), EditorOrder(110), Tooltip("The transform gizmo size.")] + [EditorDisplay("Transform Gizmo"), EditorOrder(110), Tooltip("The transform gizmo size.")] public float GizmoSize { get; set; } = 1.0f; /// /// Gets or sets the color used to highlight selected meshes and CSG surfaces. /// [DefaultValue(typeof(Color), "0.0,0.533,1.0,1.0")] - [EditorDisplay("Gizmo"), EditorOrder(200), Tooltip("The color used to highlight selected meshes and CSG surfaces.")] + [EditorDisplay("Transform Gizmo"), EditorOrder(200), Tooltip("The color used to highlight selected meshes and CSG surfaces.")] public Color HighlightColor { get; set; } = new Color(0.0f, 0.533f, 1.0f, 1.0f); /// From cee0b24b9fefc77ebeddb8e586e655a0b6df5d8d Mon Sep 17 00:00:00 2001 From: xxSeys1 Date: Thu, 5 Dec 2024 21:10:26 +0100 Subject: [PATCH 2/3] add options for gizmo brightness and opacity --- .../Editor/Gizmo/TransformGizmoBase.Draw.cs | 86 +++++++++++++++---- Source/Editor/Options/VisualOptions.cs | 14 +++ 2 files changed, 85 insertions(+), 15 deletions(-) diff --git a/Source/Editor/Gizmo/TransformGizmoBase.Draw.cs b/Source/Editor/Gizmo/TransformGizmoBase.Draw.cs index fe2e7b9e3..4166b463d 100644 --- a/Source/Editor/Gizmo/TransformGizmoBase.Draw.cs +++ b/Source/Editor/Gizmo/TransformGizmoBase.Draw.cs @@ -1,6 +1,9 @@ // Copyright (c) 2012-2024 Wojciech Figat. All rights reserved. +using FlaxEditor.Options; +using FlaxEditor.SceneGraph; using FlaxEngine; +using System; namespace FlaxEditor.Gizmo { @@ -18,8 +21,13 @@ namespace FlaxEditor.Gizmo private MaterialInstance _materialAxisY; private MaterialInstance _materialAxisZ; private MaterialInstance _materialAxisFocus; + private MaterialInstance _materialAxisLocked; private MaterialBase _materialSphere; + // Material Parameter Names + const String _brightnessParamName = "Brightness"; + const String _opacityParamName = "Opacity"; + private void InitDrawing() { // Axis Models @@ -34,6 +42,7 @@ namespace FlaxEditor.Gizmo _materialAxisY = FlaxEngine.Content.LoadAsyncInternal("Editor/Gizmo/MaterialAxisY"); _materialAxisZ = FlaxEngine.Content.LoadAsyncInternal("Editor/Gizmo/MaterialAxisZ"); _materialAxisFocus = FlaxEngine.Content.LoadAsyncInternal("Editor/Gizmo/MaterialAxisFocus"); + _materialAxisLocked = FlaxEngine.Content.LoadAsyncInternal("Editor/Gizmo/MaterialAxisLocked"); _materialSphere = FlaxEngine.Content.LoadAsyncInternal("Editor/Gizmo/MaterialSphere"); // Ensure that every asset was loaded @@ -50,6 +59,23 @@ namespace FlaxEditor.Gizmo { Platform.Fatal("Failed to load transform gizmo resources."); } + + ApplyGizmoOptionsToMaterials(Editor.Instance.Options.Options); + + Editor.Instance.Options.OptionsChanged += ApplyGizmoOptionsToMaterials; + } + + private void ApplyGizmoOptionsToMaterials(EditorOptions o) + { + _materialAxisX.SetParameterValue(_brightnessParamName, o.Visual.transformGizmoBrightness); + _materialAxisY.SetParameterValue(_brightnessParamName, o.Visual.transformGizmoBrightness); + _materialAxisZ.SetParameterValue(_brightnessParamName, o.Visual.transformGizmoBrightness); + _materialAxisLocked.SetParameterValue(_brightnessParamName, o.Visual.transformGizmoBrightness); + + _materialAxisX.SetParameterValue(_opacityParamName, o.Visual.transformGizmoOpacity); + _materialAxisY.SetParameterValue(_opacityParamName, o.Visual.transformGizmoOpacity); + _materialAxisZ.SetParameterValue(_opacityParamName, o.Visual.transformGizmoOpacity); + _materialAxisLocked.SetParameterValue(_opacityParamName, o.Visual.transformGizmoOpacity); } /// @@ -60,6 +86,21 @@ namespace FlaxEditor.Gizmo if (!_modelCube || !_modelCube.IsLoaded) return; + bool gizmoLocked = false; + + // Find out if any of the selected objects can not be moved. + if (Editor.Instance.StateMachine.IsPlayMode) + { + foreach (SceneGraphNode obj in Editor.Instance.SceneEditing.Selection) + { + if (obj.CanTransform == false) + { + gizmoLocked = true; + break; + } + } + } + // As all axisMesh have the same pivot, add a little offset to the x axisMesh, this way SortDrawCalls is able to sort the draw order // https://github.com/FlaxEngine/FlaxEngine/issues/680 @@ -92,32 +133,38 @@ namespace FlaxEditor.Gizmo // X axis Matrix.RotationY(-Mathf.PiOverTwo, out m2); Matrix.Multiply(ref m2, ref m1, out m3); - transAxisMesh.Draw(ref renderContext, isXAxis ? _materialAxisFocus : _materialAxisX, ref m3); + MaterialInstance xAxisMaterialTransform = gizmoLocked ? _materialAxisLocked : (isXAxis ? _materialAxisFocus : _materialAxisX); + transAxisMesh.Draw(ref renderContext, xAxisMaterialTransform, ref m3); // Y axis Matrix.RotationX(Mathf.PiOverTwo, out m2); Matrix.Multiply(ref m2, ref m1, out m3); - transAxisMesh.Draw(ref renderContext, isYAxis ? _materialAxisFocus : _materialAxisY, ref m3); + MaterialInstance yAxisMaterialTransform = gizmoLocked ? _materialAxisLocked : (isYAxis ? _materialAxisFocus : _materialAxisY); + transAxisMesh.Draw(ref renderContext, yAxisMaterialTransform, ref m3); // Z axis Matrix.RotationX(Mathf.Pi, out m2); Matrix.Multiply(ref m2, ref m1, out m3); - transAxisMesh.Draw(ref renderContext, isZAxis ? _materialAxisFocus : _materialAxisZ, ref m3); + MaterialInstance zAxisMaterialTransform = gizmoLocked ? _materialAxisLocked : (isZAxis ? _materialAxisFocus : _materialAxisZ); + transAxisMesh.Draw(ref renderContext, zAxisMaterialTransform, ref m3); // XY plane m2 = Matrix.Transformation(new Vector3(boxSize, boxSize * 0.1f, boxSize), Quaternion.RotationX(Mathf.PiOverTwo), new Vector3(boxSize * boxScale, boxSize * boxScale, 0.0f)); Matrix.Multiply(ref m2, ref m1, out m3); - cubeMesh.Draw(ref renderContext, _activeAxis == Axis.XY ? _materialAxisFocus : _materialAxisX, ref m3); + MaterialInstance xyPlaneMaterialTransform = gizmoLocked ? _materialAxisLocked : (_activeAxis == Axis.XY ? _materialAxisFocus : _materialAxisX); + cubeMesh.Draw(ref renderContext, xyPlaneMaterialTransform, ref m3); // ZX plane m2 = Matrix.Transformation(new Vector3(boxSize, boxSize * 0.1f, boxSize), Quaternion.Identity, new Vector3(boxSize * boxScale, 0.0f, boxSize * boxScale)); Matrix.Multiply(ref m2, ref m1, out m3); - cubeMesh.Draw(ref renderContext, _activeAxis == Axis.ZX ? _materialAxisFocus : _materialAxisZ, ref m3); + MaterialInstance zxPlaneMaterialTransform = gizmoLocked ? _materialAxisLocked : (_activeAxis == Axis.ZX ? _materialAxisFocus : _materialAxisY); + cubeMesh.Draw(ref renderContext, zxPlaneMaterialTransform, ref m3); // YZ plane m2 = Matrix.Transformation(new Vector3(boxSize, boxSize * 0.1f, boxSize), Quaternion.RotationZ(Mathf.PiOverTwo), new Vector3(0.0f, boxSize * boxScale, boxSize * boxScale)); Matrix.Multiply(ref m2, ref m1, out m3); - cubeMesh.Draw(ref renderContext, _activeAxis == Axis.YZ ? _materialAxisFocus : _materialAxisY, ref m3); + MaterialInstance yzPlaneMaterialTransform = gizmoLocked ? _materialAxisLocked : (_activeAxis == Axis.YZ ? _materialAxisFocus : _materialAxisZ); + cubeMesh.Draw(ref renderContext, yzPlaneMaterialTransform, ref m3); // Center sphere Matrix.Scaling(gizmoModelsScale2RealGizmoSize, out m2); @@ -136,15 +183,18 @@ namespace FlaxEditor.Gizmo // X axis Matrix.RotationZ(Mathf.PiOverTwo, out m2); Matrix.Multiply(ref m2, ref m1, out m3); - rotationAxisMesh.Draw(ref renderContext, isXAxis ? _materialAxisFocus : _materialAxisX, ref m3); + MaterialInstance xAxisMaterialRotate = gizmoLocked ? _materialAxisLocked : (isXAxis ? _materialAxisFocus : _materialAxisX); + rotationAxisMesh.Draw(ref renderContext, xAxisMaterialRotate, ref m3); // Y axis - rotationAxisMesh.Draw(ref renderContext, isYAxis ? _materialAxisFocus : _materialAxisY, ref m1); + MaterialInstance yAxisMaterialRotate = gizmoLocked ? _materialAxisLocked : (isYAxis ? _materialAxisFocus : _materialAxisY); + rotationAxisMesh.Draw(ref renderContext, yAxisMaterialRotate, ref m1); // Z axis Matrix.RotationX(-Mathf.PiOverTwo, out m2); Matrix.Multiply(ref m2, ref m1, out m3); - rotationAxisMesh.Draw(ref renderContext, isZAxis ? _materialAxisFocus : _materialAxisZ, ref m3); + MaterialInstance zAxisMaterialRotate = gizmoLocked ? _materialAxisLocked : (isZAxis ? _materialAxisFocus : _materialAxisZ); + rotationAxisMesh.Draw(ref renderContext, zAxisMaterialRotate, ref m3); // Center box Matrix.Scaling(gizmoModelsScale2RealGizmoSize, out m2); @@ -163,32 +213,38 @@ namespace FlaxEditor.Gizmo // X axis Matrix.RotationY(-Mathf.PiOverTwo, out m2); Matrix.Multiply(ref m2, ref mx1, out m3); - scaleAxisMesh.Draw(ref renderContext, isXAxis ? _materialAxisFocus : _materialAxisX, ref m3); + MaterialInstance xAxisMaterialRotate = gizmoLocked ? _materialAxisLocked : (isXAxis ? _materialAxisFocus : _materialAxisX); + scaleAxisMesh.Draw(ref renderContext, xAxisMaterialRotate, ref m3); // Y axis Matrix.RotationX(Mathf.PiOverTwo, out m2); Matrix.Multiply(ref m2, ref m1, out m3); - scaleAxisMesh.Draw(ref renderContext, isYAxis ? _materialAxisFocus : _materialAxisY, ref m3); + MaterialInstance yAxisMaterialRotate = gizmoLocked ? _materialAxisLocked : (isYAxis ? _materialAxisFocus : _materialAxisY); + scaleAxisMesh.Draw(ref renderContext, yAxisMaterialRotate, ref m3); // Z axis Matrix.RotationX(Mathf.Pi, out m2); Matrix.Multiply(ref m2, ref m1, out m3); - scaleAxisMesh.Draw(ref renderContext, isZAxis ? _materialAxisFocus : _materialAxisZ, ref m3); + MaterialInstance zAxisMaterialRotate = gizmoLocked ? _materialAxisLocked : (isZAxis ? _materialAxisFocus : _materialAxisZ); + scaleAxisMesh.Draw(ref renderContext, zAxisMaterialRotate, ref m3); // XY plane m2 = Matrix.Transformation(new Vector3(boxSize, boxSize * 0.1f, boxSize), Quaternion.RotationX(Mathf.PiOverTwo), new Vector3(boxSize * boxScale, boxSize * boxScale, 0.0f)); Matrix.Multiply(ref m2, ref m1, out m3); - cubeMesh.Draw(ref renderContext, _activeAxis == Axis.XY ? _materialAxisFocus : _materialAxisX, ref m3); + MaterialInstance xyPlaneMaterialScale = gizmoLocked ? _materialAxisLocked : (_activeAxis == Axis.XY ? _materialAxisFocus : _materialAxisX); + cubeMesh.Draw(ref renderContext, xyPlaneMaterialScale, ref m3); // ZX plane m2 = Matrix.Transformation(new Vector3(boxSize, boxSize * 0.1f, boxSize), Quaternion.Identity, new Vector3(boxSize * boxScale, 0.0f, boxSize * boxScale)); Matrix.Multiply(ref m2, ref m1, out m3); - cubeMesh.Draw(ref renderContext, _activeAxis == Axis.ZX ? _materialAxisFocus : _materialAxisZ, ref m3); + MaterialInstance zxPlaneMaterialScale = gizmoLocked ? _materialAxisLocked : (_activeAxis == Axis.ZX ? _materialAxisFocus : _materialAxisZ); + cubeMesh.Draw(ref renderContext, zxPlaneMaterialScale, ref m3); // YZ plane m2 = Matrix.Transformation(new Vector3(boxSize, boxSize * 0.1f, boxSize), Quaternion.RotationZ(Mathf.PiOverTwo), new Vector3(0.0f, boxSize * boxScale, boxSize * boxScale)); Matrix.Multiply(ref m2, ref m1, out m3); - cubeMesh.Draw(ref renderContext, _activeAxis == Axis.YZ ? _materialAxisFocus : _materialAxisY, ref m3); + MaterialInstance yzPlaneMaterialScale = gizmoLocked ? _materialAxisLocked : (_activeAxis == Axis.YZ ? _materialAxisFocus : _materialAxisY); + cubeMesh.Draw(ref renderContext, yzPlaneMaterialScale, ref m3); // Center box Matrix.Scaling(gizmoModelsScale2RealGizmoSize, out m2); diff --git a/Source/Editor/Options/VisualOptions.cs b/Source/Editor/Options/VisualOptions.cs index 8a55ded91..5314cd8c1 100644 --- a/Source/Editor/Options/VisualOptions.cs +++ b/Source/Editor/Options/VisualOptions.cs @@ -53,6 +53,20 @@ namespace FlaxEditor.Options [EditorDisplay("Transform Gizmo"), EditorOrder(200), Tooltip("The color used to highlight selected meshes and CSG surfaces.")] public Color HighlightColor { get; set; } = new Color(0.0f, 0.533f, 1.0f, 1.0f); + /// + /// Gets or set a value indicating how bright the transform gizmo is. Value over 1 will result in the gizmo emitting light. + /// + [DefaultValue(1f), Range(0f, 5f)] + [EditorDisplay("Transform Gizmo", "Gizmo Brightness"), EditorOrder(210)] + public float transformGizmoBrightness { get; set; } = 1f; + + /// + /// Gets or set a value indicating the opactiy of the transform gizmo. + /// + [DefaultValue(1f), Range(0f, 1f)] + [EditorDisplay("Transform Gizmo", "Gizmo Opacity"), EditorOrder(211)] + public float transformGizmoOpacity { get; set; } = 1f; + /// /// Gets or sets a value indicating whether enable MSAA for DebugDraw primitives rendering. Helps with pixel aliasing but reduces performance. /// From 622de6ebcbe4450c9c382ca26881ba2baf8bc5b8 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Mon, 16 Dec 2024 23:41:55 +0100 Subject: [PATCH 3/3] Minor improvements to new gizmo changes and add new assets #3088 --- Content/Editor/Gizmo/Material.flax | 4 +-- Content/Editor/Gizmo/MaterialAxisFocus.flax | 4 +-- Content/Editor/Gizmo/MaterialAxisLocked.flax | 3 ++ Content/Editor/Gizmo/MaterialAxisX.flax | 4 +-- Content/Editor/Gizmo/MaterialAxisY.flax | 4 +-- Content/Editor/Gizmo/MaterialAxisZ.flax | 4 +-- Content/Editor/Gizmo/MaterialSphere.flax | 4 +-- .../Editor/Gizmo/TransformGizmoBase.Draw.cs | 34 ++++++++++--------- Source/Editor/Options/VisualOptions.cs | 6 ++-- 9 files changed, 36 insertions(+), 31 deletions(-) create mode 100644 Content/Editor/Gizmo/MaterialAxisLocked.flax diff --git a/Content/Editor/Gizmo/Material.flax b/Content/Editor/Gizmo/Material.flax index 87e7c078d..872b529e3 100644 --- a/Content/Editor/Gizmo/Material.flax +++ b/Content/Editor/Gizmo/Material.flax @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ace1f3a9b078208da9a8742e2a7de74b10509abb3dcf12ddc70e4da918bbb756 -size 30756 +oid sha256:af4271107789ee629c6b5f2f0d4d2324a0a8b124043f6dd14f977514c408014b +size 31306 diff --git a/Content/Editor/Gizmo/MaterialAxisFocus.flax b/Content/Editor/Gizmo/MaterialAxisFocus.flax index 56c3f6560..a9de5e7e6 100644 --- a/Content/Editor/Gizmo/MaterialAxisFocus.flax +++ b/Content/Editor/Gizmo/MaterialAxisFocus.flax @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b051fe079aa227c67f861220e35fab93c321d310f737ff663d9b77ef3fe98c3e -size 466 +oid sha256:db7018144f8a2774e1188b6f0ef7edfde3f8cb9c7f11f576163512c02f4c5a54 +size 661 diff --git a/Content/Editor/Gizmo/MaterialAxisLocked.flax b/Content/Editor/Gizmo/MaterialAxisLocked.flax new file mode 100644 index 000000000..be44ece86 --- /dev/null +++ b/Content/Editor/Gizmo/MaterialAxisLocked.flax @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7518765847301a4b13625fb05d542fab4fc924190a7414d39227db817a0e29cb +size 661 diff --git a/Content/Editor/Gizmo/MaterialAxisX.flax b/Content/Editor/Gizmo/MaterialAxisX.flax index 2bdb44208..9c7141673 100644 --- a/Content/Editor/Gizmo/MaterialAxisX.flax +++ b/Content/Editor/Gizmo/MaterialAxisX.flax @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cdffe8d74604845d50004b3f481e28c996a5b7945ae4e3e9e69975d23b2ef176 -size 302 +oid sha256:261382d0e9d30168f325eea14e96ae7abdd2c1fd8bad166f1b134df507e5fda9 +size 661 diff --git a/Content/Editor/Gizmo/MaterialAxisY.flax b/Content/Editor/Gizmo/MaterialAxisY.flax index b07d7b64a..6a16d14da 100644 --- a/Content/Editor/Gizmo/MaterialAxisY.flax +++ b/Content/Editor/Gizmo/MaterialAxisY.flax @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1407e7ad2dbd54e0833488fd96ef4c3ede3b78fd970b3ff7e804d51dd04fdb2e -size 302 +oid sha256:f9160ba4200d01d7dfe6c529bb2f8893ee5106fa644921de51757947a0cb7bea +size 661 diff --git a/Content/Editor/Gizmo/MaterialAxisZ.flax b/Content/Editor/Gizmo/MaterialAxisZ.flax index e2bf44327..29c9a49d4 100644 --- a/Content/Editor/Gizmo/MaterialAxisZ.flax +++ b/Content/Editor/Gizmo/MaterialAxisZ.flax @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9f4a98b0028a9a9750f8dad737e5baf2bd061970f2f35fd10deacf47162cd992 -size 302 +oid sha256:5d129825361a89fca14f1dbad60a983cfac60d69284be66ca5e84041713e07a6 +size 661 diff --git a/Content/Editor/Gizmo/MaterialSphere.flax b/Content/Editor/Gizmo/MaterialSphere.flax index bf110acfb..1da1a3413 100644 --- a/Content/Editor/Gizmo/MaterialSphere.flax +++ b/Content/Editor/Gizmo/MaterialSphere.flax @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bf88f48c5de6b8fb8c7effbbdded9e6f115b1a3ac262d60785987c8f24107dfb -size 567 +oid sha256:55fe4f30e87ddda26928901beeef710bc5eaaf7712224bf633c674465cf3b4ac +size 661 diff --git a/Source/Editor/Gizmo/TransformGizmoBase.Draw.cs b/Source/Editor/Gizmo/TransformGizmoBase.Draw.cs index 4166b463d..77bfff4b4 100644 --- a/Source/Editor/Gizmo/TransformGizmoBase.Draw.cs +++ b/Source/Editor/Gizmo/TransformGizmoBase.Draw.cs @@ -60,22 +60,24 @@ namespace FlaxEditor.Gizmo Platform.Fatal("Failed to load transform gizmo resources."); } - ApplyGizmoOptionsToMaterials(Editor.Instance.Options.Options); - - Editor.Instance.Options.OptionsChanged += ApplyGizmoOptionsToMaterials; + // Setup editor options + OnEditorOptionsChanged(Editor.Instance.Options.Options); + Editor.Instance.Options.OptionsChanged += OnEditorOptionsChanged; } - private void ApplyGizmoOptionsToMaterials(EditorOptions o) + private void OnEditorOptionsChanged(EditorOptions options) { - _materialAxisX.SetParameterValue(_brightnessParamName, o.Visual.transformGizmoBrightness); - _materialAxisY.SetParameterValue(_brightnessParamName, o.Visual.transformGizmoBrightness); - _materialAxisZ.SetParameterValue(_brightnessParamName, o.Visual.transformGizmoBrightness); - _materialAxisLocked.SetParameterValue(_brightnessParamName, o.Visual.transformGizmoBrightness); - - _materialAxisX.SetParameterValue(_opacityParamName, o.Visual.transformGizmoOpacity); - _materialAxisY.SetParameterValue(_opacityParamName, o.Visual.transformGizmoOpacity); - _materialAxisZ.SetParameterValue(_opacityParamName, o.Visual.transformGizmoOpacity); - _materialAxisLocked.SetParameterValue(_opacityParamName, o.Visual.transformGizmoOpacity); + float brightness = options.Visual.TransformGizmoBrightness; + _materialAxisX.SetParameterValue(_brightnessParamName, brightness); + _materialAxisY.SetParameterValue(_brightnessParamName, brightness); + _materialAxisZ.SetParameterValue(_brightnessParamName, brightness); + _materialAxisLocked.SetParameterValue(_brightnessParamName, brightness); + + float opacity = options.Visual.TransformGizmoOpacity; + _materialAxisX.SetParameterValue(_opacityParamName, opacity); + _materialAxisY.SetParameterValue(_opacityParamName, opacity); + _materialAxisZ.SetParameterValue(_opacityParamName, opacity); + _materialAxisLocked.SetParameterValue(_opacityParamName, opacity); } /// @@ -86,13 +88,13 @@ namespace FlaxEditor.Gizmo if (!_modelCube || !_modelCube.IsLoaded) return; + // Find out if any of the selected objects can not be moved bool gizmoLocked = false; - - // Find out if any of the selected objects can not be moved. if (Editor.Instance.StateMachine.IsPlayMode) { - foreach (SceneGraphNode obj in Editor.Instance.SceneEditing.Selection) + for (int i = 0; i < SelectionCount; i++) { + var obj = GetSelectedObject(i); if (obj.CanTransform == false) { gizmoLocked = true; diff --git a/Source/Editor/Options/VisualOptions.cs b/Source/Editor/Options/VisualOptions.cs index 5314cd8c1..cb5a0a89d 100644 --- a/Source/Editor/Options/VisualOptions.cs +++ b/Source/Editor/Options/VisualOptions.cs @@ -58,14 +58,14 @@ namespace FlaxEditor.Options /// [DefaultValue(1f), Range(0f, 5f)] [EditorDisplay("Transform Gizmo", "Gizmo Brightness"), EditorOrder(210)] - public float transformGizmoBrightness { get; set; } = 1f; + public float TransformGizmoBrightness { get; set; } = 1f; /// - /// Gets or set a value indicating the opactiy of the transform gizmo. + /// Gets or set a value indicating the opacity of the transform gizmo. /// [DefaultValue(1f), Range(0f, 1f)] [EditorDisplay("Transform Gizmo", "Gizmo Opacity"), EditorOrder(211)] - public float transformGizmoOpacity { get; set; } = 1f; + public float TransformGizmoOpacity { get; set; } = 1f; /// /// Gets or sets a value indicating whether enable MSAA for DebugDraw primitives rendering. Helps with pixel aliasing but reduces performance.