vg_symlink( "maps", "maps" );
vg_symlink( "sound", "sound" );
vg_syscall( "mkdir -p bin/%s/cfg", project_name );
+ vg_syscall( "mkdir -p bin/%s/sav", project_name );
}
void build_shaders(void);
--- /dev/null
+cd textures_combine
+../vg/bin/texsheet-linux-x86_64-clang/texsheet \
+ ../textures_qoi/autocombine.qoi \
+ ../sprites_autocombine.h \
+ sprites_auto_combine \
+ *.png
+cd ..
+
static int world_check_pos_ok( v2i co, int dist );
static int cell_interactive( v2i co );
-static void render_tiles( v4f const regular_colour,
- v4f const selected_colour, int with_glow );
-static void render_tile_block( v2i start, v2i end, v4f const regular_colour,
- v4f const selected_colour );
+static void render_tiles( v4f regular_colour,
+ v4f selected_colour, int with_glow );
+static void render_tile_block( v2i start, v2i end, v4f regular_colour,
+ v4f selected_colour );
#ifdef STEAM_LEADERBOARDS
void leaderboard_set_score( struct cmp_level *cmp_level, u32 score );
m3x3_translate( m_view, origin_current );
m3x3_mul( m_projection, m_view, vg.pv );
-#if 0
- vg_projection_update();
-#endif
-
if( world.st.state == k_game_state_update )
return;
}
}
-static void render_tile( v2i pos, struct cell *ptr, v4f const regular_colour,
- v4f const selected_colour, int with_glow )
+static void render_tile( v2i pos, struct cell *ptr, v4f regular_colour,
+ v4f selected_colour, int with_glow )
{
int selected = world.selected == pos[1]*world.w + pos[0];
int uv[2];
}
// Renders specific chunk of tiles
-static void render_tile_block( v2i start, v2i end, v4f const regular_colour, v4f const selected_colour )
+static void render_tile_block( v2i start, v2i end, v4f regular_colour, v4f selected_colour )
{
v2i full_start = { 0,0 };
v2i full_end = { world.w, world.h };
}
// Renders all tiles in the command list
-static void render_tiles( v4f const regular_colour, v4f const selected_colour,
+static void render_tiles( v4f regular_colour, v4f selected_colour,
int with_glow )
{
shader_tile_main_uColour( regular_colour );
glClearColor( 0.14f, 0.14f, 0.14f, 1.0f );
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
- v4f const colour_default = {1.0f, 1.0f, 1.0f, 1.0f};
- v4f const colour_selected = {0.90f, 0.92f, 1.0f, 1.0f};
+ v4f colour_default = {1.0f, 1.0f, 1.0f, 1.0f};
+ v4f colour_selected = {0.90f, 0.92f, 1.0f, 1.0f};
int const circle_base = 6;
int const filled_start = circle_base+0;
glBindVertexArray( world.wire.vao );
shader_wire_uPv(vg.pv);
- v4f const wire_left_colour = { 0.9f, 0.9f, 0.9f, 1.0f };
- v4f const wire_right_colour = { 0.5f, 0.5f, 0.5f, 1.0f };
- v4f const wire_drag_colour = { 0.3f, 0.3f, 0.3f, 0.6f };
+ v4f wire_left_colour = { 0.9f, 0.9f, 0.9f, 1.0f };
+ v4f wire_right_colour = { 0.5f, 0.5f, 0.5f, 1.0f };
+ v4f wire_drag_colour = { 0.3f, 0.3f, 0.3f, 0.6f };
shader_wire_uTime( world.frame_lerp );
shader_wire_uGlow( 0.0f );
}
/* FIXME: run this at vg exit */
-void vg_free(void)
+void _mc_vg1_free(void)
{
#ifdef VG_STEAM
sw_free_opengl();
static srinput;
static int input_filter_generic(void){
- if( (srinput.state != k_input_state_enabled) || vg_console.enabled )
+ if( (srinput.state != k_input_state_enabled) ||
+ vg_console.enabled || vg.settings_open )
return 1;
else
return 0;
_mc_resource_load_main();
vg_bake_shaders();
vg_async_call( async_call_ready, NULL, 0 );
+ vg_loader_step( NULL, _mc_vg1_free );
}
void _mc_vg1_projection_update(void){
* Reproject screenspace mouse into world
*/
- marblecomp.mouse_ws[0] = ((vg.mouse_pos[0]/(f32)vg.window_x)-0.5f)*2.0f;
- marblecomp.mouse_ws[1] = -((vg.mouse_pos[1]/(f32)vg.window_y)-0.5f)*2.0f;
- marblecomp.mouse_ws[2] = 1.0f;
+ marblecomp.mouse_ws[0]= (((i32)vg.mouse_pos[0]/(f32)vg.window_x)-0.5f)*2.0f;
+ marblecomp.mouse_ws[1]=-(((i32)vg.mouse_pos[1]/(f32)vg.window_y)-0.5f)*2.0f;
+ marblecomp.mouse_ws[2]=1.0f;
m3x3f inverse;
m3x3_inv( vg.pv, inverse );
m3x3_mulv( inverse, marblecomp.mouse_ws, marblecomp.mouse_ws );
-
- vg_info( "VG %f %f\n", vg.mouse_pos[0], vg.mouse_pos[1] );
- vg_info( "WS %f %f\n", marblecomp.mouse_ws[0], marblecomp.mouse_ws[1] );
}
static void render_init(void){
// Combined quad, long quad / empty circle / filled circle mesh
float combined_mesh[6*6 + 32*6*3] = {
- 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f,
- 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f,
+ 0.0f,0.0f, 0.0f,1.0f, 1.0f,1.0f,
+ 0.0f,0.0f, 1.0f,1.0f, 1.0f,0.0f,
0.0f, 0.0f, 0.0f, 0.2f, 1.0f, 0.2f,
0.0f, 0.0f, 1.0f, 0.2f, 1.0f, 0.0f,
static void shader_background_uPv(m3x3f m){
glUniformMatrix3fv(_uniform_background_uPv,1,GL_FALSE,(float*)m);
}
-static void shader_background_uOffset(v3f const v){
+static void shader_background_uOffset(v3f v){
glUniform3fv(_uniform_background_uOffset,1,v);
}
static void shader_background_uTexMain(int i){
static GLuint _uniform_ball_uTexMain;
static GLuint _uniform_ball_uColour;
static GLuint _uniform_ball_uTexOffset;
-static void shader_ball_uOffset(v3f const v){
+static void shader_ball_uOffset(v3f v){
glUniform3fv(_uniform_ball_uOffset,1,v);
}
static void shader_ball_uPv(m3x3f m){
static void shader_ball_uTexMain(int i){
glUniform1i(_uniform_ball_uTexMain,i);
}
-static void shader_ball_uColour(v3f const v){
+static void shader_ball_uColour(v3f v){
glUniform3fv(_uniform_ball_uColour,1,v);
}
-static void shader_ball_uTexOffset(v2f const v){
+static void shader_ball_uTexOffset(v2f v){
glUniform2fv(_uniform_ball_uTexOffset,1,v);
}
static void shader_ball_register(void){
"\n"
" // Create texture coords\n"
" vec2 edge_safe_coords = a_co * 0.98 + 0.01;\n"
-" aTexCoords = (edge_safe_coords + uOffset.zw) * 0.25; \n"
+" vec2 tex_uv = (edge_safe_coords + uOffset.zw) * 0.25;\n"
+" tex_uv = vec2( tex_uv.x, 1.0-tex_uv.y );\n"
+" aTexCoords = tex_uv;\n"
"}\n"
""},
.fs =
static GLuint _uniform_button_uPv;
static GLuint _uniform_button_uTexMain;
static GLuint _uniform_button_uColour;
-static void shader_button_uOffset(v4f const v){
+static void shader_button_uOffset(v4f v){
glUniform4fv(_uniform_button_uOffset,1,v);
}
static void shader_button_uPv(m3x3f m){
static void shader_button_uTexMain(int i){
glUniform1i(_uniform_button_uTexMain,i);
}
-static void shader_button_uColour(v4f const v){
+static void shader_button_uColour(v4f v){
glUniform4fv(_uniform_button_uColour,1,v);
}
static void shader_button_register(void){
static void shader_post_blur_uTexMain(int i){
glUniform1i(_uniform_post_blur_uTexMain,i);
}
-static void shader_post_blur_uDir(v2f const v){
+static void shader_post_blur_uDir(v2f v){
glUniform2fv(_uniform_post_blur_uDir,1,v);
}
static void shader_post_blur_register(void){
static void shader_post_comp_uTexBloom(int i){
glUniform1i(_uniform_post_comp_uTexBloom,i);
}
-static void shader_post_comp_uComp(v2f const v){
+static void shader_post_comp_uComp(v2f v){
glUniform2fv(_uniform_post_comp_uComp,1,v);
}
static void shader_post_comp_register(void){
static GLuint _uniform_sprite_uPos;
static GLuint _uniform_sprite_uPv;
static GLuint _uniform_sprite_uTexMain;
-static void shader_sprite_uUv(v4f const v){
+static void shader_sprite_uUv(v4f v){
glUniform4fv(_uniform_sprite_uUv,1,v);
}
-static void shader_sprite_uPos(v3f const v){
+static void shader_sprite_uPos(v3f v){
glUniform3fv(_uniform_sprite_uPos,1,v);
}
static void shader_sprite_uPv(m3x3f m){
static void shader_tile_colour_uPv(m3x3f m){
glUniformMatrix3fv(_uniform_tile_colour_uPv,1,GL_FALSE,(float*)m);
}
-static void shader_tile_colour_uOffset(v3f const v){
+static void shader_tile_colour_uOffset(v3f v){
glUniform3fv(_uniform_tile_colour_uOffset,1,v);
}
-static void shader_tile_colour_uColour(v4f const v){
+static void shader_tile_colour_uColour(v4f v){
glUniform4fv(_uniform_tile_colour_uColour,1,v);
}
static void shader_tile_colour_register(void){
" // Create texture coords\n"
" vec2 random_offset = floor(hash_val * 4.0) * 0.25;\n"
" vec2 edge_safe_coords = a_co * 0.98 + 0.01;\n"
-" aTexCoords = vec4((edge_safe_coords + uOffset.zw) * 0.25, \n"
-" edge_safe_coords * 0.25 + random_offset );\n"
+" vec2 tex_uv = (edge_safe_coords + uOffset.zw) * 0.25;\n"
+" tex_uv = vec2( tex_uv.x, 1.0-tex_uv.y );\n"
+" aTexCoords = vec4( tex_uv, edge_safe_coords * 0.25 + random_offset );\n"
" aWorldCoords = worldpos.xy; \n"
"}\n"
""},
static GLuint _uniform_tile_main_uShadowing;
static GLuint _uniform_tile_main_uGlowA;
static GLuint _uniform_tile_main_uGlowB;
-static void shader_tile_main_uOffset(v4f const v){
+static void shader_tile_main_uOffset(v4f v){
glUniform4fv(_uniform_tile_main_uOffset,1,v);
}
static void shader_tile_main_uPv(m3x3f m){
static void shader_tile_main_uForeground(float f){
glUniform1f(_uniform_tile_main_uForeground,f);
}
-static void shader_tile_main_uMousePos(v2f const v){
+static void shader_tile_main_uMousePos(v2f v){
glUniform2fv(_uniform_tile_main_uMousePos,1,v);
}
-static void shader_tile_main_uColour(v4f const v){
+static void shader_tile_main_uColour(v4f v){
glUniform4fv(_uniform_tile_main_uColour,1,v);
}
-static void shader_tile_main_uShadowing(v3f const v){
+static void shader_tile_main_uShadowing(v3f v){
glUniform3fv(_uniform_tile_main_uShadowing,1,v);
}
-static void shader_tile_main_uGlowA(v3f const v){
+static void shader_tile_main_uGlowA(v3f v){
glUniform3fv(_uniform_tile_main_uGlowA,1,v);
}
-static void shader_tile_main_uGlowB(v3f const v){
+static void shader_tile_main_uGlowB(v3f v){
glUniform3fv(_uniform_tile_main_uGlowB,1,v);
}
static void shader_tile_main_register(void){
static GLuint _uniform_wire_uColour;
static GLuint _uniform_wire_uTime;
static GLuint _uniform_wire_uGlow;
-static void shader_wire_uStart(v3f const v){
+static void shader_wire_uStart(v3f v){
glUniform3fv(_uniform_wire_uStart,1,v);
}
-static void shader_wire_uEnd(v3f const v){
+static void shader_wire_uEnd(v3f v){
glUniform3fv(_uniform_wire_uEnd,1,v);
}
static void shader_wire_uPv(m3x3f m){
static void shader_wire_uTexMain(int i){
glUniform1i(_uniform_wire_uTexMain,i);
}
-static void shader_wire_uColour(v4f const v){
+static void shader_wire_uColour(v4f v){
glUniform4fv(_uniform_wire_uColour,1,v);
}
static void shader_wire_uTime(float f){