private void GeneratePath(ListingAssets.AssetReferences asset) { try { string[] dirs = Path.GetDirectoryName(asset.asset).Split(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); string extension = Path.GetExtension(asset.asset); Folder folder = this.root; // Skip Assets folder. for (int i = 1; i < dirs.Length; i++) { folder = folder.GenerateFolder(dirs[i]); } folder.AddFile(asset.mainAssetIndex, asset.IDs, asset.subNames, asset.types, extension); } catch (Exception ex) { InternalNGDebug.LogException("Embedded asset \"" + asset.asset + "\" contains an error.", ex); } }
private void ReferenceAssets() { List <ListingAssets.AssetReferences> list = new List <ListingAssets.AssetReferences>(); foreach (Folder.File file in this.root.EachFileReferenced()) { if (file.isValid == false) { continue; } Object[] references; Object mainAsset; if (EmbedAssetsBrowserWindow.CheckEmbeddableFile(file, out references, out mainAsset) == false) { file.referenced = false; continue; } ListingAssets.AssetReferences newReference = new ListingAssets.AssetReferences() { asset = file.path, mainAssetIndex = -1, references = references }; list.Add(newReference); for (int i = 0; i < references.Length; i++) { if (references[i] == null) { continue; } if (AssetDatabase.IsMainAsset(references[i]) == true) { newReference.mainAssetIndex = i; } } // Manually embed the main asset, for simplification sake. if (newReference.mainAssetIndex == -1) { Array.Resize <Object>(ref newReference.references, newReference.references.Length + 1); newReference.mainAssetIndex = newReference.references.Length - 1; newReference.references[newReference.references.Length - 1] = mainAsset; } } try { Undo.RecordObject(this.serializedObject.targetObject, "Embed assets"); this.origin.assets = list.ToArray(); this.serializedObject.Update(); EditorUtility.SetDirty(this.serializedObject.targetObject); } catch (NullReferenceException) { this.Close(); } }