144 lines
5.4 KiB
C#
144 lines
5.4 KiB
C#
|
using System;
|
||
|
using System.Collections.Generic;
|
||
|
using UnityEditor.AddressableAssets.Build.BuildPipelineTasks;
|
||
|
using UnityEditor.AddressableAssets.Settings;
|
||
|
using UnityEditor.Build.Pipeline;
|
||
|
using UnityEditor.Build.Pipeline.Interfaces;
|
||
|
using UnityEngine;
|
||
|
|
||
|
namespace UnityEditor.AddressableAssets.Build
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// Contains information about the status of the build.
|
||
|
/// </summary>
|
||
|
public class AddressableAssetBuildResult : IDataBuilderResult
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// Duration of build, in seconds.
|
||
|
/// </summary>
|
||
|
public double Duration { get; set; }
|
||
|
|
||
|
/// <summary>
|
||
|
/// The number of addressable assets contained in the build.
|
||
|
/// </summary>
|
||
|
public int LocationCount { get; set; }
|
||
|
|
||
|
/// <summary>
|
||
|
/// Error that caused the build to fail.
|
||
|
/// </summary>
|
||
|
public string Error { get; set; }
|
||
|
|
||
|
/// <summary>
|
||
|
/// Path of runtime settings file
|
||
|
/// </summary>
|
||
|
public string OutputPath { get; set; }
|
||
|
|
||
|
/// <summary>
|
||
|
/// Registry of files created during the build
|
||
|
/// </summary>
|
||
|
public FileRegistry FileRegistry { get; set; }
|
||
|
|
||
|
/// <summary>
|
||
|
/// Helper method to create the desired result of a data builder. This should always be used to create the build result
|
||
|
/// with additional details added as needed. The Result.Duration should always be set at the end of the build
|
||
|
/// script in the non-error scenario.
|
||
|
/// </summary>
|
||
|
/// <param name="settingsPath">Path to the settings.json file (name may not always match that exactly) generated by this build</param>
|
||
|
/// <param name="locCount">Number of locations created by this build</param>
|
||
|
/// <param name="err">Error string if there were problems with the build. Defaults to empty</param>
|
||
|
/// <typeparam name="TResult">The actual build result created</typeparam>
|
||
|
/// <returns></returns>
|
||
|
public static TResult CreateResult<TResult>(string settingsPath, int locCount, string err = "") where TResult : IDataBuilderResult
|
||
|
{
|
||
|
var opResult = Activator.CreateInstance<TResult>();
|
||
|
opResult.OutputPath = settingsPath;
|
||
|
opResult.Duration = 0;
|
||
|
opResult.Error = err;
|
||
|
opResult.LocationCount = locCount;
|
||
|
return opResult;
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Helper method to create the desired result of a data builder. This should always be used to create the build result
|
||
|
/// with additional details added as needed. The Result.Duration should always be set at the end of the build
|
||
|
/// script in the non-error scenario. Other results should be set as available.
|
||
|
/// </summary>
|
||
|
/// <typeparam name="TResult"></typeparam>
|
||
|
/// <returns></returns>
|
||
|
public static TResult CreateResult<TResult>() where TResult : IDataBuilderResult
|
||
|
{
|
||
|
var opResult = Activator.CreateInstance<TResult>();
|
||
|
return opResult;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Build result for entering play mode in the editor.
|
||
|
/// </summary>
|
||
|
[Serializable]
|
||
|
public class AddressablesPlayModeBuildResult : AddressableAssetBuildResult
|
||
|
{
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Build result for building the Addressables content.
|
||
|
/// </summary>
|
||
|
public class AddressablesPlayerBuildResult : AddressableAssetBuildResult
|
||
|
{
|
||
|
internal List<BundleBuildResult> m_AssetBundleBuildResults = new List<BundleBuildResult>();
|
||
|
|
||
|
/// <summary>
|
||
|
/// Information about a bundle build results
|
||
|
/// </summary>
|
||
|
[System.Serializable]
|
||
|
public class BundleBuildResult
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// The file path of the bundle.
|
||
|
/// </summary>
|
||
|
public string FilePath;
|
||
|
/// <summary>
|
||
|
/// The internal AssetBundle name, this is not always the same as the file name.
|
||
|
/// </summary>
|
||
|
public string InternalBundleName;
|
||
|
/// <summary>
|
||
|
/// The Addressable Group that was responsible for generating a given AssetBundle
|
||
|
/// </summary>
|
||
|
public AddressableAssetGroup SourceAssetGroup;
|
||
|
/// <summary>
|
||
|
/// The calculated value used for security during cyclic redundancy checks
|
||
|
/// </summary>
|
||
|
public uint Crc;
|
||
|
/// <summary>
|
||
|
/// The asset hash of the assets included inside the AssetBundle
|
||
|
/// </summary>
|
||
|
public string Hash;
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// True if the build was doing an update to a previous build, else false.
|
||
|
/// </summary>
|
||
|
public bool IsUpdateContentBuild { get; internal set; }
|
||
|
|
||
|
/// <summary>
|
||
|
/// Build results for AssetBundles created during the build.
|
||
|
/// </summary>
|
||
|
public List<BundleBuildResult> AssetBundleBuildResults => m_AssetBundleBuildResults;
|
||
|
|
||
|
/// <summary>
|
||
|
/// File path to the generated remote catalog hash file.
|
||
|
/// </summary>
|
||
|
public string RemoteCatalogHashFilePath { get; internal set; }
|
||
|
|
||
|
/// <summary>
|
||
|
/// File path to the generated remote catalog json file.
|
||
|
/// </summary>
|
||
|
public string RemoteCatalogJsonFilePath { get; internal set; }
|
||
|
|
||
|
/// <summary>
|
||
|
/// File path to the generate content state file
|
||
|
/// </summary>
|
||
|
public string ContentStateFilePath { get; internal set; }
|
||
|
}
|
||
|
}
|