move easing_animate to common tasks

This commit is contained in:
laochailan 2021-01-30 20:27:14 +01:00 committed by Andrei Alexeyev
parent 8fed29ca68
commit d724d7d997
No known key found for this signature in database
GPG key ID: 72D26128040B9690
4 changed files with 39 additions and 38 deletions

View file

@ -313,3 +313,15 @@ cmplx common_wander(cmplx origin, double dist, Rect bounds) {
return dest;
}
DEFINE_EXTERN_TASK(common_easing_animate) {
float from = *ARGS.value;
float scale = ARGS.to - from;
float ftime = ARGS.duration;
for(int t = 0; t < ARGS.duration;t++) {
YIELD;
*ARGS.value = from + scale * ARGS.ease(t / ftime);
}
}

View file

@ -16,6 +16,7 @@
#include "move.h"
#include "entity.h"
#include "global.h"
#include "util/glm.h"
DECLARE_EXTERN_TASK(
common_drop_items,
@ -115,4 +116,14 @@ DECLARE_EXTERN_TASK(
}
);
DECLARE_EXTERN_TASK(
common_easing_animate,
{
float *value;
float to;
int duration;
glm_ease_t ease;
}
);
#endif // IGUARD_common_tasks_h

View file

@ -13,19 +13,9 @@
#include "stageutils.h"
#include "coroutine.h"
#include "common_tasks.h"
#include "util/glm.h"
TASK(easing_animate, { float *val; float to; int time; glm_ease_t ease; }) {
float from = *ARGS.val;
float scale = ARGS.to - from;
float ftime = ARGS.time;
for(int t = 0; t < ARGS.time;t++) {
YIELD;
*ARGS.val = from + scale * ARGS.ease(t / ftime);
}
}
TASK(animate_hina_mode, NO_ARGS) {
Stage2DrawData *draw_data = stage2_get_draw_data();
@ -58,15 +48,15 @@ TASK(animate_bg_fullstage, NO_ARGS) {
real dur = 600;
glm_ease_t func = glm_ease_quad_inout;
INVOKE_TASK(easing_animate,&cam->rot.v[0], 40, dur, glm_ease_quad_out);
INVOKE_TASK(easing_animate,&cam->rot.v[2], -2.5f, dur, glm_ease_quad_out);
INVOKE_TASK(easing_animate,&cam->pos[0], 0, dur, func);
INVOKE_TASK(easing_animate,&cam->vel[1], 0.05f, dur, func);
INVOKE_TASK(common_easing_animate,&cam->rot.v[0], 40, dur, glm_ease_quad_out);
INVOKE_TASK(common_easing_animate,&cam->rot.v[2], -2.5f, dur, glm_ease_quad_out);
INVOKE_TASK(common_easing_animate,&cam->pos[0], 0, dur, func);
INVOKE_TASK(common_easing_animate,&cam->vel[1], 0.05f, dur, func);
INVOKE_TASK(easing_animate, &cam->rot.v[0], 40, dur, glm_ease_quad_out);
INVOKE_TASK(easing_animate, &cam->rot.v[2], -2.5f, dur, glm_ease_quad_out);
INVOKE_TASK(easing_animate, &cam->pos[0], 0, dur, func);
INVOKE_TASK(easing_animate, &cam->vel[1], 0.05f, dur, func);
INVOKE_TASK(common_easing_animate, &cam->rot.v[0], 40, dur, glm_ease_quad_out);
INVOKE_TASK(common_easing_animate, &cam->rot.v[2], -2.5f, dur, glm_ease_quad_out);
INVOKE_TASK(common_easing_animate, &cam->pos[0], 0, dur, func);
INVOKE_TASK(common_easing_animate, &cam->vel[1], 0.05f, dur, func);
for(;;) {
YIELD;

View file

@ -12,19 +12,7 @@
#include "draw.h"
#include "stageutils.h"
#include "util/glm.h"
// merge with stage2 version?
TASK(easing_animate, { float *val; float to; int time; glm_ease_t ease; }) {
float from = *ARGS.val;
float scale = ARGS.to - from;
float ftime = ARGS.time;
for(int t = 0; t < ARGS.time;t++) {
YIELD;
*ARGS.val = from + scale * ARGS.ease(t / ftime);
}
}
#include "common_tasks.h"
TASK(update_stage_3d, NO_ARGS) {
for(;;) {
@ -44,16 +32,16 @@ TASK(animate_bg_fullstage, NO_ARGS) {
cam->vel[2] = 0.008;
WAIT(400);
INVOKE_TASK(easing_animate,&cam->vel[1], 0.013, 200, glm_ease_sine_inout);
INVOKE_TASK(easing_animate,&cam->vel[2], 0.0, 200, glm_ease_quad_out);
INVOKE_TASK(common_easing_animate,&cam->vel[1], 0.013, 200, glm_ease_sine_inout);
INVOKE_TASK(common_easing_animate,&cam->vel[2], 0.0, 200, glm_ease_quad_out);
WAIT(800);
INVOKE_TASK(easing_animate,&cam->pos[2], 4, 400, glm_ease_quad_inout);
INVOKE_TASK(common_easing_animate,&cam->pos[2], 4, 400, glm_ease_quad_inout);
WAIT(1200);
INVOKE_TASK(easing_animate,&cam->pos[2], 3, 400, glm_ease_quad_inout);
INVOKE_TASK(common_easing_animate,&cam->pos[2], 3, 400, glm_ease_quad_inout);
WAIT(100);
INVOKE_TASK(easing_animate,&cam->pos[2], 4, 400, glm_ease_quad_inout);
INVOKE_TASK(common_easing_animate,&cam->pos[2], 4, 400, glm_ease_quad_inout);
WAIT(300);
INVOKE_TASK(easing_animate,&cam->vel[1], 0.06, 200, glm_ease_quad_in);
INVOKE_TASK(common_easing_animate,&cam->vel[1], 0.06, 200, glm_ease_quad_in);
}
void stage4_bg_init_fullstage() {