133 lines
3.7 KiB
C#
133 lines
3.7 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
namespace YooAsset.Editor
|
|
{
|
|
public class BuildAssetInfo
|
|
{
|
|
private bool _isAddAssetTags = false;
|
|
private readonly HashSet<string> _referenceBundleNames = new HashSet<string>();
|
|
|
|
/// <summary>
|
|
/// 收集器类型
|
|
/// </summary>
|
|
public ECollectorType CollectorType { private set; get; }
|
|
|
|
/// <summary>
|
|
/// 资源包完整名称
|
|
/// </summary>
|
|
public string BundleName { private set; get; }
|
|
|
|
/// <summary>
|
|
/// 可寻址地址
|
|
/// </summary>
|
|
public string Address { private set; get; }
|
|
|
|
/// <summary>
|
|
/// 资源信息
|
|
/// </summary>
|
|
public AssetInfo AssetInfo { private set; get; }
|
|
|
|
/// <summary>
|
|
/// 资源的分类标签
|
|
/// </summary>
|
|
public readonly List<string> AssetTags = new List<string>();
|
|
|
|
/// <summary>
|
|
/// 依赖的所有资源
|
|
/// 注意:包括零依赖资源和冗余资源(资源包名无效)
|
|
/// </summary>
|
|
public List<BuildAssetInfo> AllDependAssetInfos { private set; get; }
|
|
|
|
|
|
public BuildAssetInfo(ECollectorType collectorType, string bundleName, string address, AssetInfo assetInfo)
|
|
{
|
|
CollectorType = collectorType;
|
|
BundleName = bundleName;
|
|
Address = address;
|
|
AssetInfo = assetInfo;
|
|
}
|
|
public BuildAssetInfo(AssetInfo assetInfo)
|
|
{
|
|
CollectorType = ECollectorType.None;
|
|
BundleName = string.Empty;
|
|
Address = string.Empty;
|
|
AssetInfo = assetInfo;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 设置所有依赖的资源
|
|
/// </summary>
|
|
public void SetDependAssetInfos(List<BuildAssetInfo> dependAssetInfos)
|
|
{
|
|
if (AllDependAssetInfos != null)
|
|
throw new System.Exception("Should never get here !");
|
|
|
|
AllDependAssetInfos = dependAssetInfos;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 设置资源包名称
|
|
/// </summary>
|
|
public void SetBundleName(string bundleName)
|
|
{
|
|
if (HasBundleName())
|
|
throw new System.Exception("Should never get here !");
|
|
|
|
BundleName = bundleName;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 添加资源的分类标签
|
|
/// 说明:原始定义的资源分类标签
|
|
/// </summary>
|
|
public void AddAssetTags(List<string> tags)
|
|
{
|
|
if (_isAddAssetTags)
|
|
throw new Exception("Should never get here !");
|
|
_isAddAssetTags = true;
|
|
|
|
foreach (var tag in tags)
|
|
{
|
|
if (AssetTags.Contains(tag) == false)
|
|
{
|
|
AssetTags.Add(tag);
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 添加关联的资源包名称
|
|
/// </summary>
|
|
public void AddReferenceBundleName(string bundleName)
|
|
{
|
|
if (string.IsNullOrEmpty(bundleName))
|
|
throw new Exception("Should never get here !");
|
|
|
|
if (_referenceBundleNames.Contains(bundleName) == false)
|
|
_referenceBundleNames.Add(bundleName);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 资源包名是否存在
|
|
/// </summary>
|
|
public bool HasBundleName()
|
|
{
|
|
if (string.IsNullOrEmpty(BundleName))
|
|
return false;
|
|
else
|
|
return true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取关联资源包的数量
|
|
/// </summary>
|
|
public int GetReferenceBundleCount()
|
|
{
|
|
return _referenceBundleNames.Count;
|
|
}
|
|
}
|
|
} |