diff --git a/Source/Editor/Surface/VisjectSurfaceWindow.cs b/Source/Editor/Surface/VisjectSurfaceWindow.cs
index 72d02f597..37092026c 100644
--- a/Source/Editor/Surface/VisjectSurfaceWindow.cs
+++ b/Source/Editor/Surface/VisjectSurfaceWindow.cs
@@ -604,7 +604,7 @@ namespace FlaxEditor.Surface
Parent = this
};
- Presenter = new CustomEditorPresenter(undo);
+ Presenter = new CustomEditorPresenter(undo, "Loading...");
Presenter.Panel.Parent = scrollPanel;
}
@@ -744,7 +744,7 @@ namespace FlaxEditor.Surface
}
else
{
- _propertiesEditor = new CustomEditorPresenter(_undo);
+ _propertiesEditor = new CustomEditorPresenter(_undo, "Loading...");
_propertiesEditor.Panel.Parent = _split2.Panel2;
}
_propertiesEditor.Modified += OnPropertyEdited;
@@ -896,6 +896,16 @@ namespace FlaxEditor.Surface
Close();
}
+ ///
+ /// Called when surface gets loaded and user can edit it.
+ ///
+ protected virtual void OnSurfaceEditingStart()
+ {
+ _undo.Clear();
+ _surface.Enabled = true;
+ _propertiesEditor.BuildLayout();
+ }
+
///
/// Loads the surface from the asset. Called during when asset is loaded and surface is missing.
///
@@ -939,10 +949,7 @@ namespace FlaxEditor.Surface
return;
}
- // Setup
- _undo.Clear();
- _surface.Enabled = true;
- _propertiesEditor.BuildLayout();
+ OnSurfaceEditingStart();
ClearEditedFlag();
if (_showWholeGraphOnLoad)
{
diff --git a/Source/Editor/Windows/Assets/AnimationGraphWindow.cs b/Source/Editor/Windows/Assets/AnimationGraphWindow.cs
index f4a2ef8b9..444baaaee 100644
--- a/Source/Editor/Windows/Assets/AnimationGraphWindow.cs
+++ b/Source/Editor/Windows/Assets/AnimationGraphWindow.cs
@@ -186,7 +186,6 @@ namespace FlaxEditor.Windows.Assets
// Asset properties proxy
_properties = new PropertiesProxy();
- _propertiesEditor.Select(_properties);
// Preview properties editor
_previewTab = new Tab("Preview");
@@ -322,22 +321,17 @@ namespace FlaxEditor.Windows.Assets
{
if (value == null)
{
- // Error
Editor.LogError("Failed to save animation graph surface");
return;
}
-
- // Save data to the temporary asset
if (_asset.SaveSurface(value))
{
- // Error
_surface.MarkAsEdited();
Editor.LogError("Failed to save animation graph surface data");
return;
}
_asset.Reload();
-
- // Reset any root motion
+ _asset.WaitForLoaded();
_preview.PreviewActor.ResetLocalTransform();
_previewTab.Presenter.BuildLayoutOnUpdate();
}
@@ -376,6 +370,14 @@ namespace FlaxEditor.Windows.Assets
return false;
}
+ ///
+ protected override void OnSurfaceEditingStart()
+ {
+ _propertiesEditor.Select(_properties);
+
+ base.OnSurfaceEditingStart();
+ }
+
///
protected override void PerformLayoutBeforeChildren()
{
diff --git a/Source/Editor/Windows/Assets/MaterialInstanceWindow.cs b/Source/Editor/Windows/Assets/MaterialInstanceWindow.cs
index c5becfe7d..e9862beab 100644
--- a/Source/Editor/Windows/Assets/MaterialInstanceWindow.cs
+++ b/Source/Editor/Windows/Assets/MaterialInstanceWindow.cs
@@ -229,7 +229,7 @@ namespace FlaxEditor.Windows.Assets
layout.Label("No parameters");
return;
}
- if (!materialInstance.IsLoaded || materialInstance.BaseMaterial && !materialInstance.BaseMaterial.IsLoaded)
+ if (!materialInstance.IsLoaded || (materialInstance.BaseMaterial && !materialInstance.BaseMaterial.IsLoaded))
{
layout.Label("Loading...");
return;
@@ -352,10 +352,9 @@ namespace FlaxEditor.Windows.Assets
};
// Material properties editor
- _editor = new CustomEditorPresenter(_undo);
+ _editor = new CustomEditorPresenter(_undo, "Loading...");
_editor.Panel.Parent = _split.Panel2;
_properties = new PropertiesProxy();
- _editor.Select(_properties);
_editor.Modified += OnMaterialPropertyEdited;
// Setup input actions
@@ -479,16 +478,11 @@ namespace FlaxEditor.Windows.Assets
///
public override void Update(float deltaTime)
{
- // Check if need to load
if (_isWaitingForLoad && _asset.IsLoaded && (_asset.BaseMaterial == null || _asset.BaseMaterial.IsLoaded))
{
- // Clear flag
_isWaitingForLoad = false;
-
- // Init material properties and parameters proxy
_properties.OnLoad(this);
-
- // Setup
+ _editor.Select(_properties);
ClearEditedFlag();
_undo.Clear();
_editor.BuildLayout();
diff --git a/Source/Editor/Windows/Assets/MaterialWindow.cs b/Source/Editor/Windows/Assets/MaterialWindow.cs
index 37dcc40ce..1b28512be 100644
--- a/Source/Editor/Windows/Assets/MaterialWindow.cs
+++ b/Source/Editor/Windows/Assets/MaterialWindow.cs
@@ -222,7 +222,6 @@ namespace FlaxEditor.Windows.Assets
// Asset properties proxy
_properties = new PropertiesProxy();
- _propertiesEditor.Select(_properties);
// Surface
_surface = new MaterialSurface(this, Save, _undo)
@@ -324,17 +323,14 @@ namespace FlaxEditor.Windows.Assets
get => _asset.LoadSurface(true);
set
{
- // Create material info
FillMaterialInfo(out var info);
-
- // Save data to the temporary material
if (_asset.SaveSurface(value, info))
{
- // Error
_surface.MarkAsEdited();
Editor.LogError("Failed to save material surface data");
}
_asset.Reload();
+ _asset.WaitForLoaded();
}
}
@@ -347,7 +343,6 @@ namespace FlaxEditor.Windows.Assets
// Load surface graph
if (_surface.Load())
{
- // Error
Editor.LogError("Failed to load material surface.");
return true;
}
@@ -362,6 +357,14 @@ namespace FlaxEditor.Windows.Assets
return false;
}
+ ///
+ protected override void OnSurfaceEditingStart()
+ {
+ _propertiesEditor.Select(_properties);
+
+ base.OnSurfaceEditingStart();
+ }
+
///
protected override bool CanEditSurfaceOnAssetLoadError => true;
diff --git a/Source/Editor/Windows/Assets/ParticleEmitterWindow.cs b/Source/Editor/Windows/Assets/ParticleEmitterWindow.cs
index 1968c5735..423c512f3 100644
--- a/Source/Editor/Windows/Assets/ParticleEmitterWindow.cs
+++ b/Source/Editor/Windows/Assets/ParticleEmitterWindow.cs
@@ -120,7 +120,6 @@ namespace FlaxEditor.Windows.Assets
// Asset properties proxy
_properties = new PropertiesProxy();
- _propertiesEditor.Select(_properties);
// Preview properties editor
_previewTab = new Tab("Preview");
@@ -217,14 +216,13 @@ namespace FlaxEditor.Windows.Assets
get => _asset.LoadSurface(true);
set
{
- // Save data to the temporary asset
if (_asset.SaveSurface(value))
{
- // Error
_surface.MarkAsEdited();
Editor.LogError("Failed to save Particle Emitter surface data");
}
_asset.Reload();
+ _asset.WaitForLoaded();
_preview.PreviewActor.ResetSimulation();
_previewTab.Presenter.BuildLayoutOnUpdate();
}
@@ -255,6 +253,14 @@ namespace FlaxEditor.Windows.Assets
return false;
}
+ ///
+ protected override void OnSurfaceEditingStart()
+ {
+ _propertiesEditor.Select(_properties);
+
+ base.OnSurfaceEditingStart();
+ }
+
///
protected override bool SaveToOriginal()
{