Exemple #1
0
        // Generates example data layout of 2 Prefabs both referencing the Mesh of an FBX
        // Each Prefab and Mesh is located in a separate bundle
        public static BuildDependencyInformation CreateAssetsWithFBXMeshReference(bool includeFbxInBundle)
        {
            var prefab1 = new GUID("00000000000000000000000000000001");
            var prefab2 = new GUID("00000000000000000000000000000002");
            var fbx     = new GUID("00000000000000000000000000000010");
            var fbxInfo = CreateFBXWithMesh(fbx);

            var buildInfo = new BuildDependencyInformation();

            buildInfo.assetLoadInfo.Add(prefab1, CreatePrefabWithReferences(prefab1, fbxInfo.includedObjects[5]));
            buildInfo.assetLoadInfo.Add(prefab2, CreatePrefabWithReferences(prefab2, fbxInfo.includedObjects[5]));
            if (includeFbxInBundle)
            {
                buildInfo.assetLoadInfo.Add(fbx, fbxInfo);
            }

            List <string> assetDependencies;

            buildInfo.assetToBundles.GetOrAdd(prefab1, out assetDependencies);
            assetDependencies.Add(prefab1.ToString());
            if (includeFbxInBundle)
            {
                assetDependencies.Add(fbx.ToString());
            }

            buildInfo.assetToBundles.GetOrAdd(prefab2, out assetDependencies);
            assetDependencies.Add(prefab2.ToString());
            if (includeFbxInBundle)
            {
                assetDependencies.Add(fbx.ToString());
            }

            if (includeFbxInBundle)
            {
                buildInfo.assetToBundles.GetOrAdd(fbx, out assetDependencies);
                assetDependencies.Add(fbx.ToString());
            }

            List <GUID> assetsInBundle;

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

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

            if (includeFbxInBundle)
            {
                buildInfo.bundleToAssets.GetOrAdd(fbx.ToString(), out assetsInBundle);
                assetsInBundle.Add(fbx);
            }

            return(buildInfo);
        }
Exemple #2
0
        // 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 BuildDependencyInformation 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 BuildDependencyInformation();

            buildInfo.assetLoadInfo.Add(prefab1, CreatePrefabWithReferences(prefab1, material1, shader));
            buildInfo.assetLoadInfo.Add(prefab2, CreatePrefabWithReferences(prefab2, material2, shader));
            buildInfo.assetLoadInfo.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);
        }
Exemple #3
0
        public static BuildPipelineCodes Build(BuildDependencyInformation buildInfo, out BuildCommandSet commandSet, bool useCache = false, BuildProgressTracker progressTracker = null)
        {
            commandSet = new BuildCommandSet();

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

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

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

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

            return(exitCode);
        }
Exemple #4
0
        public static BuildPipelineCodes Build(BuildSettings settings, BuildCompression compression, string outputFolder, BuildDependencyInformation buildInfo, BuildCommandSet commandSet, out BundleBuildResult result, bool useCache = false, BuildProgressTracker progressTracker = null)
        {
            result = new BundleBuildResult();

            // Write out resource files
            var commandSetWriter = new CommandSetWriter(useCache, progressTracker);
            var exitCode         = commandSetWriter.Convert(commandSet, settings, out result.bundleDetails);

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

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

            exitCode = resourceArchiver.Convert(result.bundleDetails, buildInfo.sceneResourceFiles, 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);
        }
        public static BuildPipelineCodes Build(BuildInput input, BuildSettings settings, out BuildDependencyInformation 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;
        }