From 7359772ea00edfc53cb9af10a072478acd03b244 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 2 Oct 2025 20:32:27 +0000 Subject: [PATCH 1/4] Initial plan From 9938d08a66b422c0ae6a617f415a31f2f3b765dd Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 2 Oct 2025 20:38:18 +0000 Subject: [PATCH 2/4] Fix duplicate resolution deserialization in CReflectionProbe Co-authored-by: adriengivry <33324216+adriengivry@users.noreply.github.com> --- .../OvCore/ECS/Components/CReflectionProbe.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/Sources/Overload/OvCore/src/OvCore/ECS/Components/CReflectionProbe.cpp b/Sources/Overload/OvCore/src/OvCore/ECS/Components/CReflectionProbe.cpp index d3c885a4..1b105d61 100644 --- a/Sources/Overload/OvCore/src/OvCore/ECS/Components/CReflectionProbe.cpp +++ b/Sources/Overload/OvCore/src/OvCore/ECS/Components/CReflectionProbe.cpp @@ -198,11 +198,8 @@ void OvCore::ECS::Components::CReflectionProbe::OnDeserialize(tinyxml2::XMLDocum { using namespace OvCore::Helpers; - // Not ideal, but avoids garbage value from overriding the current resolution. - if (p_node->FirstChildElement("resolution")) - { - m_resolution = Serializer::DeserializeInt(p_doc, p_node, "resolution"); - } + const uint32_t previousResolution = m_resolution; + const ECaptureSpeed previousCaptureSpeed = m_captureSpeed; Serializer::DeserializeUint32(p_doc, p_node, "refresh_mode", reinterpret_cast(m_refreshMode)); Serializer::DeserializeUint32(p_doc, p_node, "capture_speed", reinterpret_cast(m_captureSpeed)); @@ -214,6 +211,15 @@ void OvCore::ECS::Components::CReflectionProbe::OnDeserialize(tinyxml2::XMLDocum Serializer::DeserializeBoolean(p_doc, p_node, "box_projection", m_boxProjection); m_captureFaceIndex = 0; + + // Reallocate resources if resolution or double buffering requirements changed + const bool resolutionChanged = m_resolution != previousResolution; + const bool doubleBufferingChanged = RequiresDoubleBuffering(m_captureSpeed) != RequiresDoubleBuffering(previousCaptureSpeed); + + if (resolutionChanged || doubleBufferingChanged) + { + _AllocateResources(); + } } void OvCore::ECS::Components::CReflectionProbe::OnInspector(OvUI::Internal::WidgetContainer& p_root) From 5a0e7dc935882c76388552d859ff0f8b4724022f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 2 Oct 2025 20:39:57 +0000 Subject: [PATCH 3/4] Add resolution validation and fix assertion bug in CReflectionProbe Co-authored-by: adriengivry <33324216+adriengivry@users.noreply.github.com> --- .../OvCore/src/OvCore/ECS/Components/CReflectionProbe.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Sources/Overload/OvCore/src/OvCore/ECS/Components/CReflectionProbe.cpp b/Sources/Overload/OvCore/src/OvCore/ECS/Components/CReflectionProbe.cpp index 1b105d61..0b6c2cd7 100644 --- a/Sources/Overload/OvCore/src/OvCore/ECS/Components/CReflectionProbe.cpp +++ b/Sources/Overload/OvCore/src/OvCore/ECS/Components/CReflectionProbe.cpp @@ -110,7 +110,7 @@ float OvCore::ECS::Components::CReflectionProbe::GetBrightness() const void OvCore::ECS::Components::CReflectionProbe::SetCubemapResolution(uint32_t p_resolution) { OVASSERT(p_resolution > 0, "Cubemap resolution must be greater than 0"); - OVASSERT((p_resolution & (p_resolution - 1)) == 0 > 0, "Cubemap resolution must be a power of 2"); + OVASSERT((p_resolution & (p_resolution - 1)) == 0, "Cubemap resolution must be a power of 2"); if (p_resolution != m_resolution) { @@ -212,6 +212,12 @@ void OvCore::ECS::Components::CReflectionProbe::OnDeserialize(tinyxml2::XMLDocum m_captureFaceIndex = 0; + // Validate resolution (must be power of 2) + if (m_resolution == 0 || (m_resolution & (m_resolution - 1)) != 0) + { + m_resolution = previousResolution; // Restore previous valid value + } + // Reallocate resources if resolution or double buffering requirements changed const bool resolutionChanged = m_resolution != previousResolution; const bool doubleBufferingChanged = RequiresDoubleBuffering(m_captureSpeed) != RequiresDoubleBuffering(previousCaptureSpeed); From 487c72d808940591d528385c7812fff78dfe1483 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 2 Oct 2025 20:40:59 +0000 Subject: [PATCH 4/4] Fix typo in AddDefaultAtmosphere actor name Co-authored-by: adriengivry <33324216+adriengivry@users.noreply.github.com> --- Sources/Overload/OvCore/src/OvCore/SceneSystem/Scene.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/Overload/OvCore/src/OvCore/SceneSystem/Scene.cpp b/Sources/Overload/OvCore/src/OvCore/SceneSystem/Scene.cpp index 2d1eb0c9..281ba68b 100644 --- a/Sources/Overload/OvCore/src/OvCore/SceneSystem/Scene.cpp +++ b/Sources/Overload/OvCore/src/OvCore/SceneSystem/Scene.cpp @@ -85,7 +85,7 @@ void OvCore::SceneSystem::Scene::AddDefaultSkysphere() void OvCore::SceneSystem::Scene::AddDefaultAtmosphere() { - auto& atmosphere = CreateActor("Atmoshpere"); + auto& atmosphere = CreateActor("Atmosphere"); auto& materialRenderer = atmosphere.AddComponent(); auto& modelRenderer = atmosphere.AddComponent(); modelRenderer.SetFrustumBehaviour(ECS::Components::CModelRenderer::EFrustumBehaviour::DISABLED);