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

32 lines
1.2 KiB
C#

#if UNITY_2022_2_OR_NEWER
using System;
using UnityEditor;
using UnityEditor.Build.Content;
using UnityEditor.Build.Pipeline;
using UnityEditor.Build.Pipeline.Interfaces;
using UnityEditor.Build.Pipeline.Utilities;
namespace UnityEditor.Build.Pipeline.Utilities
{
/// <summary>
/// Generates a deterministic identifier using a MD5 hash algorithm and does not require object ordering to be deterministic.
/// This algorithm ensures objects coming from the same asset are packed closer together and can improve loading performance under certain situations.
/// Sorts MonoScript types to the top of the file and is required when building ContentFiles.
/// </summary>
public class ContentFileIdentifiers : PrefabPackedIdentifiers, IDeterministicIdentifiers
{
/// <inheritdoc />
public override long SerializationIndexFromObjectIdentifier(ObjectIdentifier objectID)
{
long result = base.SerializationIndexFromObjectIdentifier(objectID);
long mask = ((long)1 << 63);
if (BuildCacheUtility.GetMainTypeForObject(objectID) == typeof(MonoScript))
result |= mask;
else
result &= ~mask;
return result;
}
}
}
#endif