From cffc3da34523b996393f730bed5a65934b499167 Mon Sep 17 00:00:00 2001 From: Vito Caputo Date: Mon, 9 Jan 2023 19:17:20 -0800 Subject: modules/stars: add taps for some vars Wiring up some minimal taps to see how this will work... This only initializes the taps and changes the render to access the rates indirectly via the tapped pointers. --- src/modules/stars/stars.c | 69 ++++++++++++++++++++++++++++++----------------- 1 file changed, 45 insertions(+), 24 deletions(-) diff --git a/src/modules/stars/stars.c b/src/modules/stars/stars.c index 8e6a5d0..12de4ed 100644 --- a/src/modules/stars/stars.c +++ b/src/modules/stars/stars.c @@ -12,6 +12,7 @@ #include "til_fb.h" #include "til_module_context.h" #include "til_settings.h" +#include "til_tap.h" #include "draw.h" @@ -27,12 +28,29 @@ struct points { typedef struct stars_context_t { til_module_context_t til_module_context; struct points* points; + + struct { + til_tap_t rot_rate; + til_tap_t rot_angle; + til_tap_t offset_x; + til_tap_t offset_y; + til_tap_t offset_angle; + } taps; + + struct { + float rot_rate; + float rot_angle; + float offset_x; + float offset_y; + float offset_angle; + } vars; + float rot_adj; - float rot_rate; - float rot_angle; - float offset_x; - float offset_y; - float offset_angle; + float *rot_rate; + float *rot_angle; + float *offset_x; + float *offset_y; + float *offset_angle; unsigned seed; } stars_context_t; @@ -67,11 +85,14 @@ static til_module_context_t * stars_create_context(unsigned seed, unsigned ticks ctxt->points = NULL; ctxt->seed = seed; ctxt->rot_adj = ((stars_setup_t *)setup)->rot_adj; - ctxt->rot_rate = 0.00; - ctxt->rot_angle = 0; - ctxt->offset_x = 0.5; - ctxt->offset_y = 0; - ctxt->offset_angle = 0.01; + ctxt->vars.offset_x = 0.5; + ctxt->vars.offset_angle = 0.01; + + ctxt->taps.rot_rate = til_tap_init_float(&ctxt->rot_rate, 1, &ctxt->vars.rot_rate, "rot_rate"); + ctxt->taps.rot_angle = til_tap_init_float(&ctxt->rot_angle, 1, &ctxt->vars.rot_angle, "rot_angle"); + ctxt->taps.offset_x = til_tap_init_float(&ctxt->offset_x, 1, &ctxt->vars.offset_x, "offset_x"); + ctxt->taps.offset_y = til_tap_init_float(&ctxt->offset_y, 1, &ctxt->vars.offset_y, "offset_y"); + ctxt->taps.offset_angle = til_tap_init_float(&ctxt->offset_angle, 1, &ctxt->vars.offset_angle, "offset_angle"); //add a bunch of points for(z=0.01; z<1; z=z+0.01) { @@ -152,11 +173,11 @@ static void stars_render_fragment(til_module_context_t *context, unsigned ticks, x = (iterator->x / (1.f - iterator->z))*x_mult; y = (iterator->y / (1.f - iterator->z))*y_mult; - rot_x = (x*cosf(ctxt->rot_angle))-(y*sinf(ctxt->rot_angle)); - rot_y = (x*sinf(ctxt->rot_angle))+(y*cosf(ctxt->rot_angle)); + rot_x = (x*cosf(*ctxt->rot_angle))-(y*sinf(*ctxt->rot_angle)); + rot_y = (x*sinf(*ctxt->rot_angle))+(y*cosf(*ctxt->rot_angle)); - pos_x = ((rot_x+ctxt->offset_x+1.f)*.5f)*(float)width; - pos_y = ((rot_y+ctxt->offset_y+1.f)*.5f)*(float)height; + pos_x = ((rot_x+*ctxt->offset_x+1.f)*.5f)*(float)width; + pos_y = ((rot_y+*ctxt->offset_y+1.f)*.5f)*(float)height; if(iterator->z<0.1) opacity = iterator->z*10; @@ -202,19 +223,19 @@ static void stars_render_fragment(til_module_context_t *context, unsigned ticks, } // handle rotation parameters - if(ctxt->rot_angle>M_PI_4) - ctxt->rot_rate=ctxt->rot_rate-ctxt->rot_adj; + if(*ctxt->rot_angle>M_PI_4) + *ctxt->rot_rate=*ctxt->rot_rate-ctxt->rot_adj; else - ctxt->rot_rate=ctxt->rot_rate+ctxt->rot_adj; - ctxt->rot_angle=ctxt->rot_angle+ctxt->rot_rate; + *ctxt->rot_rate=*ctxt->rot_rate+ctxt->rot_adj; + *ctxt->rot_angle=*ctxt->rot_angle+*ctxt->rot_rate; // handle offset parameters - float tmp_x = (ctxt->offset_x*cosf(ctxt->offset_angle))- - (ctxt->offset_y*sinf(ctxt->offset_angle)); - float tmp_y = (ctxt->offset_x*sinf(ctxt->offset_angle))+ - (ctxt->offset_y*cosf(ctxt->offset_angle)); - ctxt->offset_x = tmp_x; - ctxt->offset_y = tmp_y; + float tmp_x = (*ctxt->offset_x*cosf(*ctxt->offset_angle))- + (*ctxt->offset_y*sinf(*ctxt->offset_angle)); + float tmp_y = (*ctxt->offset_x*sinf(*ctxt->offset_angle))+ + (*ctxt->offset_y*cosf(*ctxt->offset_angle)); + *ctxt->offset_x = tmp_x; + *ctxt->offset_y = tmp_y; } int stars_setup(const til_settings_t *settings, til_setting_t **res_setting, const til_setting_desc_t **res_desc, til_setup_t **res_setup) -- cgit v1.2.3