using UnityEditor.Build.Content;
using UnityEditor.Build.Pipeline.Utilities;
using UnityEngine;
namespace UnityEditor.Build.Pipeline.Interfaces
{
///
/// Base interface for wrapping the different low level WriteSerializeFile API around a common high level Write function
///
public interface IWriteOperation
{
///
/// The specific write command containing the details about what to write to disk.
///
///
WriteCommand Command { get; set; }
///
/// The specific usage data for objects in the write command.
///
///
BuildUsageTagSet UsageSet { get; set; }
///
/// The specific reference data for objects in the write command.
///
///
BuildReferenceMap ReferenceMap { get; set; }
///
/// The hash that represents the unique set of input dependencies for caching this write command.
///
Hash128 DependencyHash { get; set; }
///
/// Write function that wraps the low level WriteSerializeFile APIs that takes the common minimum set of parameters.
///
/// The location to write data to disk.
/// The build settings to use for writing data.
/// The global usage to use for writing data.
/// The write results struct containing details about what was written to disk
WriteResult Write(string outputFolder, BuildSettings settings, BuildUsageTagGlobal globalUsage);
///
/// Optimized hash function for use with the Build Cache system.
///
/// Unique hash for the contents of this write operation.
Hash128 GetHash128();
///
/// Optimized hash function for use with the Build Cache system.
///
/// The build log.
/// Unique hash for the contents of this write operation.
Hash128 GetHash128(IBuildLogger log);
}
}