From 09aba94da77edb3024658bc896390fcb745c7daf Mon Sep 17 00:00:00 2001 From: dmcdiar Date: Wed, 30 Jun 2021 00:40:30 -0700 Subject: [PATCH] Fixes for ReflectionProbe hot reloading Signed-off-by: dmcdiar --- .../ReflectionProbeComponentController.cpp | 34 +++++++++---------- .../ReflectionProbeComponentController.h | 1 + 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/ReflectionProbeComponentController.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/ReflectionProbeComponentController.cpp index ffa038cb5f..1e262e0ebf 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/ReflectionProbeComponentController.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/ReflectionProbeComponentController.cpp @@ -137,22 +137,11 @@ namespace AZ // load cubemap Data::Asset& cubeMapAsset = m_configuration.m_useBakedCubemap ? m_configuration.m_bakedCubeMapAsset : m_configuration.m_authoredCubeMapAsset; - Data::AssetBus::MultiHandler::BusConnect(cubeMapAsset.GetId()); - - const AZStd::string& relativePath = - m_configuration.m_useBakedCubemap ? m_configuration.m_bakedCubeMapRelativePath : m_configuration.m_authoredCubeMapAsset.GetHint(); if (cubeMapAsset.GetId().IsValid()) { - if (cubeMapAsset.IsReady()) - { - Data::Instance image = RPI::StreamingImage::FindOrCreate(cubeMapAsset); - m_featureProcessor->SetProbeCubeMap(m_handle, image, relativePath); - } - else - { - cubeMapAsset.QueueLoad(); - } + cubeMapAsset.QueueLoad(); + Data::AssetBus::MultiHandler::BusConnect(cubeMapAsset.GetId()); } } @@ -189,6 +178,18 @@ namespace AZ m_featureProcessor->SetProbeCubeMap(m_handle, image, relativePath); } + void ReflectionProbeComponentController::OnAssetReloaded(Data::Asset asset) + { + if (m_configuration.m_useBakedCubemap) + { + m_configuration.m_bakedCubeMapAsset = asset; + } + else + { + m_configuration.m_authoredCubeMapAsset = asset; + } + } + void ReflectionProbeComponentController::SetConfiguration(const ReflectionProbeComponentConfig& config) { m_configuration = config; @@ -204,11 +205,8 @@ namespace AZ Data::Asset& cubeMapAsset = m_configuration.m_useBakedCubemap ? m_configuration.m_bakedCubeMapAsset : m_configuration.m_authoredCubeMapAsset; - const AZStd::string& relativePath = - m_configuration.m_useBakedCubemap ? m_configuration.m_bakedCubeMapRelativePath : m_configuration.m_authoredCubeMapAsset.GetHint(); - - Data::Instance image = RPI::StreamingImage::FindOrCreate(cubeMapAsset); - m_featureProcessor->SetProbeCubeMap(m_handle, image, relativePath); + // this will invoke OnAssetReady() + Data::AssetBus::MultiHandler::BusConnect(cubeMapAsset.GetId()); } void ReflectionProbeComponentController::OnTransformChanged([[maybe_unused]] const AZ::Transform& local, const AZ::Transform& world) diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/ReflectionProbeComponentController.h b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/ReflectionProbeComponentController.h index 66e5eb47b0..f65a17abdf 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/ReflectionProbeComponentController.h +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/ReflectionProbeComponentController.h @@ -113,6 +113,7 @@ namespace AZ // Data::AssetBus overrides ... void OnAssetReady(Data::Asset asset) override; + void OnAssetReloaded(Data::Asset asset) override; // TransformNotificationBus overrides ... void OnTransformChanged(const AZ::Transform& local, const AZ::Transform& world) override;