initial upload
This commit is contained in:
@ -0,0 +1,60 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace RootMotion
|
||||
{
|
||||
public class AnimationModifierStack : MonoBehaviour
|
||||
{
|
||||
public AnimationModifier[] modifiers = new AnimationModifier[0];
|
||||
|
||||
private Animator animator;
|
||||
private Baker baker;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
animator = GetComponent<Animator>();
|
||||
baker = GetComponent<Baker>();
|
||||
baker.OnStartClip += OnBakerStartClip;
|
||||
baker.OnUpdateClip += OnBakerUpdateClip;
|
||||
|
||||
foreach (AnimationModifier m in modifiers)
|
||||
{
|
||||
m.OnInitiate(baker, animator);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnBakerStartClip(AnimationClip clip, float normalizedTime)
|
||||
{
|
||||
foreach (AnimationModifier m in modifiers)
|
||||
{
|
||||
m.OnStartClip(clip);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnBakerUpdateClip(AnimationClip clip, float normalizedTime)
|
||||
{
|
||||
foreach (AnimationModifier m in modifiers)
|
||||
{
|
||||
if (!m.enabled) continue;
|
||||
m.OnBakerUpdate(normalizedTime);
|
||||
}
|
||||
}
|
||||
|
||||
private void LateUpdate()
|
||||
{
|
||||
if (!animator.enabled && !baker.isBaking) return;
|
||||
if (baker.isBaking && baker.mode == Baker.Mode.AnimationClips) return;
|
||||
if (animator.runtimeAnimatorController == null) return;
|
||||
|
||||
AnimatorStateInfo info = animator.GetCurrentAnimatorStateInfo(0);
|
||||
float n = info.normalizedTime;
|
||||
|
||||
foreach (AnimationModifier m in modifiers)
|
||||
{
|
||||
if (!m.enabled) continue;
|
||||
m.OnBakerUpdate(n);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user