Code maintenance, improved OnCatalogLoaded logic and track additions and removals
Signed-off-by: lsemp3d <58790905+lsemp3d@users.noreply.github.com>
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,46 @@ namespace GraphCanvas
|
||||
|
||||
void GraphCanvasSystemComponent::OnCatalogLoaded(const char* /*catalogFile*/)
|
||||
{
|
||||
auto postEnumerateCb = [this]()
|
||||
AZStd::vector<AZ::Data::AssetId> translationAssets;
|
||||
auto postEnumerateCb = [&translationAssets]()
|
||||
{
|
||||
PopulateTranslationDatabase();
|
||||
};
|
||||
|
||||
// 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))
|
||||
for (const AZ::Data::AssetId& assetId : translationAssets)
|
||||
{
|
||||
m_translationAssets.push_back(assetId);
|
||||
AZ::Data::AssetManager::Instance().GetAsset<TranslationAsset>(assetId, AZ::Data::AssetLoadBehavior::Default);
|
||||
}
|
||||
};
|
||||
|
||||
m_translationAssets.clear();
|
||||
// Find any TranslationAsset files that may have translation database key/values
|
||||
AZ::Data::AssetCatalogRequests::AssetEnumerationCB collectAssetsCb = [&translationAssets](const AZ::Data::AssetId assetId, const AZ::Data::AssetInfo& assetInfo)
|
||||
{
|
||||
if (AZ::StringFunc::EndsWith(assetInfo.m_relativePath, ".names", false))
|
||||
{
|
||||
translationAssets.push_back(assetId);
|
||||
}
|
||||
};
|
||||
|
||||
AZ::Data::AssetCatalogRequestBus::Broadcast(&AZ::Data::AssetCatalogRequestBus::Events::EnumerateAssets, nullptr, collectAssetsCb, postEnumerateCb);
|
||||
}
|
||||
|
||||
void GraphCanvasSystemComponent::OnCatalogAssetRemoved(const AZ::Data::AssetId& /*assetId*/, const AZ::Data::AssetInfo& assetInfo)
|
||||
{
|
||||
if (assetInfo.m_assetType == azrtti_typeid<TranslationAsset>())
|
||||
{
|
||||
GraphCanvas::TranslationRequestBus::Broadcast(&GraphCanvas::TranslationRequests::Restore);
|
||||
}
|
||||
}
|
||||
|
||||
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 +424,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;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user