From: hgn Date: Tue, 30 Nov 2021 00:11:36 +0000 (+0000) Subject: added pull animation to wires X-Git-Url: https://harrygodden.com/git/?p=fishladder.git;a=commitdiff_plain;h=de8f99418ff76e1d22bfd549b8f0bcc33d61e778 added pull animation to wires --- diff --git a/fishladder.c b/fishladder.c index f310bd5..072c9a0 100644 --- a/fishladder.c +++ b/fishladder.c @@ -98,7 +98,7 @@ m3x3f m_mdl; #define FLAG_WALL 0x40 #define FLAG_FLIP_FLOP 0x100 -#define FLAG_TRIGGER_FLIP 0x200 +#define FLAG_TRIGGERED 0x200 #define FLAG_FLIP_ROTATING 0x400 #define FLAG_TARGETED 0x800 @@ -1311,6 +1311,8 @@ void vg_update(void) { cell->state &= ~FLAG_FLIP_ROTATING; } + if( cell->state & FLAG_IS_TRIGGER ) + cell->state &= ~FLAG_TRIGGERED; } int alive_count = 0; @@ -1443,6 +1445,8 @@ void vg_update(void) struct cell *target_peice = &world.data[ cell_current->links[trigger_id] ]; + cell_current->state |= FLAG_TRIGGERED; + if( trigger_id ) target_peice->state |= FLAG_FLIP_FLOP; else @@ -1918,9 +1922,11 @@ void vg_render(void) glBindVertexArray( world.wire.vao ); glUniformMatrix3fv( SHADER_UNIFORM( shader_wire, "uPv" ), 1, GL_FALSE, (float *)vg_pv ); - glUniform1f( SHADER_UNIFORM( shader_wire, "uCurve" ), 0.4f ); glUniform4f( SHADER_UNIFORM( shader_wire, "uColour" ), 0.2f, 0.2f, 0.2f, 1.0f ); - + + float rp_x1 = world.frame_lerp*9.0f; + float rp_x2 = 1.0f-rp_x1*expf(1.0f-rp_x1)* 0.36f; + for( int y = 2; y < world.h-2; y ++ ) { for( int x = 2; x < world.w-2; x ++ ) @@ -1945,6 +1951,7 @@ void vg_render(void) endpoint[0] = x+0.5f; endpoint[1] = y+0.5f; + glUniform1f( SHADER_UNIFORM( shader_wire, "uCurve" ), cell->state & FLAG_TRIGGERED? rp_x2 * 0.4f: 0.4f ); glUniform3f( SHADER_UNIFORM( shader_wire, "uStart" ), startpoint[0], startpoint[1], 0.04f ); glUniform3f( SHADER_UNIFORM( shader_wire, "uEnd" ), endpoint[0], endpoint[1], 0.04f ); glDrawElements( GL_TRIANGLES, world.wire.em, GL_UNSIGNED_SHORT, (void*)(0) );