|
|
|
|
@ -82,23 +82,35 @@ namespace ScriptCanvasBuilder
|
|
|
|
|
|
|
|
|
|
m_processEditorAssetDependencies.clear();
|
|
|
|
|
|
|
|
|
|
auto assetFilter = [this, &response](const AZ::Data::AssetFilterInfo& filterInfo)
|
|
|
|
|
AZStd::unordered_multimap<AZStd::string, AssetBuilderSDK::SourceFileDependency> jobDependenciesByKey;
|
|
|
|
|
|
|
|
|
|
auto assetFilter = [this, &jobDependenciesByKey](const AZ::Data::AssetFilterInfo& filterInfo)
|
|
|
|
|
{
|
|
|
|
|
// force load these before processing
|
|
|
|
|
if (filterInfo.m_assetType == azrtti_typeid<ScriptCanvas::SubgraphInterfaceAsset>()
|
|
|
|
|
|| filterInfo.m_assetType == azrtti_typeid<ScriptEvents::ScriptEventsAsset>())
|
|
|
|
|
|| filterInfo.m_assetType == azrtti_typeid<ScriptEvents::ScriptEventsAsset>())
|
|
|
|
|
{
|
|
|
|
|
this->m_processEditorAssetDependencies.push_back(filterInfo);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// these trigger re-processing
|
|
|
|
|
if (filterInfo.m_assetType == azrtti_typeid<ScriptCanvasEditor::ScriptCanvasAsset>()
|
|
|
|
|
|| filterInfo.m_assetType == azrtti_typeid<ScriptEvents::ScriptEventsAsset>()
|
|
|
|
|
|| filterInfo.m_assetType == azrtti_typeid<ScriptCanvas::SubgraphInterfaceAsset>())
|
|
|
|
|
if (filterInfo.m_assetType == azrtti_typeid<ScriptCanvasEditor::ScriptCanvasAsset>())
|
|
|
|
|
{
|
|
|
|
|
AZ_Error("ScriptCanvas", false, "ScriptAsset Reference in a graph detected");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (filterInfo.m_assetType == azrtti_typeid<ScriptEvents::ScriptEventsAsset>())
|
|
|
|
|
{
|
|
|
|
|
AssetBuilderSDK::SourceFileDependency dependency;
|
|
|
|
|
dependency.m_sourceFileDependencyUUID = filterInfo.m_assetId.m_guid;
|
|
|
|
|
jobDependenciesByKey.insert({ ScriptEvents::k_builderJobKey, dependency });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (filterInfo.m_assetType == azrtti_typeid<ScriptCanvas::SubgraphInterfaceAsset>())
|
|
|
|
|
{
|
|
|
|
|
AssetBuilderSDK::SourceFileDependency dependency;
|
|
|
|
|
dependency.m_sourceFileDependencyUUID = filterInfo.m_assetId.m_guid;
|
|
|
|
|
response.m_sourceFileDependencyList.push_back(dependency);
|
|
|
|
|
jobDependenciesByKey.insert({ s_scriptCanvasProcessJobKey, dependency });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Asset filter always returns false to prevent parsing dependencies, but makes note of the script canvas dependencies
|
|
|
|
|
@ -163,9 +175,10 @@ namespace ScriptCanvasBuilder
|
|
|
|
|
jobDescriptor.m_additionalFingerprintInfo = AZStd::string(GetFingerprintString()).append("|").append(AZStd::to_string(static_cast<AZ::u64>(fingerprint)));
|
|
|
|
|
|
|
|
|
|
// Graph process job needs to wait until its dependency asset job finished
|
|
|
|
|
for (const auto& processingDependency : response.m_sourceFileDependencyList)
|
|
|
|
|
for (const auto& processingDependency : jobDependenciesByKey)
|
|
|
|
|
{
|
|
|
|
|
jobDescriptor.m_jobDependencyList.emplace_back(s_scriptCanvasProcessJobKey, info.m_identifier.c_str(), AssetBuilderSDK::JobDependencyType::Order, processingDependency);
|
|
|
|
|
response.m_sourceFileDependencyList.push_back(processingDependency.second);
|
|
|
|
|
jobDescriptor.m_jobDependencyList.emplace_back(processingDependency.first, info.m_identifier.c_str(), AssetBuilderSDK::JobDependencyType::Order, processingDependency.second);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
response.m_createJobOutputs.push_back(jobDescriptor);
|
|
|
|
|
|