wuxianshengcong/Library/PackageCache/com.unity.2d.animation@9.1.2/Runtime/SpriteLib/SpriteLibrarySourceAsset.cs
2025-01-02 14:50:41 +08:00

91 lines
2.6 KiB
C#

using System.Collections.Generic;
namespace UnityEngine.U2D.Animation
{
internal class SpriteLibrarySourceAsset : ScriptableObject
{
public const string defaultName = "New Sprite Library Asset";
public const string extension = ".spriteLib";
[SerializeField]
List<SpriteLibCategoryOverride> m_Library = new();
[SerializeField]
string m_PrimaryLibraryGUID;
[SerializeField]
long m_ModificationHash;
[SerializeField]
int m_Version = 1;
public IReadOnlyList<SpriteLibCategoryOverride> library => m_Library;
public string primaryLibraryGUID => m_PrimaryLibraryGUID;
public long modificationHash => m_ModificationHash;
public int version => m_Version;
public void InitializeWithAsset(SpriteLibrarySourceAsset source)
{
m_Library = new List<SpriteLibCategoryOverride>(source.m_Library);
m_PrimaryLibraryGUID = source.m_PrimaryLibraryGUID;
m_ModificationHash = source.m_ModificationHash;
}
public void SetLibrary(IList<SpriteLibCategoryOverride> newLibrary)
{
if (!m_Library.Equals(newLibrary))
{
m_Library = new List<SpriteLibCategoryOverride>(newLibrary);
UpdateModificationHash();
}
}
public void SetPrimaryLibraryGUID(string newPrimaryLibraryGUID)
{
if (m_PrimaryLibraryGUID != newPrimaryLibraryGUID)
{
m_PrimaryLibraryGUID = newPrimaryLibraryGUID;
UpdateModificationHash();
}
}
public void AddCategory(SpriteLibCategoryOverride newCategory)
{
if (!m_Library.Contains(newCategory))
{
m_Library.Add(newCategory);
UpdateModificationHash();
}
}
public void RemoveCategory(SpriteLibCategoryOverride categoryToRemove)
{
if (m_Library.Contains(categoryToRemove))
{
m_Library.Remove(categoryToRemove);
UpdateModificationHash();
}
}
public void ClearCategories()
{
m_Library.Clear();
}
public void RemoveCategory(int indexToRemove)
{
if (indexToRemove >= 0 && indexToRemove < m_Library.Count)
{
m_Library.RemoveAt(indexToRemove);
UpdateModificationHash();
}
}
void UpdateModificationHash()
{
m_ModificationHash = SpriteLibraryUtility.GenerateHash();
}
}
}