public static void ValidatePrefabBuilder(
NodeData node,
BuildTarget target,
IEnumerable <PerformGraph.AssetGroups> incoming,
Action noBuilderData,
Action failedToCreateBuilder,
Action <string> canNotCreatePrefab,
Action <AssetReference> canNotImportAsset
)
{
if (string.IsNullOrEmpty(node.InstanceData[target]))
{
noBuilderData();
}
var builder = PrefabBuilderUtility.CreatePrefabBuilder(node, target);
if (null == builder)
{
failedToCreateBuilder();
}
if (null != builder && null != incoming)
{
foreach (var ag in incoming)
{
foreach (var key in ag.assetGroups.Keys)
{
var assets = ag.assetGroups[key];
if (assets.Any())
{
bool isAllGoodAssets = true;
foreach (var a in assets)
{
if (string.IsNullOrEmpty(a.importFrom))
{
canNotImportAsset(a);
isAllGoodAssets = false;
}
}
if (isAllGoodAssets)
{
// do not call LoadAllAssets() unless all assets have importFrom
List <UnityEngine.Object> allAssets = LoadAllAssets(ag.assetGroups[key]);
if (string.IsNullOrEmpty(builder.CanCreatePrefab(key, allAssets)))
{
canNotCreatePrefab(key);
}
allAssets.ForEach(o => Resources.UnloadAsset(o));
}
}
}
}
}
}