Beispiel #1
0
        internal static AssemblyDefinition CreateAssemblyFolder(string parentFolder, string folderName, string packageName, bool testFolder, bool editor, List <string> references)
        {
            string             name   = packageName + "." + folderName + (testFolder ? ".Tests" : "");
            string             folder = AssetDatabaseUtilities.CreateFolder(parentFolder, folderName);
            AssemblyDefinition def    = new AssemblyDefinition();

            def.name = name;

            if (editor)
            {
                def.includePlatforms.Add("Editor");
            }


            if (references != null)
            {
                def.references.AddRange(references);
            }

            if (testFolder)
            {
                def.optionalUnityReferences.Add("TestAssemblies");
            }

            AssetDatabaseUtilities.CreateJSONFile(def, folder, def.name + Paths.AssemblyDefinitionExtension);

            return(def);
        }
Beispiel #2
0
        internal static void CreatePackage(PackageManifest manifest)
        {   
            manifest.OnBeforeSerialize();

            try
            {
                AssetDatabase.StartAssetEditing();
                string PackageFolderName = manifest.package_name;
                string packageFolder = AssetDatabaseUtilities.CreateFolder(AssetDatabaseUtilities.GetRelativeToProjectRoot(Paths.PackagesFolder), PackageFolderName);


                AssemblyDefinition runtime = AssetDatabaseUtilities.CreateAssemblyFolder(packageFolder, Paths.RuntimeFolder, manifest.name, false, false, null);
                AssemblyDefinition editor = AssetDatabaseUtilities.CreateAssemblyFolder(packageFolder, Paths.EditorFolder, manifest.name, false, true, new List<string>{ runtime.name });

                string testFolder = AssetDatabaseUtilities.CreateFolder(packageFolder, Paths.TestFolder);


                AssemblyDefinition runtimeTests = AssetDatabaseUtilities.CreateAssemblyFolder(testFolder, Paths.RuntimeFolder, manifest.name, true, false, new List<string> { runtime.name });
                AssetDatabaseUtilities.CreateAssemblyFolder(testFolder, Paths.EditorFolder, manifest.name, true, true, new List<string> { runtime.name, editor.name });


                AssetDatabaseUtilities.CreateJSONFile(manifest, packageFolder, Paths.PackageManifest);
                AssetDatabaseUtilities.CreateTextFile(CreateReadme(manifest), packageFolder, Paths.Readme);
                AssetDatabaseUtilities.CreateTextFile(CreateLicense(manifest), packageFolder, Paths.License);
                AssetDatabaseUtilities.CreateTextFile(CreateChangelog(manifest), packageFolder, Paths.Changelog);

            }
            finally
            {
                AssetDatabase.StopAssetEditing();
                AssetDatabaseUtilities.UpdateAssetDatabase();
            }

            
        }
        internal static AssemblyDefinition CreateAssemblyFolder(string parentFolder, string folderName, string packageName, bool testFolder, bool editor, List <string> references)
        {
            string             name   = packageName + "." + folderName + (testFolder ? ".Tests" : "");
            string             folder = AssetDatabaseUtilities.CreateFolder(parentFolder, folderName);
            AssemblyDefinition def    = new AssemblyDefinition();

            def.name = name;

            if (editor)
            {
                def.includePlatforms.Add("Editor");
            }


            if (references != null)
            {
                def.references.AddRange(references);
            }

            if (testFolder)
            {
                def.optionalUnityReferences.Add("TestAssemblies");
            }


            AssetDatabaseUtilities.CreateJSONFile(def, folder, def.name + Paths.AssemblyDefinitionExtension);

            string AssemblyDefinition = @"
using System.Reflection;

[assembly: AssemblyTitle(""" + def.name + @""")]
[assembly: AssemblyProduct(""" + packageName + @""")]
";

            AssetDatabaseUtilities.CreateTextFile(AssemblyDefinition, folder, "AssemblyInfo.cs");


            return(def);
        }