From: hgn Date: Fri, 17 May 2024 12:19:10 +0000 (+0100) Subject: adaptions for vg3.000 X-Git-Url: https://harrygodden.com/git/?a=commitdiff_plain;h=5a233469f45ee7cbdc89cb87956f9ef2989ad1b5;p=carveJwlIkooP6JGAAIwe30JlM.git adaptions for vg3.000 --- diff --git a/entity.h b/entity.h index 80f4df7..e1e52da 100644 --- a/entity.h +++ b/entity.h @@ -1,7 +1,7 @@ #pragma once #include "vg/vg_audio.h" -#include "vg/vg_imgui.h" +#include "vg/vg_ui/imgui.h" #include "model.h" typedef struct ent_spawn ent_spawn; diff --git a/font.h b/font.h index 34441ca..15ecde6 100644 --- a/font.h +++ b/font.h @@ -6,6 +6,7 @@ #include "shaders/scene_font.h" #include "world_render.h" #include "depth_compare.h" +#include "vg/vg_tex.h" #include enum efont_SRglyph{ diff --git a/gui.h b/gui.h index c1ce8d7..a0de270 100644 --- a/gui.h +++ b/gui.h @@ -2,7 +2,8 @@ #include "font.h" #include "input.h" #include "player.h" -#include "vg/vg_imgui.h" +#include "vg/vg_engine.h" +#include "vg/vg_ui/imgui.h" #define GUI_COL_DARK ui_opacity( 0x00000000, 0.7f ) #define GUI_COL_NORM ui_opacity( 0x00101010, 0.7f ) @@ -152,7 +153,7 @@ static void gui_draw(void) vg.time_frame_delta*2.0f ); ui_font_face( &vgf_default_title ); - ui_px height = vg_ui.font->ch + 16; + ui_px height = ui_current_font()->ch + 16; ui_rect lwr = { 0, vg.window_y - height, vg.window_x, height }; ui_px x = 0; @@ -180,7 +181,7 @@ static void gui_draw(void) u32 w; box[0] += 16; w = ui_text( box, buf, 1, k_ui_align_middle_left, fg ); - w *= vg_ui.font->sx; + w *= ui_current_font()->sx; bg[1].co[0] = x + w + 32; bg[2].co[0] = x + w + 32; x += w + 32; @@ -189,15 +190,16 @@ static void gui_draw(void) bg = ui_fill( box, ui_opacity( GUI_COL_NORM, opacity*0.7f ) ); box[0] += 8; w = ui_text( box, helper->text, 1, k_ui_align_middle_left, fg ); - w *= vg_ui.font->sx; + w *= ui_current_font()->sx; bg[1].co[0] = box[0] + w + 16; bg[2].co[0] = box[0] + w + 16; x += w + 32; } - vg_ui.frosting = gui.factive*0.015f; - ui_flush( k_ui_shader_colour, vg.window_x, vg.window_y ); - vg_ui.frosting = 0.0f; + ui_context *ctx = ui_current_context(); + ctx->frosting = gui.factive*0.015f; + ui_flush( k_ui_shader_colour ); + ctx->frosting = 0.0f; f64 loc_t = (vg.time_real - gui.location_time) / 5.0; @@ -210,11 +212,11 @@ static void gui_draw(void) ui_fill( box, ui_opacity( GUI_COL_NORM, 0.5f ) ); ui_text( box, gui.location, 1, k_ui_align_middle_center, 0 ); - vg_ui.colour[3] = o; - ui_flush( k_ui_shader_colour, vg.window_x, vg.window_y ); + ctx->colour[3] = o; + ui_flush( k_ui_shader_colour ); } - vg_ui.colour[3] = 1.0f; + ctx->colour[3] = 1.0f; ui_font_face( &vgf_default_small ); } diff --git a/menu.c b/menu.c index 279dbf5..f6ed4f7 100644 --- a/menu.c +++ b/menu.c @@ -51,7 +51,8 @@ bool menu_viewing_map(void) static void menu_decor_select( ui_rect rect ) { - ui_px b = vg_ui.font->sx, hb = b/2; + ui_context *ctx = ui_current_context(); + ui_px b = ctx->font->sx, hb = b/2; ui_rect a0 = { rect[0] - 20 - hb, rect[1] + rect[3]/2 - hb, b,b }, a1 = { rect[0] + rect[2] + 20 + hb, rect[1] + rect[3]/2 - hb, b,b }; @@ -61,7 +62,7 @@ static void menu_decor_select( ui_rect rect ) static void menu_standard_widget( ui_rect inout_panel, ui_rect rect, ui_px s ) { - ui_split( inout_panel, k_ui_axis_h, vg_ui.font->sy*s*2, + ui_split( inout_panel, k_ui_axis_h, ui_current_context()->font->sy*s*2, 8, rect, inout_panel ); } @@ -177,7 +178,8 @@ static bool menu_checkbox( ui_rect inout_panel, bool select, menu_standard_widget( inout_panel, rect, 1 ); ui_split( rect, k_ui_axis_v, -rect[3], 0, label, box ); - ui_text( label, str_label, k_ui_scale, k_ui_align_middle_left, 0 ); + ui_text( label, str_label, ui_current_context()->scale, + k_ui_align_middle_left, 0 ); enum ui_button_state state = k_ui_button_none; @@ -369,7 +371,7 @@ void menu_gui(void) if( vg_input.display_input_method == k_input_method_kbm ) { - vg_ui.wants_mouse = 1; + ui_capture_mouse(1); } if( skaterift.activity != k_skaterift_menu ) return; @@ -587,7 +589,7 @@ void menu_gui(void) * -------------------------------------------------------------------*/ ui_font_face( &vgf_default_title ); - ui_px height = vg_ui.font->ch + 16; + ui_px height = ui_current_context()->font->ch + 16; ui_rect topbar = { 0, 0, vg.window_x, height }; const char *opts[] = { @@ -710,7 +712,7 @@ void menu_gui(void) ui_px w = ui_text( (ui_rect){ x+8, y, 1000, height }, buf, 1, k_ui_align_middle_left, 0 ); - w *= vg_ui.font->sx; + w *= ui_current_context()->font->sx; x += w + 16; vs[1].co[0] = x + 8; @@ -742,7 +744,7 @@ void menu_gui(void) w = ui_text( (ui_rect){ x+16,y, 1000,height }, buf, 1, k_ui_align_middle_left, 0 ); - w = w*vg_ui.font->sx + 8*3; + w = w*ui_current_context()->font->sx + 8*3; x += w; if( button_down( k_srbind_mhub ) || @@ -1072,9 +1074,9 @@ void menu_gui(void) menu_draw: - vg_ui.frosting = 0.015f; - ui_flush( k_ui_shader_colour, vg.window_x, vg.window_y ); - vg_ui.frosting = 0.0f; + g_ui_ctx->frosting = 0.015f; + ui_flush( k_ui_shader_colour ); + g_ui_ctx->frosting = 0.0f; ui_font_face( &vgf_default_small ); } diff --git a/network.c b/network.c index fdec386..381a908 100644 --- a/network.c +++ b/network.c @@ -11,7 +11,7 @@ #include "world.h" #include "world_sfd.h" #include "world_routes.h" -#include "vg/vg_imgui.h" +#include "vg/vg_ui/imgui.h" #include "gui.h" #include "ent_region.h" #include "vg/vg_loader.h" @@ -374,11 +374,13 @@ void render_server_status_gui(void) { render_fb_bind( gpipeline.fb_workshop_preview, 0 ); + ui_set_screen( 128, 48 ); + /* HACK */ - vg_ui.cur_vert = 0; - vg_ui.cur_indice = 0; - vg_ui.vert_start = 0; - vg_ui.indice_start = 0; + g_ui_ctx->cur_vert = 0; + g_ui_ctx->cur_indice = 0; + g_ui_ctx->vert_start = 0; + g_ui_ctx->indice_start = 0; ui_rect r = { 0, 0, 128, 48 }; @@ -391,7 +393,7 @@ void render_server_status_gui(void) ui_fill( r, bg ); ui_text( r, buf, 1, k_ui_align_center, 0 ); - ui_flush( k_ui_shader_colour, 128, 48 ); + ui_flush( k_ui_shader_colour ); skaterift.rt_textures[ k_skaterift_rt_server_status ] = gpipeline.fb_workshop_preview->attachments[0].id; diff --git a/player_common.c b/player_common.c index 6ab378d..9a03e19 100644 --- a/player_common.c +++ b/player_common.c @@ -269,7 +269,7 @@ void player__cam_iterate(void) void player_look( v3f angles, float speed ) { - if( vg_ui.wants_mouse ) return; + if( g_ui_ctx->wants_mouse ) return; angles[2] = 0.0f; diff --git a/player_remote.c b/player_remote.c index 43c5607..592a424 100644 --- a/player_remote.c +++ b/player_remote.c @@ -872,7 +872,7 @@ static void chat_box( ui_point tag_root, f64 time, const char *message ) ui_rect wr; wr[2] = ui_text_line_width( message ) + 8; - wr[3] = vg_ui.font->ch + 2; + wr[3] = g_ui_ctx->font->ch + 2; wr[0] = tag_root[0]-(wr[2]/2); wr[1] = tag_root[1] - wr[3] - 8; @@ -915,7 +915,7 @@ static void remote_player_nametag( ui_point tag_root, for( int i=0; i<3; i ++ ){ if( player->medals[i] ){ ui_rect col = { wr[0] + (f32)cols*w, wr[1] + wr[3], w, - vg_ui.font->ch }; + g_ui_ctx->font->ch }; vg_strnull( &str, buf, 32 ); #if 0 @@ -1032,7 +1032,7 @@ void remote_players_imgui_lobby(void) void remote_players_imgui_world( world_instance *world, m4x4f pv, f32 max_dist, int geo_cull ) { - ui_flush( k_ui_shader_colour, vg.window_x, vg.window_y ); + ui_flush( k_ui_shader_colour ); for( u32 i=0; iopacity; - ui_flush( k_ui_shader_colour, vg.window_x, vg.window_y ); + g_ui_ctx->colour[3] = player->opacity; + ui_flush( k_ui_shader_colour ); } } - vg_ui.colour[3] = 1.0f; + g_ui_ctx->colour[3] = 1.0f; remote_player_world_gui( pv, localplayer.rb.co, NULL ); - ui_flush( k_ui_shader_colour, vg.window_x, vg.window_y ); + ui_flush( k_ui_shader_colour ); } static void chat_escape(void){ diff --git a/player_replay.c b/player_replay.c index 50ffc5c..2bd1ab2 100644 --- a/player_replay.c +++ b/player_replay.c @@ -846,7 +846,7 @@ static void replay_fly_edit_keyframe( replay_keyframe *kf ) } /* move freecam */ - vg_ui.wants_mouse = 0; + ui_capture_mouse(0); freecam_preupdate(); if( vg_getkey(SDLK_q) ) @@ -967,7 +967,7 @@ void skaterift_replay_imgui(void) ui_text( timeline, "0s", 1, k_ui_align_middle_right, 0 ); if( !player_replay.editor_mode ) return; - vg_ui.wants_mouse = 1; + ui_capture_mouse(1); ui_rect panel = { 0, timeline[3] + 20, 200, 400 }; ui_fill( panel, ui_opacity( ui_colour(k_ui_bg), 0.5f ) ); @@ -984,7 +984,7 @@ void skaterift_replay_imgui(void) ui_rect script = { 0, height + 2, vg.window_x, 16 }; ui_fill( script, ui_colour( k_ui_bg ) ); - f64 mouse_t = start + ((f64)vg_ui.mouse[0] / (f64)vg.window_x)*len; + f64 mouse_t = start + ((f64)g_ui_ctx->mouse[0] / (f64)vg.window_x)*len; /* keyframe draw and select */ bool absorb_by_keyframe = 0; @@ -1007,7 +1007,7 @@ void skaterift_replay_imgui(void) /* keyframe selection */ ui_rect tag = { x, script[1], 16, 16 }; - if( ui_inside_rect( tag, vg_ui.mouse ) ) + if( ui_inside_rect( tag, g_ui_ctx->mouse ) ) { absorb_by_keyframe = 1; @@ -1036,7 +1036,7 @@ void skaterift_replay_imgui(void) bool pos_correct = 0; - if( ui_inside_rect( dragbar, vg_ui.mouse_click ) ) + if( ui_inside_rect( dragbar, g_ui_ctx->mouse_click ) ) { if( ui_clicking( UI_MOUSE_LEFT ) ) { @@ -1062,15 +1062,15 @@ void skaterift_replay_imgui(void) if( pos_correct ) { - tag[0] = vg_ui.mouse[0]-8; + tag[0] = g_ui_ctx->mouse[0]-8; tray[0] = tag[0]+8-32; dragbar[0] = tray[0]+16; } } - if( ui_inside_rect( dragbar, vg_ui.mouse ) ) + if( ui_inside_rect( dragbar, g_ui_ctx->mouse ) ) { - vg_ui.cursor = k_ui_cursor_hand; + g_ui_ctx->cursor = k_ui_cursor_hand; } if( !pos_correct ) @@ -1111,11 +1111,11 @@ void skaterift_replay_imgui(void) } /* adding keyframes */ - if( ui_inside_rect( script, vg_ui.mouse ) ) + if( ui_inside_rect( script, g_ui_ctx->mouse ) ) { - vg_ui.cursor = k_ui_cursor_hand; + g_ui_ctx->cursor = k_ui_cursor_hand; - ui_rect cursor = { vg_ui.mouse[0], script[1], 4, 16 }; + ui_rect cursor = { g_ui_ctx->mouse[0], script[1], 4, 16 }; ui_fill( cursor, ui_colour( k_ui_fg ) ); if( !absorb_by_keyframe && ui_click_down( UI_MOUSE_LEFT ) ) @@ -1143,12 +1143,12 @@ void skaterift_replay_imgui(void) /* timeline scrub */ bool start_in_timeline = ui_clicking(UI_MOUSE_LEFT) && - ui_inside_rect(timeline, vg_ui.mouse_click); - if( (ui_inside_rect( timeline, vg_ui.mouse )) || start_in_timeline ) + ui_inside_rect(timeline, g_ui_ctx->mouse_click); + if( (ui_inside_rect( timeline, g_ui_ctx->mouse )) || start_in_timeline ) { - ui_rect cursor = { vg_ui.mouse[0], timeline[1], 4, timeline[3] }; + ui_rect cursor = { g_ui_ctx->mouse[0], timeline[1], 4, timeline[3] }; ui_fill( cursor, ui_colour( k_ui_fg ) ); - vg_ui.cursor = k_ui_cursor_ibeam; + g_ui_ctx->cursor = k_ui_cursor_ibeam; if( ui_clicking( UI_MOUSE_LEFT ) && start_in_timeline ) { diff --git a/skaterift.c b/skaterift.c index e88f7e3..c7b8688 100644 --- a/skaterift.c +++ b/skaterift.c @@ -749,7 +749,7 @@ void vg_gui(void) ui_rect screen = { 0, 0, vg.window_x, vg.window_y }; ui_rect panel = { 0, 0, 1000, 700 }; ui_rect_center( screen, panel ); - vg_ui.wants_mouse = 1; + ui_capture_mouse( 1 ); ui_fill( panel, ui_colour( k_ui_bg+1 ) ); ui_outline( panel, 1, ui_colour( k_ui_bg+7 ), 0 ); @@ -761,9 +761,9 @@ void vg_gui(void) if( k_light_editor ) imgui_world_light_edit( world_current_instance() ); - - vg_ui.tex_bg = gpipeline.fb_main->attachments[0].id; - render_fb_inverse_ratio( gpipeline.fb_main, vg_ui.bg_inverse_ratio ); + + g_ui_ctx->tex_bg = gpipeline.fb_main->attachments[0].id; + render_fb_inverse_ratio( gpipeline.fb_main, g_ui_ctx->bg_inverse_ratio ); menu_gui(); player__im_gui(); diff --git a/workshop.c b/workshop.c index 3bd2f16..84ea841 100644 --- a/workshop.c +++ b/workshop.c @@ -1088,8 +1088,8 @@ static void workshop_form_gui_draw_preview( ui_rect img_box ){ return; } - int hover = ui_inside_rect( img_box, vg_ui.mouse ), - target = ui_inside_rect( img_box, vg_ui.mouse_click ); + int hover = ui_inside_rect( img_box, g_ui_ctx->mouse ), + target = ui_inside_rect( img_box, g_ui_ctx->mouse_click ); if( ui_click_down(UI_MOUSE_MIDDLE) && target ){ v3_copy( workshop_form.view_offset, @@ -1101,8 +1101,8 @@ static void workshop_form_gui_draw_preview( ui_rect img_box ){ } if( ui_clicking(UI_MOUSE_MIDDLE) && target ){ - v2f delta = { vg_ui.mouse[0]-vg_ui.mouse_click[0], - vg_ui.mouse[1]-vg_ui.mouse_click[1] }; + v2f delta = { g_ui_ctx->mouse[0]-g_ui_ctx->mouse_click[0], + g_ui_ctx->mouse[1]-g_ui_ctx->mouse_click[1] }; float *begin = workshop_form.view_offset_begin, *offset = workshop_form.view_offset; @@ -1111,8 +1111,8 @@ static void workshop_form_gui_draw_preview( ui_rect img_box ){ workshop_form.view_changed = 1; } else if( ui_clicking(UI_MOUSE_LEFT) && target ){ - v2f delta = { vg_ui.mouse[0]-vg_ui.mouse_click[0], - vg_ui.mouse[1]-vg_ui.mouse_click[1] }; + v2f delta = { g_ui_ctx->mouse[0]-g_ui_ctx->mouse_click[0], + g_ui_ctx->mouse[1]-g_ui_ctx->mouse_click[1] }; v2f angles; v2_muladds( workshop_form.view_angles_begin, delta, 0.002f, angles); @@ -1391,7 +1391,7 @@ void workshop_form_gui(void) ui_rect screen = { 0, 0, vg.window_x, vg.window_y }; ui_rect window = { 0, 0, 1000, 700 }; ui_rect_center( screen, window ); - vg_ui.wants_mouse = 1; + g_ui_ctx->wants_mouse = 1; ui_fill( window, ui_colour( k_ui_bg+1 ) ); ui_outline( window, 1, ui_colour( k_ui_bg+7 ), 0 ); diff --git a/world_render.c b/world_render.c index ea58235..31fe1be 100644 --- a/world_render.c +++ b/world_render.c @@ -1356,7 +1356,7 @@ void imgui_world_light_edit( world_instance *world ) ui_fill( panel, ui_colour( k_ui_bg+1 ) ); ui_outline( panel, 1, ui_colour( k_ui_bg+7 ), 0 ); ui_rect_pad( panel, (ui_px[2]){ 8, 8 } ); - vg_ui.wants_mouse = 1; + ui_capture_mouse(1); static i32 option_to_edit = 0; ui_enum( panel, "option", skybox_setting_options, 5, &option_to_edit );