Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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();
            }
        }