diff options
author | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
commit | 15740faf9fe9fe4be08965098bbf2947e096aeeb (patch) | |
tree | a730ec236656cc8cab5b13f088adfaed6bb218fb /Runtime/Animation/AnimationManager.cpp |
Diffstat (limited to 'Runtime/Animation/AnimationManager.cpp')
-rw-r--r-- | Runtime/Animation/AnimationManager.cpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/Runtime/Animation/AnimationManager.cpp b/Runtime/Animation/AnimationManager.cpp new file mode 100644 index 0000000..c4c3e71 --- /dev/null +++ b/Runtime/Animation/AnimationManager.cpp @@ -0,0 +1,53 @@ +#include "UnityPrefix.h" +#include "AnimationManager.h" +#include "Runtime/Input/TimeManager.h" +#include "Animation.h" +#include "AnimationState.h" +#include "AnimationStateNetworkProvider.h" +#include "Runtime/Core/Callbacks/PlayerLoopCallbacks.h" + +static AnimationManager* gAnimationManager = NULL; + +void AnimationManager::Update () +{ + // Update animations + double time = GetCurTime(); + AnimationList* animations = NULL; + if (GetTimeManager ().IsUsingFixedTimeStep ()) + animations = &m_FixedAnimations; + else + animations = &m_Animations; + + // Animation List node can be destroyed in UpdateAnimation, if somebody writes an AnimationEvent + // to do that. So we have to use SafeListIterator + SafeIterator<AnimationList> j (*animations); + while (j.Next()) + { + Animation& animation = **j; + animation.UpdateAnimation(time); + } +} + +void AnimationManager::InitializeClass () +{ + Assert(gAnimationManager == NULL); + gAnimationManager = UNITY_NEW_AS_ROOT (AnimationManager, kMemAnimation, "AnimationManager", ""); + + REGISTER_PLAYERLOOP_CALL (LegacyFixedAnimationUpdate, GetAnimationManager().Update()); + REGISTER_PLAYERLOOP_CALL (LegacyAnimationUpdate, GetAnimationManager().Update ()); + + InitializeAnimationStateNetworkProvider(); +} + +void AnimationManager::CleanupClass () +{ + Assert(gAnimationManager != NULL); + UNITY_DELETE(gAnimationManager, kMemAnimation); + + CleanupAnimationStateNetworkProvider(); +} + +AnimationManager& GetAnimationManager () +{ + return *gAnimationManager; +} |