diff --git a/Source/Editor/Viewport/MainEditorGizmoViewport.cs b/Source/Editor/Viewport/MainEditorGizmoViewport.cs index eb82a42bf..93ac05373 100644 --- a/Source/Editor/Viewport/MainEditorGizmoViewport.cs +++ b/Source/Editor/Viewport/MainEditorGizmoViewport.cs @@ -223,6 +223,46 @@ namespace FlaxEditor.Viewport editor.SceneEditing.SelectionChanged += OnSelectionChanged; + // initialize snapping enabled from cached values + string cachedSnapState; + if (_editor.ProjectCache.TryGetCustomData("TranslateSnapState", out cachedSnapState)) + { + TransformGizmo.TranslationSnapEnable = Boolean.Parse(cachedSnapState); + } + if (_editor.ProjectCache.TryGetCustomData("RotationSnapState", out cachedSnapState)) + { + TransformGizmo.RotationSnapEnabled = Boolean.Parse(cachedSnapState); + } + if (_editor.ProjectCache.TryGetCustomData("ScaleSnapState", out cachedSnapState)) + { + TransformGizmo.ScaleSnapEnabled = Boolean.Parse(cachedSnapState); + } + + // initialize snap value if there is one cached + string cachedSnapValue; + if (_editor.ProjectCache.TryGetCustomData("TranslateSnapValue", out cachedSnapValue)) + { + TransformGizmo.TranslationSnapValue = float.Parse(cachedSnapValue); + } + if (_editor.ProjectCache.TryGetCustomData("RotationSnapValue", out cachedSnapValue)) + { + TransformGizmo.RotationSnapValue = float.Parse(cachedSnapValue); + } + if (_editor.ProjectCache.TryGetCustomData("ScaleSnapValue", out cachedSnapValue)) + { + TransformGizmo.ScaleSnapValue = float.Parse(cachedSnapValue); + } + + // initialize transform space if one is cached + string cachedTransformSpace; + if (_editor.ProjectCache.TryGetCustomData("TransformSpaceState", out cachedTransformSpace)) + { + if (Enum.TryParse(cachedTransformSpace, out TransformGizmoBase.TransformSpace space)) + { + TransformGizmo.ActiveTransformSpace = space; + } + } + // Transform space widget var transformSpaceWidget = new ViewportWidgetsContainer(ViewportWidgetLocation.UpperRight); var transformSpaceToggle = new ViewportWidgetButton(string.Empty, editor.Icons.Globe32, null, true) @@ -523,21 +563,29 @@ namespace FlaxEditor.Viewport private void OnTranslateSnappingToggle(ViewportWidgetButton button) { TransformGizmo.TranslationSnapEnable = !TransformGizmo.TranslationSnapEnable; + // cache value + _editor.ProjectCache.SetCustomData("TranslateSnapState", TransformGizmo.TranslationSnapEnable.ToString()); } private void OnRotateSnappingToggle(ViewportWidgetButton button) { TransformGizmo.RotationSnapEnabled = !TransformGizmo.RotationSnapEnabled; + // cache value + _editor.ProjectCache.SetCustomData("RotationSnapState", TransformGizmo.RotationSnapEnabled.ToString()); } private void OnScaleSnappingToggle(ViewportWidgetButton button) { TransformGizmo.ScaleSnapEnabled = !TransformGizmo.ScaleSnapEnabled; + // cache value + _editor.ProjectCache.SetCustomData("ScaleSnapState", TransformGizmo.ScaleSnapEnabled.ToString()); } private void OnTransformSpaceToggle(ViewportWidgetButton button) { TransformGizmo.ToggleTransformSpace(); + // cache value + _editor.ProjectCache.SetCustomData("TransformSpaceState", TransformGizmo.ActiveTransformSpace.ToString()); } private void OnGizmoModeChanged() @@ -567,6 +615,8 @@ namespace FlaxEditor.Viewport var v = (float)button.Tag; TransformGizmo.ScaleSnapValue = v; _scaleSnapping.Text = v.ToString(); + // cache value + _editor.ProjectCache.SetCustomData("ScaleSnapValue", TransformGizmo.ScaleSnapValue.ToString("N")); } private void OnWidgetScaleSnapShowHide(Control control) @@ -604,6 +654,8 @@ namespace FlaxEditor.Viewport var v = (float)button.Tag; TransformGizmo.RotationSnapValue = v; _rotateSnapping.Text = v.ToString(); + // cache value + _editor.ProjectCache.SetCustomData("RotationSnapValue", TransformGizmo.RotationSnapValue.ToString("N")); } private void OnWidgetRotateSnapShowHide(Control control) @@ -640,6 +692,8 @@ namespace FlaxEditor.Viewport var v = (float)button.Tag; TransformGizmo.TranslationSnapValue = v; _translateSnapping.Text = v.ToString(); + // cache value + _editor.ProjectCache.SetCustomData("TranslateSnapValue", TransformGizmo.TranslationSnapValue.ToString("N")); } private void OnWidgetTranslateSnapShowHide(Control control)