Animator:getPriority; Animator:setPriority;

This commit is contained in:
bjorn 2017-11-04 15:55:33 -07:00
parent 5809a39a12
commit 03d3a9f77d
3 changed files with 32 additions and 0 deletions

View File

@ -131,6 +131,22 @@ int l_lovrAnimatorSetLooping(lua_State* L) {
return 0;
}
int l_lovrAnimatorGetPriority(lua_State* L) {
Animator* animator = luax_checktype(L, 1, Animator);
const char* animation = luaL_checkstring(L, 2);
int priority = lovrAnimatorGetPriority(animator, animation);
lua_pushinteger(L, priority);
return 1;
}
int l_lovrAnimatorSetPriority(lua_State* L) {
Animator* animator = luax_checktype(L, 1, Animator);
const char* animation = luaL_checkstring(L, 2);
int priority = luaL_checkinteger(L, 3);
lovrAnimatorSetPriority(animator, animation, priority);
return 0;
}
int l_lovrAnimatorGetSpeed(lua_State* L) {
Animator* animator = luax_checktype(L, 1, Animator);
if (lua_type(L, 2) == LUA_TSTRING) {
@ -174,6 +190,8 @@ const luaL_Reg lovrAnimator[] = {
{ "isPlaying", l_lovrAnimatorIsPlaying },
{ "isLooping", l_lovrAnimatorIsLooping },
{ "setLooping", l_lovrAnimatorSetLooping },
{ "getPriority", l_lovrAnimatorGetPriority },
{ "setPriority", l_lovrAnimatorSetPriority },
{ "getSpeed", l_lovrAnimatorGetSpeed },
{ "setSpeed", l_lovrAnimatorSetSpeed },
{ NULL, NULL }

View File

@ -21,6 +21,7 @@ Animator* lovrAnimatorCreate(AnimationData* animationData) {
.animation = &animationData->animations.data[i],
.time = 0,
.speed = 1,
.priority = 0,
.playing = false,
.looping = false
};
@ -144,6 +145,16 @@ void lovrAnimatorSetLooping(Animator* animator, const char* animation, bool loop
track->looping = looping;
}
int lovrAnimatorGetPriority(Animator* animator, const char* animation) {
Track* track = lovrAnimatorEnsureTrack(animator, animation);
return track->priority;
}
void lovrAnimatorSetPriority(Animator* animator, const char* animation, int priority) {
Track* track = lovrAnimatorEnsureTrack(animator, animation);
track->priority = priority;
}
float lovrAnimatorGetSpeed(Animator* animator, const char* animation) {
if (!animation) {
return animator->speed;

View File

@ -10,6 +10,7 @@ typedef struct {
float time;
float speed;
float alpha;
int priority;
bool playing;
bool looping;
} Track;
@ -41,5 +42,7 @@ float lovrAnimatorGetDuration(Animator* animator, const char* animation);
bool lovrAnimatorIsPlaying(Animator* animator, const char* animation);
bool lovrAnimatorIsLooping(Animator* animator, const char* animation);
void lovrAnimatorSetLooping(Animator* animator, const char* animation, bool looping);
int lovrAnimatorGetPriority(Animator* animator, const char* animation);
void lovrAnimatorSetPriority(Animator* animator, const char* animation, int priority);
float lovrAnimatorGetSpeed(Animator* animator, const char* animation);
void lovrAnimatorSetSpeed(Animator* animator, const char* animation, float speed);