Пример #1
0
        protected static void GenerateNUSpecFiles(BuildDependencyInfo dependencyInfo, OptionValues optionValues)
        {
            foreach (var project in dependencyInfo.FullProjectDependencyGraph.Vertices)
            {
                StringBuilder dependenciesBuilder = new StringBuilder();
                if (false == optionValues.NUSpecWithoutDeps)
                {
                    var edges = dependencyInfo.FullProjectDependencyGraph.Edges.Where(x => x.Target == project);
                    foreach (var edge in edges)
                    {
                        dependenciesBuilder.AppendFormat("        <dependency id=\"{0}\" version=\"\" />\n",
                                                         edge.Source.Name
                                                         //edge.Target.ver
                                                         );
                    }
                }
                var data = String.Format(@"<?xml version=""1.0""?>
<package >
  <metadata>
    <id>{0}</id>
    <version>$version$</version>
    <title>{0}</title>
    <authors>Unknown</authors>
    <description>Built from {1}</description>
    <dependencies>
{2}
    </dependencies>

  </metadata>
</package>
",
                                         project.Name,
                                         project.Path,
                                         dependenciesBuilder.ToString());

                var fileName = NUSpecFileName(project);
                _logger.InfoFormat("Generating file: {0} for project {1}", fileName, project.Name);
                File.WriteAllText(fileName, data);
            }
        }
        // Generates example data layout of 3 Prefabs referencing 2 materials with 1 shader
        // Each Prefab and Mesh is located in a separate bundle
        public static BuildDependencyInfo CreateAssetsWithMaterialReference()
        {
            var prefab1   = new GUID("00000000000000000000000000000001");
            var prefab2   = new GUID("00000000000000000000000000000002");
            var prefab3   = new GUID("00000000000000000000000000000003");
            var material1 = ConstructObjectIdentifier(new GUID("00000000000000000000000000000010"), 2100000, FileType.MetaAssetType, "");                       // Material
            var material2 = ConstructObjectIdentifier(new GUID("00000000000000000000000000000020"), 2100000, FileType.MetaAssetType, "");                       // Material
            var shader    = ConstructObjectIdentifier(new GUID("00000000000000000000000000000100"), 6, FileType.NonAssetType, "resources/unity_builtin_extra"); // Shader

            var buildInfo = new BuildDependencyInfo();

            buildInfo.assetInfo.Add(prefab1, CreatePrefabWithReferences(prefab1, material1, shader));
            buildInfo.assetInfo.Add(prefab2, CreatePrefabWithReferences(prefab2, material2, shader));
            buildInfo.assetInfo.Add(prefab3, CreatePrefabWithReferences(prefab3, material1, shader));

            List <string> assetDependencies;

            buildInfo.assetToBundles.GetOrAdd(prefab1, out assetDependencies);
            assetDependencies.Add(prefab1.ToString());

            buildInfo.assetToBundles.GetOrAdd(prefab2, out assetDependencies);
            assetDependencies.Add(prefab2.ToString());

            buildInfo.assetToBundles.GetOrAdd(prefab3, out assetDependencies);
            assetDependencies.Add(prefab3.ToString());

            List <GUID> assetsInBundle;

            buildInfo.bundleToAssets.GetOrAdd(prefab1.ToString(), out assetsInBundle);
            assetsInBundle.Add(prefab1);

            buildInfo.bundleToAssets.GetOrAdd(prefab2.ToString(), out assetsInBundle);
            assetsInBundle.Add(prefab2);

            buildInfo.bundleToAssets.GetOrAdd(prefab3.ToString(), out assetsInBundle);
            assetsInBundle.Add(prefab3);

            return(buildInfo);
        }
Пример #3
0
        public static BuildPipelineCodes Build(BuildDependencyInfo buildInfo, out BuildWriteInfo writeInfo, bool useCache = false, BuildProgressTracker progressTracker = null)
        {
            writeInfo = new BuildWriteInfo();

            // Strip out sprite source textures if nothing references them directly
            var spriteSourceProcessor = new SpriteSourceProcessor(useCache, progressTracker);
            var exitCode = spriteSourceProcessor.Convert(buildInfo.assetInfo, out buildInfo.assetInfo);

            if (exitCode < BuildPipelineCodes.Success)
            {
                return(exitCode);
            }

            // Generate the commandSet from the calculated dependency information
            var commandSetProcessor = new BuildWriteProcessor(useCache, progressTracker);

            exitCode = commandSetProcessor.Convert(buildInfo, out writeInfo);
            if (exitCode < BuildPipelineCodes.Success)
            {
                return(exitCode);
            }

            return(exitCode);
        }
        public static BuildPipelineCodes Build(BuildSettings settings, BuildCompression compression, string outputFolder, BuildDependencyInfo buildInfo, BuildWriteInfo writeInfo, out BuildResultInfo result, bool useCache = false, BuildProgressTracker progressTracker = null)
        {
            result = new BuildResultInfo();

            // Write out resource files
            var commandSetWriter = new BuildWriteWriter(useCache, progressTracker);
            var exitCode         = commandSetWriter.Convert(writeInfo, settings, buildInfo.buildGlobalUsage, out result);

            if (exitCode < BuildPipelineCodes.Success)
            {
                return(exitCode);
            }

            // Archive and compress resource files
            var resourceArchiver = new ResourceFileArchiver(useCache, progressTracker);

            exitCode = resourceArchiver.Convert(result, compression, outputFolder, out result.bundleCRCs);
            if (exitCode < BuildPipelineCodes.Success)
            {
                return(exitCode);
            }

            // Generate Unity5 compatible manifest files
            //string[] manifestfiles;
            //var manifestWriter = new Unity5ManifestWriter(useCache, true);
            //if (!manifestWriter.Convert(commandSet, output, crc, outputFolder, out manifestfiles))
            //    return false;

            return(exitCode);
        }
Пример #5
0
        public static BuildPipelineCodes Build(BuildInput input, BuildSettings settings, out BuildDependencyInfo buildInfo, bool useCache = false, BuildProgressTracker progressTracker = null)
        {
            buildInfo = null;

            // Rebuild sprite atlas cache for correct dependency calculation & writing
            var spriteCacher = new SpriteAtlasCacher(useCache, progressTracker);
            var exitCode     = spriteCacher.Convert(settings.target);

            if (exitCode < BuildPipelineCodes.Success)
            {
                return(exitCode);
            }

            // Generate dependency information for all assets in BuildInput
            var buildInputDependency = new BuildInputDependency(useCache, progressTracker);

            exitCode = buildInputDependency.Convert(input, settings, out buildInfo);
            if (exitCode < BuildPipelineCodes.Success)
            {
                return(exitCode);
            }

            return(exitCode);
        }
Пример #6
0
 protected static void GenerateMSBuildFiles(BuildDependencyInfo dependencyInfo, bool singleFile)
 {
     GenerateMSBuildProjFiles(dependencyInfo, singleFile);
 }