VertexAnimation/Runtime/Scripts/VA_AnimationLibrary.cs

72 lines
1.8 KiB
C#
Raw Permalink 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
public void Init()
{
animationData = new List<VA_AnimationData>();
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
}
}
}