WuhuIslandTesting/Library/PackageCache/com.unity.scriptablebuildpipeline@1.21.5/Editor/Interfaces/IBuildContent.cs
2025-01-07 02:06:59 +01:00

93 lines
2.8 KiB
C#

using System;
using System.Collections.Generic;
using UnityEditor.Build.Content;
using UnityEditor.Build.Pipeline.Tasks;
namespace UnityEditor.Build.Pipeline.Interfaces
{
#if UNITY_2019_3_OR_NEWER
/// <summary>
/// Custom Content struct mapping a source asset to a processor to generate custom data for that asset.
/// </summary>
[Serializable]
public struct CustomContent : IEquatable<CustomContent>
{
/// <summary>
/// Input Asset for custom content
/// </summary>
public GUID Asset { get; set; }
/// <summary>
/// Processor function to run to convert the input asset to the custom content
/// </summary>
public Action<GUID, CalculateCustomDependencyData> Processor;
/// <summary>
/// IEquatable<CustomContent> Equals operator to handle generic collections
/// </summary>
/// <param name="other">Other CustomContent object to compare against.</param>
/// <returns></returns>
public bool Equals(CustomContent other)
{
return Asset == other.Asset && Processor == other.Processor;
}
}
/// <summary>
/// Base interface for storing the list of Custom Assets generated during the Scriptable Build Pipeline.
/// </summary>
public interface ICustomAssets : IContextObject
{
/// <summary>
/// List of Custom Assets to include.
/// </summary>
List<GUID> Assets { get; }
}
#endif
/// <summary>
/// Base interface for feeding Assets to the Scriptable Build Pipeline.
/// </summary>
public interface IBuildContent : IContextObject
{
/// <summary>
/// List of Assets to include.
/// </summary>
List<GUID> Assets { get; }
/// <summary>
/// List of Scenes to include.
/// </summary>
List<GUID> Scenes { get; }
#if UNITY_2019_3_OR_NEWER
/// <summary>
/// List of custom content to be included in asset bundles.
/// </summary>
List<CustomContent> CustomAssets { get; }
#endif
}
/// <summary>
/// Base interface for feeding Assets with explicit Asset Bundle layout to the Scriptable Build Pipeline.
/// </summary>
public interface IBundleBuildContent : IBuildContent
{
/// <summary>
/// Specific layout of asset bundles to assets or scenes.
/// </summary>
Dictionary<string, List<GUID>> BundleLayout { get; }
#if UNITY_2019_3_OR_NEWER
/// <summary>
/// Additional list of raw files to add to an asset bundle
/// </summary>
Dictionary<string, List<ResourceFile>> AdditionalFiles { get; }
#endif
/// <summary>
/// Custom loading identifiers to use for Assets or Scenes.
/// </summary>
Dictionary<GUID, string> Addresses { get; }
}
}