Merge pull request #6465 from aws-lumberyard-dev/scripting/catalog_load
Code maintenance, improved OnCatalogLoaded logic and track additions …
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user