#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;
#include "shaders/scene_font.h"
#include "world_render.h"
#include "depth_compare.h"
+#include "vg/vg_tex.h"
#include <string.h>
enum efont_SRglyph{
#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 )
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;
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;
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;
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 );
}
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 };
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 );
}
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;
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;
* -------------------------------------------------------------------*/
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[] = {
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;
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 ) ||
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 );
}
#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"
{
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 };
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;
void player_look( v3f angles, float speed )
{
- if( vg_ui.wants_mouse ) return;
+ if( g_ui_ctx->wants_mouse ) return;
angles[2] = 0.0f;
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;
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
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];
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){
}
/* move freecam */
- vg_ui.wants_mouse = 0;
+ ui_capture_mouse(0);
freecam_preupdate();
if( vg_getkey(SDLK_q) )
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 ) );
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;
/* 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;
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 ) )
{
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 )
}
/* 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 ) )
/* 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 )
{
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 );
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();
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,
}
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;
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);
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 );
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 );