55 lines
2.1 KiB
C#
55 lines
2.1 KiB
C#
//------------------------------------------------------------
|
|
// Game Framework
|
|
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
|
// Homepage: https://gameframework.cn/
|
|
// Feedback: mailto:ellan@gameframework.cn
|
|
//------------------------------------------------------------
|
|
|
|
using System.Collections.Generic;
|
|
|
|
namespace UnityGameFramework.Runtime
|
|
{
|
|
/// <summary>
|
|
/// 内置版本资源列表序列化器。
|
|
/// </summary>
|
|
public static partial class BuiltinVersionListSerializer
|
|
{
|
|
private const string DefaultExtension = "dat";
|
|
private const int CachedHashBytesLength = 4;
|
|
private static readonly byte[] s_CachedHashBytes = new byte[CachedHashBytesLength];
|
|
|
|
private static int AssetNameToDependencyAssetNamesComparer(KeyValuePair<string, string[]> a, KeyValuePair<string, string[]> b)
|
|
{
|
|
return a.Key.CompareTo(b.Key);
|
|
}
|
|
|
|
private static int GetAssetNameIndex(List<KeyValuePair<string, string[]>> assetNameToDependencyAssetNames, string assetName)
|
|
{
|
|
return GetAssetNameIndexWithBinarySearch(assetNameToDependencyAssetNames, assetName, 0, assetNameToDependencyAssetNames.Count - 1);
|
|
}
|
|
|
|
private static int GetAssetNameIndexWithBinarySearch(List<KeyValuePair<string, string[]>> assetNameToDependencyAssetNames, string assetName, int leftIndex, int rightIndex)
|
|
{
|
|
if (leftIndex > rightIndex)
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
int middleIndex = (leftIndex + rightIndex) / 2;
|
|
if (assetNameToDependencyAssetNames[middleIndex].Key == assetName)
|
|
{
|
|
return middleIndex;
|
|
}
|
|
|
|
if (assetNameToDependencyAssetNames[middleIndex].Key.CompareTo(assetName) > 0)
|
|
{
|
|
return GetAssetNameIndexWithBinarySearch(assetNameToDependencyAssetNames, assetName, leftIndex, middleIndex - 1);
|
|
}
|
|
else
|
|
{
|
|
return GetAssetNameIndexWithBinarySearch(assetNameToDependencyAssetNames, assetName, middleIndex + 1, rightIndex);
|
|
}
|
|
}
|
|
}
|
|
}
|