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