Files
Fishing2/Assets/Scripts/NBC.Fantasy/Editor/Asset/Cache/BuildPackage.cs
2025-11-12 17:24:02 +08:00

99 lines
3.0 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace NBC.Editor
{
[Serializable]
public class BuildPackage
{
public string Name;
public int Size;
public int Def;
public List<BuildBundle> Bundles = new List<BuildBundle>();
[NonSerialized] public List<BuildAsset> Assets = new List<BuildAsset>();
public int GetBundleIndex(string name)
{
return Bundles.FindIndex(p => p.Name == name);
}
public int GetAssetIndex(string asset)
{
return Assets.FindIndex(p => p.Path == asset);
}
public PackageData ToPackagesData()
{
PackageData packageData = new PackageData
{
Name = Name,
Def = Def,
Bundles = new List<BundleData>(),
Assets = new List<AssetData>()
};
foreach (var bundle in Bundles)
{
var b = new BundleData
{
Name = bundle.Name,
Hash = bundle.Hash,
Size = bundle.Size,
Tags = EditUtil.GetTagsArr(bundle.Tags),
};
if (bundle.Dependencies != null && bundle.Dependencies.Length > 0)
{
foreach (var dependency in bundle.Dependencies)
{
b.Deps.Add(GetBundleIndex(dependency));
}
}
Assets.AddRange(bundle.Assets);
packageData.Bundles.Add(b);
}
HashSet<string> dirs = new HashSet<string>();
foreach (var asset in Assets)
{
var dir = Path.GetDirectoryName(asset.Path)?.Replace("\\", "/");
if (!string.IsNullOrEmpty(dir))
{
dirs.Add(dir);
}
}
packageData.Dirs = dirs.ToList();
foreach (var asset in Assets)
{
var dir = Path.GetDirectoryName(asset.Path)?.Replace("\\", "/");
var a = new AssetData
{
Name = Path.GetFileName(asset.Path),
Dir = packageData.Dirs.FindIndex(b => b == dir),
Address = asset.Address,
// Tags = EditUtil.GetTagsArr(asset.Tags),
Bundle = GetBundleIndex(asset.Bundle)
};
// if (asset.Dependencies != null && asset.Dependencies.Length > 0)
// {
// foreach (var dependency in asset.Dependencies)
// {
// var index = GetAssetIndex(dependency);
// if (index >= 0)
// a.Deps.Add(index);
// }
// }
packageData.Assets.Add(a);
}
return packageData;
}
}
}