1
0
Fork 0
mirror of https://github.com/bjornbytes/lovr.git synced 2024-07-02 12:33:52 +00:00

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; 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) { int l_lovrAnimatorGetSpeed(lua_State* L) {
Animator* animator = luax_checktype(L, 1, Animator); Animator* animator = luax_checktype(L, 1, Animator);
if (lua_type(L, 2) == LUA_TSTRING) { if (lua_type(L, 2) == LUA_TSTRING) {
@ -174,6 +190,8 @@ const luaL_Reg lovrAnimator[] = {
{ "isPlaying", l_lovrAnimatorIsPlaying }, { "isPlaying", l_lovrAnimatorIsPlaying },
{ "isLooping", l_lovrAnimatorIsLooping }, { "isLooping", l_lovrAnimatorIsLooping },
{ "setLooping", l_lovrAnimatorSetLooping }, { "setLooping", l_lovrAnimatorSetLooping },
{ "getPriority", l_lovrAnimatorGetPriority },
{ "setPriority", l_lovrAnimatorSetPriority },
{ "getSpeed", l_lovrAnimatorGetSpeed }, { "getSpeed", l_lovrAnimatorGetSpeed },
{ "setSpeed", l_lovrAnimatorSetSpeed }, { "setSpeed", l_lovrAnimatorSetSpeed },
{ NULL, NULL } { NULL, NULL }

View file

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

View file

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