Code maintenance, improved OnCatalogLoaded logic and track additions and removals

Signed-off-by: lsemp3d <58790905+lsemp3d@users.noreply.github.com>
monroegm-disable-blank-issue-2
lsemp3d 4 years ago
parent ea04449fa0
commit c7c96d8baf

@ -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();
for (const AZ::Data::AssetId& assetId : translationAssets)
{
AZ::Data::AssetManager::Instance().GetAsset<TranslationAsset>(assetId, AZ::Data::AssetLoadBehavior::Default);
}
};
// 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)
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))
{
m_translationAssets.push_back(assetId);
translationAssets.push_back(assetId);
}
};
m_translationAssets.clear();
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;
};

Loading…
Cancel
Save