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;