public void Run(BuildTarget target,
NodeData node,
ConnectionPointData inputPoint,
ConnectionData connectionToOutput,
Dictionary<string, List<Asset>> inputGroupAssets,
List<string> alreadyCached,
Action<ConnectionData, Dictionary<string, List<Asset>>, List<string>> Output)
{
var builder = PrefabBuilderUtility.CreatePrefabBuilder(node, target);
UnityEngine.Assertions.Assert.IsNotNull(builder);
var prefabOutputDir = FileUtility.EnsurePrefabBuilderCacheDirExists(target, node);
Dictionary<string, List<Asset>> output = new Dictionary<string, List<Asset>>();
foreach(var key in inputGroupAssets.Keys) {
var allAssets = LoadAllAssets(inputGroupAssets[key]);
var prefabFileName = builder.CanCreatePrefab(key, allAssets);
UnityEngine.GameObject obj = builder.CreatePrefab(key, allAssets);
if(obj == null) {
throw new AssetBundleGraphException(string.Format("{0} :PrefabBuilder {1} returned null in CreatePrefab() [groupKey:{2}]",
node.Name, builder.GetType().FullName, key));
}
var prefabSavePath = FileUtility.PathCombine(prefabOutputDir, prefabFileName + ".prefab");
PrefabUtility.CreatePrefab(prefabSavePath, obj, ReplacePrefabOptions.Default);
output[key] = new List<Asset> () {
Asset.CreateAssetWithImportPath(prefabSavePath)
};
GameObject.DestroyImmediate(obj);
}
Output(connectionToOutput, output, null);
}