Browse Source

Add product asset dependency handling to SC builder

sconel 4 years ago
parent
commit
4267c434b1

+ 1 - 0
Gems/ScriptCanvas/Code/Builder/ScriptCanvasBuilderWorker.h

@@ -59,6 +59,7 @@ namespace ScriptCanvasBuilder
         QuantumLeap,
         DependencyArguments,
         DependencyRequirementsData,
+        AddAssetDependencySearch,
         // add new entries above
         Current,
     };

+ 9 - 4
Gems/ScriptCanvas/Code/Builder/ScriptCanvasBuilderWorkerUtility.cpp

@@ -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();
     }

+ 3 - 3
Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Spawning/SpawnNodeable.cpp

@@ -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;
         }