blob: c4c3e71eaa315bfbd1dfd589716cde4863a47c80 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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;
}
|