From: hgn Date: Tue, 30 Nov 2021 00:17:19 +0000 (+0000) Subject: improve dragging wire visuals X-Git-Url: https://harrygodden.com/git/?p=fishladder.git;a=commitdiff_plain;h=4528469af4267280885db212dd5c68ee938ebd92 improve dragging wire visuals --- diff --git a/fishladder.c b/fishladder.c index 072c9a0..461731d 100644 --- a/fishladder.c +++ b/fishladder.c @@ -1110,6 +1110,10 @@ v2f const curve_7_1[] = {{0.5f,0.8438f},{1.0f-0.875f,0.8438f},{1.0-0.625f,0.5f}, float const curve_7_linear_section = 0.1562f; +u16 id_drag_from = 0; +v2f drag_from_co; +v2f drag_to_co; + void vg_update(void) { // Fit within screen @@ -1137,10 +1141,6 @@ void vg_update(void) world.tile_x = floorf( world.tile_pos[0] ); world.tile_y = floorf( world.tile_pos[1] ); - static u16 id_drag_from = 0; - static v2f drag_from_co; - static v2f drag_to_co; - // Tilemap editing if( !world.simulating ) { @@ -1254,14 +1254,8 @@ void vg_update(void) else world.selected = -1; - if( vg_get_button("secondary") && id_drag_from ) - { - vg_line2( drag_from_co, drag_to_co, 0xff00ff00, 0xffffff00 ); - } - else - { + if( !(vg_get_button("secondary") && id_drag_from) ) id_drag_from = 0; - } } else { @@ -1894,7 +1888,7 @@ void vg_render(void) } // Edit overlay - if( world.selected != -1 && !(world.data[ world.selected ].state & FLAG_CANAL) ) + if( world.selected != -1 && !(world.data[ world.selected ].state & FLAG_CANAL) && !id_drag_from ) { v2i new_begin = { world.tile_x - 2, world.tile_y - 2 }; v2i new_end = { world.tile_x + 2, world.tile_y + 2 }; @@ -1924,6 +1918,14 @@ void vg_render(void) glUniformMatrix3fv( SHADER_UNIFORM( shader_wire, "uPv" ), 1, GL_FALSE, (float *)vg_pv ); glUniform4f( SHADER_UNIFORM( shader_wire, "uColour" ), 0.2f, 0.2f, 0.2f, 1.0f ); + if( id_drag_from ) + { + glUniform1f( SHADER_UNIFORM( shader_wire, "uCurve" ), 0.4f ); + glUniform3f( SHADER_UNIFORM( shader_wire, "uStart" ), drag_from_co[0], drag_from_co[1], 0.06f ); + glUniform3f( SHADER_UNIFORM( shader_wire, "uEnd" ), drag_to_co[0], drag_to_co[1], 0.06f ); + glDrawElements( GL_TRIANGLES, world.wire.em, GL_UNSIGNED_SHORT, (void*)(0) ); + } + float rp_x1 = world.frame_lerp*9.0f; float rp_x2 = 1.0f-rp_x1*expf(1.0f-rp_x1)* 0.36f;