diff --git a/Source/Editor/Options/ViewportOptions.cs b/Source/Editor/Options/ViewportOptions.cs index 2dd08b6d1..485ac7294 100644 --- a/Source/Editor/Options/ViewportOptions.cs +++ b/Source/Editor/Options/ViewportOptions.cs @@ -136,6 +136,13 @@ namespace FlaxEditor.Options [DefaultValue(50.0f), Limit(25.0f, 500.0f, 5.0f)] [EditorDisplay("Defaults"), EditorOrder(220), Tooltip("The default editor viewport grid scale.")] public float ViewportGridScale { get; set; } = 50.0f; + + /// + /// Gets or sets the use persistence over defaults setting + /// + [DefaultValue(true)] + [EditorDisplay("Defaults"), EditorOrder(230), Tooltip("Allow persistence setting from last session to override default settings")] + public bool UsePersistenceOverDefaults { get; set; } = true; /// /// Gets or sets the view distance you can see the grid. diff --git a/Source/Editor/Windows/EditGameWindow.cs b/Source/Editor/Windows/EditGameWindow.cs index 5f91aebe6..8d0c146d9 100644 --- a/Source/Editor/Windows/EditGameWindow.cs +++ b/Source/Editor/Windows/EditGameWindow.cs @@ -433,25 +433,34 @@ namespace FlaxEditor.Windows writer.WriteAttributeString("GridEnabled", Viewport.Grid.Enabled.ToString()); writer.WriteAttributeString("ShowFpsCounter", Viewport.ShowFpsCounter.ToString()); writer.WriteAttributeString("ShowNavigation", Viewport.ShowNavigation.ToString()); + writer.WriteAttributeString("UseOrthographicProjection", Viewport.UseOrthographicProjection.ToString()); writer.WriteAttributeString("NearPlane", Viewport.NearPlane.ToString()); writer.WriteAttributeString("FarPlane", Viewport.FarPlane.ToString()); writer.WriteAttributeString("FieldOfView", Viewport.FieldOfView.ToString()); writer.WriteAttributeString("MovementSpeed", Viewport.MovementSpeed.ToString()); + writer.WriteAttributeString("Brightness", Viewport.Brightness.ToString()); writer.WriteAttributeString("ViewportIconsScale", ViewportIconsRenderer.Scale.ToString()); + writer.WriteAttributeString("ResolutionScale", Viewport.ResolutionScale.ToString()); writer.WriteAttributeString("OrthographicScale", Viewport.OrthographicScale.ToString()); - writer.WriteAttributeString("UseOrthographicProjection", Viewport.UseOrthographicProjection.ToString()); writer.WriteAttributeString("ViewFlags", ((ulong)Viewport.Task.View.Flags).ToString()); + writer.WriteAttributeString("DebugView", ((int)Viewport.Task.ViewMode).ToString()); + writer.WriteAttributeString("LayerMask", Viewport.Task.ViewLayersMask.Mask.ToString()); } /// public override void OnLayoutDeserialize(XmlElement node) { + if (!Editor.Options.Options.Viewport.UsePersistenceOverDefaults) + return; + if (bool.TryParse(node.GetAttribute("GridEnabled"), out bool value1)) Viewport.Grid.Enabled = value1; if (bool.TryParse(node.GetAttribute("ShowFpsCounter"), out value1)) Viewport.ShowFpsCounter = value1; if (bool.TryParse(node.GetAttribute("ShowNavigation"), out value1)) Viewport.ShowNavigation = value1; + if (bool.TryParse(node.GetAttribute("UseOrthographicProjection"), out value1)) + Viewport.UseOrthographicProjection = value1; if (float.TryParse(node.GetAttribute("NearPlane"), out float value2)) Viewport.NearPlane = value2; if (float.TryParse(node.GetAttribute("FarPlane"), out value2)) @@ -460,18 +469,28 @@ namespace FlaxEditor.Windows Viewport.FieldOfView = value2; if (float.TryParse(node.GetAttribute("MovementSpeed"), out value2)) Viewport.MovementSpeed = value2; + if (float.TryParse(node.GetAttribute("Brightness"), out value2)) + Viewport.Brightness = value2; + if (float.TryParse(node.GetAttribute("ResolutionScale"), out value2)) + Viewport.ResolutionScale = value2; if (float.TryParse(node.GetAttribute("ViewportIconsScale"), out value2)) ViewportIconsRenderer.Scale = value2; if (float.TryParse(node.GetAttribute("OrthographicScale"), out value2)) Viewport.OrthographicScale = value2; - if (bool.TryParse(node.GetAttribute("UseOrthographicProjection"), out value1)) - Viewport.UseOrthographicProjection = value1; if (ulong.TryParse(node.GetAttribute("ViewFlags"), out ulong value3)) Viewport.Task.ViewFlags = (ViewFlags)value3; - - // Reset view flags if opening with different engine version (ViewFlags enum could be modified) + if (int.TryParse(node.GetAttribute("DebugView"), out int value4)) + Viewport.Task.ViewMode = (ViewMode)value4; + if (uint.TryParse(node.GetAttribute("LayerMask"), out uint value5)) + Viewport.Task.ViewLayersMask = new LayersMask(value5); + + // Reset view flags and view mode if opening with different engine version + // (ViewFlags and ViewMode enums could be modified) if (Editor.LastProjectOpenedEngineBuild != Globals.EngineBuildNumber) + { Viewport.Task.ViewFlags = ViewFlags.DefaultEditor; + Viewport.Task.ViewMode = ViewMode.Default; + } } ///