Add product asset dependency handling to SC builder

This commit is contained in:
sconel
2021-05-28 10:48:22 -07:00
parent cb62322f0d
commit 4267c434b1
3 changed files with 13 additions and 7 deletions
@@ -59,6 +59,7 @@ namespace ScriptCanvasBuilder
QuantumLeap,
DependencyArguments,
DependencyRequirementsData,
AddAssetDependencySearch,
// add new entries above
Current,
};
@@ -681,6 +681,15 @@ namespace ScriptCanvasBuilder
}
AssetBuilderSDK::JobProduct jobProduct;
// Scan our runtime input for any asset references
// Store them as product dependencies
AssetBuilderSDK::OutputObject(&runtimeData.m_input,
azrtti_typeid<decltype(runtimeData.m_input)>(),
input.runtimeScriptCanvasOutputPath,
azrtti_typeid<ScriptCanvas::RuntimeAsset>(),
AZ_CRC("RuntimeData", 0x163310ae), jobProduct);
jobProduct.m_dependencies.push_back({ runtimeData.m_script.GetId(), {} });
for (const auto& assetDependency : runtimeData.m_requiredAssets)
@@ -712,10 +721,6 @@ namespace ScriptCanvasBuilder
}
}
jobProduct.m_dependenciesHandled = true;
jobProduct.m_productFileName = input.runtimeScriptCanvasOutputPath;
jobProduct.m_productAssetType = azrtti_typeid<ScriptCanvas::RuntimeAsset>();
jobProduct.m_productSubID = AZ_CRC("RuntimeData", 0x163310ae);
input.response->m_outputProducts.push_back(AZStd::move(jobProduct));
return AZ::Success();
}
@@ -89,18 +89,18 @@ namespace ScriptCanvas::Nodeables::Spawning
rootAssetId.m_subId = rootSubId;
m_spawnableAsset = AZ::Data::AssetManager::Instance().
FindOrCreateAsset<AzFramework::Spawnable>(rootAssetId, AZ::Data::AssetLoadBehavior::PreLoad);
FindOrCreateAsset<AzFramework::Spawnable>(rootAssetId, AZ::Data::AssetLoadBehavior::Default);
}
else
{
m_spawnableAsset.SetAutoLoadBehavior(AZ::Data::AssetLoadBehavior::PreLoad);
m_spawnableAsset.SetAutoLoadBehavior(AZ::Data::AssetLoadBehavior::Default);
}
}
}
void SpawnNodeable::RequestSpawn(Data::Vector3Type translation, Data::Vector3Type rotation, Data::NumberType scale)
{
if (!m_spawnableAsset.IsReady())
if (m_spawnableAsset.GetAutoLoadBehavior() == AZ::Data::AssetLoadBehavior::NoLoad)
{
return;
}