Merge pull request #6465 from aws-lumberyard-dev/scripting/catalog_load

Code maintenance, improved OnCatalogLoaded logic and track additions …
This commit is contained in:
Luis Sempé
2021-12-22 09:50:57 -08:00
committed by GitHub
4 changed files with 30 additions and 40 deletions
+17 -31
View File
@@ -227,7 +227,6 @@ namespace GraphCanvas
AzFramework::AssetCatalogEventBus::Handler::BusDisconnect();
Styling::PseudoElementFactoryRequestBus::Handler::BusDisconnect();
GraphCanvasRequestBus::Handler::BusDisconnect();
AZ::Data::AssetBus::MultiHandler::BusDisconnect();
m_translationAssetWorker.Deactivate();
UnregisterAssetHandler();
@@ -369,26 +368,28 @@ namespace GraphCanvas
void GraphCanvasSystemComponent::OnCatalogLoaded(const char* /*catalogFile*/)
{
auto postEnumerateCb = [this]()
GraphCanvas::TranslationRequestBus::Broadcast(&GraphCanvas::TranslationRequests::Restore);
}
void GraphCanvasSystemComponent::OnCatalogAssetRemoved(const AZ::Data::AssetId& /*assetId*/, const AZ::Data::AssetInfo& assetInfo)
{
if (assetInfo.m_assetType == azrtti_typeid<TranslationAsset>())
{
PopulateTranslationDatabase();
};
GraphCanvas::TranslationRequestBus::Broadcast(&GraphCanvas::TranslationRequests::Restore);
}
}
// Find any TranslationAsset files that may have translation database key/values
AZ::Data::AssetCatalogRequests::AssetEnumerationCB collectAssetsCb = [this](const AZ::Data::AssetId assetId, const AZ::Data::AssetInfo& assetInfo)
{
if (AZ::StringFunc::EndsWith(assetInfo.m_relativePath, ".names", false))
{
m_translationAssets.push_back(assetId);
}
};
m_translationAssets.clear();
AZ::Data::AssetCatalogRequestBus::Broadcast(&AZ::Data::AssetCatalogRequestBus::Events::EnumerateAssets, nullptr, collectAssetsCb, postEnumerateCb);
void GraphCanvasSystemComponent::OnCatalogAssetAdded(const AZ::Data::AssetId& assetId)
{
ReloadDatabase(assetId);
}
void GraphCanvasSystemComponent::OnCatalogAssetChanged(const AZ::Data::AssetId& assetId)
{
ReloadDatabase(assetId);
}
void GraphCanvasSystemComponent::ReloadDatabase(const AZ::Data::AssetId& assetId)
{
AZ::Data::AssetInfo assetInfo;
AZ::Data::AssetCatalogRequestBus::BroadcastResult(assetInfo, &AZ::Data::AssetCatalogRequestBus::Events::GetAssetInfoById, assetId);
@@ -405,20 +406,5 @@ namespace GraphCanvas
AZ::Data::AssetManager::Instance().UnregisterHandler(m_assetHandler.get());
m_assetHandler.reset();
}
for (const AZ::Data::AssetId& assetId : m_translationAssets)
{
AZ::Data::AssetBus::MultiHandler::BusDisconnect(assetId);
}
m_translationAssets.clear();
}
void GraphCanvasSystemComponent::PopulateTranslationDatabase()
{
for (const AZ::Data::AssetId& assetId : m_translationAssets)
{
AZ::Data::AssetBus::MultiHandler::BusConnect(assetId);
AZ::Data::AssetManager::Instance().GetAsset<TranslationAsset>(assetId, AZ::Data::AssetLoadBehavior::Default);
}
}
}
+4 -3
View File
@@ -25,7 +25,6 @@ namespace GraphCanvas
, private GraphCanvasRequestBus::Handler
, protected Styling::PseudoElementFactoryRequestBus::Handler
, protected AzFramework::AssetCatalogEventBus::Handler
, protected AZ::Data::AssetBus::MultiHandler
{
public:
@@ -80,15 +79,17 @@ namespace GraphCanvas
// AzFramework::AssetCatalogEventBus::Handler
void OnCatalogLoaded(const char* /*catalogFile*/) override;
void OnCatalogAssetChanged(const AZ::Data::AssetId&) override;
void OnCatalogAssetAdded(const AZ::Data::AssetId&) override;
void OnCatalogAssetRemoved(const AZ::Data::AssetId& /*assetId*/, const AZ::Data::AssetInfo& /*assetInfo*/) override;
////
void ReloadDatabase(const AZ::Data::AssetId&);
AZStd::unique_ptr<TranslationAssetHandler> m_assetHandler;
void RegisterTranslationBuilder();
void UnregisterAssetHandler();
TranslationAssetWorker m_translationAssetWorker;
AZStd::vector<AZ::Data::AssetId> m_translationAssets;
void PopulateTranslationDatabase();
TranslationDatabase m_translationDatabase;
};
@@ -163,9 +163,11 @@ namespace GraphCanvas
}
else
{
AZStd::string warning = AZStd::string::format("Unable to store key: %s with value: %s because that key already exists with value: %s", entry.first.c_str(), entry.second.c_str(), m_database[entry.first].c_str());
AZ_Warning("TranslationSerializer", false, warning.c_str());
warnings = true;
const bool valueMatches = entry.second == m_database[entry.first];
AZ_Warning("TranslationDatabase", valueMatches,
R"(Unable to store key: "%s" with value: "%s" because that key already exists with value: "%s")",
entry.first.c_str(), entry.second.c_str(), m_database[entry.first].c_str());
warnings = !valueMatches;
}
}
@@ -24,11 +24,12 @@ namespace GraphCanvas
}
else
{
const AZStd::string& existingValue = translationDbItr->second;
[[maybe_unused]] const AZStd::string& existingValue = translationDbItr->second;
// There is a name collision
const AZStd::string error = AZStd::string::format("Unable to store key: %s with value: %s because that key already exists with value: %s (proposed: %s)", baseKey.c_str(), it.GetString(), existingValue.c_str(), it.GetString());
AZ_Error("TranslationSerializer", false, error.c_str());
AZ_Error("TranslationSerializer", existingValue == it.GetString(),
R"(Unable to store key: "%s" with value: "%s" because that key already exists with value: "%s" (proposed: "%s"))",
baseKey.c_str(), it.GetString(), existingValue.c_str(), it.GetString());
}
}
else if (it.IsObject())