Fixes for ReflectionProbe hot reloading

Signed-off-by: dmcdiar <dmcdiar@amazon.com>
This commit is contained in:
dmcdiar
2021-06-30 00:40:30 -07:00
parent 48c5854666
commit 09aba94da7
2 changed files with 17 additions and 18 deletions
@@ -137,22 +137,11 @@ namespace AZ
// load cubemap
Data::Asset<RPI::StreamingImageAsset>& 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<RPI::Image> 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<Data::AssetData> 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<RPI::StreamingImageAsset>& 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<RPI::Image> 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)
@@ -113,6 +113,7 @@ namespace AZ
// Data::AssetBus overrides ...
void OnAssetReady(Data::Asset<Data::AssetData> asset) override;
void OnAssetReloaded(Data::Asset<Data::AssetData> asset) override;
// TransformNotificationBus overrides ...
void OnTransformChanged(const AZ::Transform& local, const AZ::Transform& world) override;