From 3698ffbde4d76d01e61d18c4a1e9254f06ebc652 Mon Sep 17 00:00:00 2001 From: hgn Date: Mon, 27 Sep 2021 21:49:20 +0100 Subject: [PATCH] splitter switcher --- build.sh | 14 +++++++++---- fishladder.c | 33 +++++++++++++++++++++++++++++-- models/{monkey.h => MONKEY.obj.h} | 0 models/splitter_l.obj.h | 11 +++++++++++ models/splitter_r.obj.h | 11 +++++++++++ 5 files changed, 63 insertions(+), 6 deletions(-) rename models/{monkey.h => MONKEY.obj.h} (100%) create mode 100644 models/splitter_l.obj.h create mode 100644 models/splitter_r.obj.h diff --git a/build.sh b/build.sh index db2fa32..2395e17 100755 --- a/build.sh +++ b/build.sh @@ -38,6 +38,16 @@ while (( "$#" )); do shift done +echo "Building tools" +mkdir tools -p +gcc -Wall -Wstrict-aliasing=3 $lib $flags mdlcomp.c gl/glad.c -o tools/mdlcomp $libs -Wl,-rpath=./ $defines + +echo "Recompiling models" +for f in models/*.obj; + do echo "Compiling $f.."; + ./tools/mdlcomp $f $f.h +done + # Main build if [ "$do_build" = true ]; then gcc -Wall -Wstrict-aliasing=3 $lib $flags $src gl/glad.c -o $target $libs -Wl,-rpath=./ $defines @@ -50,10 +60,6 @@ if [ "$do_build" = true ]; then echo "Build succeeded" fi -# Build tools -mkdir tools -p -gcc -Wall -Wstrict-aliasing=3 $lib $flags mdlcomp.c gl/glad.c -o tools/mdlcomp $libs -Wl,-rpath=./ $defines - if [[ "$OSTYPE" == "linux-gnu"* ]]; then # Directories to initialize mkdir build.linux/cfg -p diff --git a/fishladder.c b/fishladder.c index dc2d540..49aa43a 100644 --- a/fishladder.c +++ b/fishladder.c @@ -127,7 +127,7 @@ struct world u32 w, h; - struct mesh tile, circle; + struct mesh tile, circle, splitter_l, splitter_r; int selected; @@ -341,6 +341,21 @@ void vg_start(void) init_mesh( &world.circle, circle_mesh, vg_list_size( circle_mesh ) ); } + // splitters (temp) + { + float splitter_l[] = + { + #include "models/splitter_l.obj.h" + }; + float splitter_r[] = + { + #include "models/splitter_r.obj.h" + }; + + init_mesh( &world.splitter_l, splitter_l, vg_list_size( splitter_l ) ); + init_mesh( &world.splitter_r, splitter_r, vg_list_size( splitter_r ) ); + } + map_load ( "#############;\n" @@ -360,6 +375,8 @@ void vg_free(void) { free_mesh( &world.tile ); free_mesh( &world.circle ); + free_mesh( &world.splitter_l ); + free_mesh( &world.splitter_r ); map_free(); } @@ -729,7 +746,19 @@ void vg_render(void) struct cell *cell = pcell((v2i){x,y}); int selected = world.selected == y*world.w + x; - if( cell->state & FLAG_CANAL && !selected ) + if( cell->state & FLAG_SPLIT ) + { + glUniform4f( SHADER_UNIFORM( shader_tile_colour, "uColour" ), 0.9f, 0.9f, 0.9f, 1.0f ); + glUniform3f( SHADER_UNIFORM( shader_tile_colour, "uOffset" ), (float)x, (float)y, 1.0f ); + + struct mesh *splitter = cell->state & FLAG_FLIP_FLOP? &world.splitter_r: &world.splitter_l; + + use_mesh( splitter ); + draw_mesh( 0, splitter->elements ); + use_mesh( &world.tile ); + } + + if( (cell->state & FLAG_CANAL) && !selected ) continue; glUniform3f( SHADER_UNIFORM( shader_tile_colour, "uOffset" ), (float)x, (float)y, 1.0f ); diff --git a/models/monkey.h b/models/MONKEY.obj.h similarity index 100% rename from models/monkey.h rename to models/MONKEY.obj.h diff --git a/models/splitter_l.obj.h b/models/splitter_l.obj.h new file mode 100644 index 0000000..4b4b1a7 --- /dev/null +++ b/models/splitter_l.obj.h @@ -0,0 +1,11 @@ +/*triangle buffer generated from source file: 'models/splitter_l.obj'*/ +0.115683f,-0.000000f,0.884317f,-0.000000f,0.500000f,0.156250f, +0.465420f,0.331343f,0.012925f,0.379090f,0.418657f,0.215420f, +0.651488f,0.458465f,0.780578f,0.945540f,0.535564f,0.505228f, +0.418657f,0.215420f,0.581343f,0.284580f,0.465420f,0.331343f, +0.581343f,0.284580f,0.940312f,0.004987f,0.987075f,0.120910f, +0.465420f,0.331343f,0.059688f,0.495013f,0.012925f,0.379090f, +0.535564f,0.505228f,0.465420f,0.331343f,0.581343f,0.284580f, +0.581343f,0.284580f,0.651488f,0.458465f,0.535564f,0.505228f, +0.418657f,0.215420f,0.534580f,0.168657f,0.581343f,0.284580f, +0.581343f,0.284580f,0.534580f,0.168657f,0.940312f,0.004987f, diff --git a/models/splitter_r.obj.h b/models/splitter_r.obj.h new file mode 100644 index 0000000..0c79b7d --- /dev/null +++ b/models/splitter_r.obj.h @@ -0,0 +1,11 @@ +/*triangle buffer generated from source file: 'models/splitter_r.obj'*/ +0.115683f,-0.000000f,0.884317f,-0.000000f,0.500000f,0.156250f, +0.419004f,0.285386f,0.057279f,0.009367f,0.464614f,0.169004f, +0.466970f,0.505569f,0.226337f,0.948290f,0.350588f,0.459958f, +0.464614f,0.169004f,0.535386f,0.330996f,0.419004f,0.285386f, +0.535386f,0.330996f,0.988332f,0.374251f,0.942721f,0.490633f, +0.419004f,0.285386f,0.011668f,0.125749f,0.057279f,0.009367f, +0.350588f,0.459958f,0.419004f,0.285386f,0.535386f,0.330996f, +0.535386f,0.330996f,0.466970f,0.505569f,0.350588f,0.459958f, +0.464614f,0.169004f,0.580996f,0.214614f,0.535386f,0.330996f, +0.535386f,0.330996f,0.580996f,0.214614f,0.988332f,0.374251f, -- 2.25.1