VertexAnimation/Runtime/Scripts/VA_AnimationLibrary.cs

80 lines
1.9 KiB
C#
Raw Normal View History

using System.Collections.Generic;
using Unity.Collections;
using UnityEngine;
namespace TAO.VertexAnimation
{
2021-01-18 13:42:45 +01:00
[CreateAssetMenu(fileName = "new AnimationLibrary", menuName = "TAO/VertexAnimation/AnimationLibrary", order = 400)]
public class VA_AnimationLibrary : ScriptableObject
{
[SerializeField]
private List<VA_AnimationBook> animationBooks = new List<VA_AnimationBook>();
[HideInInspector]
public List<VA_AnimationData> animationData = null;
#if UNITY_EDITOR
[SerializeField]
private List<VA_Animation> loadedAnimationsPreview = null;
#endif
2022-02-19 16:21:57 +01:00
public Unity.Entities.Hash128 key;
public string guid;
public void Init()
{
2022-02-19 16:21:57 +01:00
// generate guid
guid = System.Guid.NewGuid().ToString("N");
key = new Unity.Entities.Hash128(guid);
animationData = new List<VA_AnimationData>();
2022-02-19 16:21:57 +01:00
foreach (VA_AnimationBook book in animationBooks)
{
book.UpdateMaterials();
if (book != null)
{
foreach (VA_Animation animation in book.animations)
{
// TODO: Fix data name, FixedString32 doesn't transfer from editor?
//animation.Data.name = new FixedString32(animation.name);
animationData.Add(animation.GetData());
}
}
}
}
public void OnValidate()
{
Dictionary<string, VA_Animation> usedNames = new Dictionary<string, VA_Animation>();
foreach (VA_AnimationBook book in animationBooks)
{
if (book != null)
{
foreach (VA_Animation animation in book.animations)
{
if (!usedNames.ContainsKey(animation.name))
{
usedNames.Add(animation.name, animation);
}
else
{
Debug.LogWarning(string.Format("Naming conflict found in {0} - Animation {1} and {2} have the same name!", name, usedNames[animation.name].name, animation.name));
}
}
}
}
#if UNITY_EDITOR
loadedAnimationsPreview = new List<VA_Animation>();
foreach (var un in usedNames)
{
loadedAnimationsPreview.Add(un.Value);
}
#endif
}
}
}