From 506c5ec0a856bb8260619bddf7b46ba51de8d9a9 Mon Sep 17 00:00:00 2001 From: Chris Galvan Date: Wed, 16 Feb 2022 16:09:40 -0600 Subject: [PATCH] Fixed SetImageAssetPath API on image gradient Signed-off-by: Chris Galvan --- .../Components/ImageGradientComponent.cpp | 29 +++++++++++++++++-- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/Gems/GradientSignal/Code/Source/Components/ImageGradientComponent.cpp b/Gems/GradientSignal/Code/Source/Components/ImageGradientComponent.cpp index fe4c134ed2..bc39f0f440 100644 --- a/Gems/GradientSignal/Code/Source/Components/ImageGradientComponent.cpp +++ b/Gems/GradientSignal/Code/Source/Components/ImageGradientComponent.cpp @@ -191,6 +191,8 @@ namespace GradientSignal behaviorContext->EBus("ImageGradientRequestBus") ->Attribute(AZ::Script::Attributes::Category, "Vegetation") + ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Automation) + ->Attribute(AZ::Script::Attributes::Module, "vegetation") ->Event("GetImageAssetPath", &ImageGradientRequestBus::Events::GetImageAssetPath) ->Event("SetImageAssetPath", &ImageGradientRequestBus::Events::SetImageAssetPath) ->VirtualProperty("ImageAssetPath", "GetImageAssetPath", "SetImageAssetPath") @@ -378,9 +380,22 @@ namespace GradientSignal void ImageGradientComponent::SetImageAssetPath(const AZStd::string& assetPath) { AZ::Data::AssetId assetId; - AZ::Data::AssetCatalogRequestBus::BroadcastResult(assetId, &AZ::Data::AssetCatalogRequestBus::Events::GetAssetIdByPath, assetPath.c_str(), AZ::Data::s_invalidAssetType, false); - if (assetId.IsValid()) + AZ::Data::AssetCatalogRequestBus::BroadcastResult(assetId, &AZ::Data::AssetCatalogRequests::GetAssetIdByPath, assetPath.c_str(), AZ::Data::s_invalidAssetType, false); + if (assetId.IsValid() || assetPath.empty()) { + // If we were given a valid asset, then make sure it is the right type + if (assetId.IsValid()) + { + AZ::Data::AssetInfo assetInfo; + AZ::Data::AssetCatalogRequestBus::BroadcastResult(assetInfo, &AZ::Data::AssetCatalogRequests::GetAssetInfoById, assetId); + + if (assetInfo.m_assetType != azrtti_typeid()) + { + AZ_Warning("GradientSignal", false, "Asset type for %s is not AZ::RPI::StreamingImageAsset, will be ignored", assetPath.c_str()); + return; + } + } + AZ::Data::AssetBus::Handler::BusDisconnect(m_configuration.m_imageAsset.GetId()); { @@ -389,10 +404,18 @@ namespace GradientSignal // Clear our cached image data m_imageData = AZStd::span(); - m_configuration.m_imageAsset = AZ::Data::AssetManager::Instance().FindOrCreateAsset(assetId, azrtti_typeid(), m_configuration.m_imageAsset.GetAutoLoadBehavior()); + if (assetPath.empty()) + { + m_configuration.m_imageAsset.Reset(); + } + else + { + m_configuration.m_imageAsset = AZ::Data::AssetManager::Instance().FindOrCreateAsset(assetId, azrtti_typeid(), m_configuration.m_imageAsset.GetAutoLoadBehavior()); + } } SetupDependencies(); + m_configuration.m_imageAsset.QueueLoad(); AZ::Data::AssetBus::Handler::BusConnect(m_configuration.m_imageAsset.GetId()); LmbrCentral::DependencyNotificationBus::Event(GetEntityId(), &LmbrCentral::DependencyNotificationBus::Events::OnCompositionChanged); }