adaptions for vg3.000
authorhgn <hgodden00@gmail.com>
Fri, 17 May 2024 12:19:10 +0000 (13:19 +0100)
committerhgn <hgodden00@gmail.com>
Fri, 17 May 2024 12:19:10 +0000 (13:19 +0100)
entity.h
font.h
gui.h
menu.c
network.c
player_common.c
player_remote.c
player_replay.c
skaterift.c
workshop.c
world_render.c

index 80f4df7573fc7b62c440b9ba2cd29e4af024ddc4..e1e52da3c56793a175c310304c7877034c340483 100644 (file)
--- 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 34441ca3071f1913169dba9603d3f60d40b4c3f9..15ecde6de3bd1b18ebc61e2506411b23477180bc 100644 (file)
--- 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 <string.h>
 
 enum efont_SRglyph{
diff --git a/gui.h b/gui.h
index c1ce8d71a41ea81120b6c0767e56664c41a10441..a0de270db36cb7f9dbb0991c7b71fb9d70839a15 100644 (file)
--- 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 279dbf5a68dfb2e2ae469697d795b74aedbd3be5..f6ed4f7de84c9eb78f3f5f44f505ba56d02f8b8e 100644 (file)
--- 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 );
 }
index fdec386ccd62f0e884414ea860f5f28c4df67612..381a908bb59a64ed5151618ab84a9290c70ac519 100644 (file)
--- 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;
index 6ab378d6039d8317ea3cbdc774a7c9bb168f4155..9a03e19134fe2827e98f584716ad59ab25b24a2c 100644 (file)
@@ -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;
 
index 43c56079cd436123f39f638e8f4706aa7e6581f4..592a42420552a0be367a7e93e9acd38b99570d31 100644 (file)
@@ -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; i<NETWORK_MAX_PLAYERS; i++ ){
       struct network_player *player = &netplayers.list[i];
@@ -1078,15 +1078,15 @@ void remote_players_imgui_world( world_instance *world, m4x4f pv,
          
          remote_player_world_gui( pv, co, player );
 
-         vg_ui.colour[3] = player->opacity;
-         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){
index 50ffc5ca564a7a8af2743ddedbe536c2fe044356..2bd1ab22c8cf889c5d64720c235f3f69a7682e6d 100644 (file)
@@ -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 )
       {
index e88f7e345ae72434520f8b7e9bd13b31c37d9069..c7b8688e4023c6d881ee4eb509e6b1968646b881 100644 (file)
@@ -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();
index 3bd2f166643f81bf4c7d3a681dcb8d15c03c8abc..84ea8415a3adec5d3447d656b9cad01951b1b736 100644 (file)
@@ -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 );
index ea582356c4cee9d70199e4b94ac9739cd18fcc73..31fe1beb452c15c12813ff7e4772bf6f5cc33b28 100644 (file)
@@ -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 );