diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/ReflectionProbeComponentController.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/ReflectionProbeComponentController.cpp index 8e94960f46..b2d842c82b 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/ReflectionProbeComponentController.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/ReflectionProbeComponentController.cpp @@ -149,22 +149,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()); } } @@ -201,6 +190,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; @@ -216,11 +217,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 a9bdc1c707..1015c2433c 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/ReflectionProbeComponentController.h +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ReflectionProbe/ReflectionProbeComponentController.h @@ -114,6 +114,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;