From 77b0d194c79ebe9887f350229e3ab6006d140ee4 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Mon, 20 Sep 2021 11:37:25 +0200 Subject: [PATCH] Fix for env probes baking in Editor --- .../Dedicated/EnvironmentProbeEditor.cs | 20 +++++++++++++++---- Source/Engine/Renderer/ProbesRenderer.cpp | 3 ++- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/Source/Editor/CustomEditors/Dedicated/EnvironmentProbeEditor.cs b/Source/Editor/CustomEditors/Dedicated/EnvironmentProbeEditor.cs index 5049f729f..6aa8a747a 100644 --- a/Source/Editor/CustomEditors/Dedicated/EnvironmentProbeEditor.cs +++ b/Source/Editor/CustomEditors/Dedicated/EnvironmentProbeEditor.cs @@ -11,6 +11,8 @@ namespace FlaxEditor.CustomEditors.Dedicated [CustomEditor(typeof(EnvironmentProbe)), DefaultEditor] public class EnvironmentProbeEditor : ActorEditor { + private FlaxEngine.GUI.Button _bake; + /// public override void Initialize(LayoutElementsContainer layout) { @@ -18,10 +20,20 @@ namespace FlaxEditor.CustomEditors.Dedicated if (Values.HasDifferentTypes == false) { - // Add 'Bake' button layout.Space(10); - var button = layout.Button("Bake"); - button.Button.Clicked += BakeButtonClicked; + _bake = layout.Button("Bake").Button; + _bake.Clicked += BakeButtonClicked; + } + } + + /// + public override void Refresh() + { + base.Refresh(); + + if (_bake != null) + { + _bake.Enabled = Values.Count != 0 && Values[0] is EnvironmentProbe probe && !probe.IsUsingCustomProbe; } } @@ -29,7 +41,7 @@ namespace FlaxEditor.CustomEditors.Dedicated { for (int i = 0; i < Values.Count; i++) { - if (Values[i] is EnvironmentProbe envProbe) + if (Values[i] is EnvironmentProbe envProbe && !envProbe.IsUsingCustomProbe) { envProbe.Bake(); Editor.Instance.Scene.MarkSceneEdited(envProbe.Scene); diff --git a/Source/Engine/Renderer/ProbesRenderer.cpp b/Source/Engine/Renderer/ProbesRenderer.cpp index 912b30bed..c6a0cdca7 100644 --- a/Source/Engine/Renderer/ProbesRenderer.cpp +++ b/Source/Engine/Renderer/ProbesRenderer.cpp @@ -151,7 +151,8 @@ Delegate ProbesRenderer::OnFinishBake; void ProbesRenderer::Bake(EnvironmentProbe* probe, float timeout) { - ASSERT(probe && dynamic_cast(probe)); + if (!probe || probe->IsUsingCustomProbe()) + return; // Check if already registered for bake for (int32 i = 0; i < _probesToBake.Count(); i++)