- for( int x = 0; x < world.w; x ++ )
- {
- struct cell *cell = pcell((v2i){x,y});
- int selected = world.selected == y*world.w + x;
-
- 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 );
-
- v4f colour;
-
- if( cell->state & FLAG_WALL ) { v4_copy( (v4f){ 0.2f, 0.2f, 0.2f, 1.0f }, colour ); }
- else if( cell->state & FLAG_CANAL ) { v4_copy( (v4f){ 0.6f, 0.6f, 0.6f, 1.0f }, colour ); }
- else if( cell->state & FLAG_INPUT ) { v4_copy( (v4f){ 0.5f, 0.5f, 0.5f, 1.0f }, colour ); }
- else if( cell->state & FLAG_OUTPUT ) { v4_copy( (v4f){ 0.4f, 0.4f, 0.4f, 1.0f }, colour ); }
- else v4_copy( (v4f){ 0.9f, 0.9f, 0.9f, 1.0f }, colour );
-
- //if( cell->water[world.frame&0x1] )
- // v4_copy( (v4f){ 0.2f, 0.3f, 0.7f * (float)(cell->water[world.frame&0x1]) * (1.0f/16.0f), 1.0f }, colour );
-
- if( selected )
- v3_muls( colour, sinf( vg_time )*0.25f + 0.5f, colour );
-
- //if( cell->state & (FLAG_SPLIT) )
- // v4_copy( (v4f){ 0.75f, 0.75f, 0.02f, 1.0f }, colour );
- //if( cell->state & (FLAG_MERGER) )
- // v4_copy( (v4f){ 0.75f, 0.02f, 0.75f, 1.0f }, colour );
-
- glUniform4fv( SHADER_UNIFORM( shader_tile_colour, "uColour" ), 1, colour );
-
- draw_mesh( 0, 2 );
- }