91 lines
2.6 KiB
C#
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();
|
||
|
}
|
||
|
}
|
||
|
}
|