replay_clear( &player_replay.local );
}
-void skaterift_replay_debug_info(void)
+void skaterift_replay_debug_info( ui_context *ctx )
{
- player__debugtext( 2, "replay info" );
+ player__debugtext( ctx, 2, "replay info" );
replay_buffer *replay = &player_replay.local;
u32 head = 0,
if( replay->tail ) tail = (void *)replay->tail - replay->data;
if( replay->head ) head = (void *)replay->head - replay->data;
- player__debugtext( 1, "head @%u | tail @%u\n", head, tail );
+ player__debugtext( ctx, 1, "head @%u | tail @%u\n", head, tail );
- if( replay->statehead ){
- for( u32 i=0; i<k_replay_framedata_rows; i++ ){
- player__debugtext( 1, "[%u]: [%hu, %hu]\n", i,
+ if( replay->statehead )
+ {
+ for( u32 i=0; i<k_replay_framedata_rows; i++ )
+ {
+ player__debugtext( ctx, 1, "[%u]: [%hu, %hu]\n", i,
replay->statehead->data_table[i][0],
replay->statehead->data_table[i][1] );
}
u32 state = (void *)replay->statehead - replay->data;
- player__debugtext( 1, "gs @%u\n", state );
- player__debugtext( 1, "gamestate_size: %hu\n",
+ player__debugtext( ctx, 1, "gs @%u\n", state );
+ player__debugtext( ctx, 1, "gamestate_size: %hu\n",
replay->statehead->data_table[k_replay_framedata_gamestate][1] );
}
else
- player__debugtext( 1, "gs @NULL\n" );
+ player__debugtext( ctx, 1, "gs @NULL\n" );
f64 start = replay->cursor,
end = replay->cursor;
f64 cur = replay->cursor - start,
len = end - start;
- player__debugtext( 1, "cursor: %.2fs / %.2fs\n", cur, len );
+ player__debugtext( ctx, 1, "cursor: %.2fs / %.2fs\n", cur, len );
}
static int _keyframe_cmp( const void *p1, const void *p2 )
sizeof(replay_keyframe), _keyframe_cmp );
}
-static void replay_fly_edit_keyframe( replay_keyframe *kf )
+static void replay_fly_edit_keyframe( ui_context *ctx, replay_keyframe *kf )
{
- if( ui_click_down( UI_MOUSE_LEFT ) )
+ if( ui_click_down( ctx, UI_MOUSE_LEFT ) )
{
/* init freecam */
v3_copy( kf->cam.pos, player_replay.replay_freecam.pos );
}
/* move freecam */
- ui_capture_mouse(0);
+ ui_capture_mouse( ctx, 0 );
freecam_preupdate();
if( vg_getkey(SDLK_q) )
kf->cam.fov = skaterift.cam.fov;
}
-void skaterift_replay_imgui(void)
+void skaterift_replay_imgui( ui_context *ctx )
{
if( skaterift.activity != k_skaterift_replay ) return;
if( player_replay.editor_mode )
{
- u32 colour = ui_opacity( ui_colour(k_ui_fg), 0.3333f );
+ u32 colour = ui_opacity( ui_colour(ctx,k_ui_fg), 0.3333f );
ui_rect cx = { vg.window_x/2, 0, 1, vg.window_y },
cy = { 0, vg.window_y/2, vg.window_x, 1 };
- ui_fill( cx, colour );
- ui_fill( cy, colour );
+ ui_fill( ctx, cx, colour );
+ ui_fill( ctx, cy, colour );
}
replay_buffer *replay = &player_replay.local;
ui_px height = 32,
cwidth = 2;
ui_rect timeline = { 0, 0, vg.window_x, height };
- ui_fill( timeline, ui_colour( k_ui_bg ) );
+ ui_fill( ctx, timeline, ui_colour( ctx, k_ui_bg ) );
/* cursor frame block */
if( replay->cursor_frame )
s = (replay->cursor_frame->time - start) / len;
ui_rect box = { s*(f64)vg.window_x, 0,
VG_MAX(4,(ui_px)(l*vg.window_x)), timeline[3]+2 };
- ui_fill( box, ui_colour( k_ui_bg+4 ) );
+ ui_fill( ctx, box, ui_colour( ctx, k_ui_bg+4 ) );
}
}
/* cursor */
ui_rect cusor = { cur * (f64)vg.window_x - (cwidth/2), 0,
cwidth, (player_replay.editor_mode? 0: 16) + timeline[3] };
- ui_fill( cusor, ui_colour( k_ui_bg+7 ) );
+ ui_fill( ctx, cusor, ui_colour( ctx, k_ui_bg+7 ) );
/* latest state marker */
if( replay->statehead )
{
f64 t = (replay->statehead->time - start) / len;
ui_rect tag = { t*(f64)vg.window_x, 0, 2, timeline[3]+8 };
- ui_fill( tag, ui_colour( k_ui_green+k_ui_brighter ) );
+ ui_fill( ctx, tag, ui_colour( ctx, k_ui_green+k_ui_brighter ) );
}
/* previous state marker */
{
f64 t = (prev->time - start) / len;
ui_rect tag = { t*(f64)vg.window_x, 0, 2, timeline[3]+8 };
- ui_fill( tag, ui_colour( k_ui_yellow+k_ui_brighter ) );
+ ui_fill( ctx, tag, ui_colour( ctx, k_ui_yellow+k_ui_brighter ) );
}
snprintf( buffer, 128, "-%.2fs (F1: Edit replay)", (end-replay->cursor) );
- ui_text( timeline, buffer, 1, k_ui_align_middle_left, 0 );
- ui_text( timeline, "0s", 1, k_ui_align_middle_right, 0 );
+ ui_text( ctx, timeline, buffer, 1, k_ui_align_middle_left, 0 );
+ ui_text( ctx, timeline, "0s", 1, k_ui_align_middle_right, 0 );
if( !player_replay.editor_mode ) return;
- ui_capture_mouse(1);
+ ui_capture_mouse( ctx, 1 );
ui_rect panel = { 0, timeline[3] + 20, 200, 400 };
- ui_fill( panel, ui_opacity( ui_colour(k_ui_bg), 0.5f ) );
+ ui_fill( ctx, panel, ui_opacity( ui_colour( ctx, k_ui_bg ), 0.5f ) );
ui_rect_pad( panel, (ui_px[2]){4,4} );
- if( ui_button( panel,
+ if( ui_button( ctx, panel,
(player_replay.replay_control == k_replay_control_play)?
"Pause (space)": "Play (space)" ) == k_ui_button_click )
{
/* script bar */
ui_rect script = { 0, height + 2, vg.window_x, 16 };
- ui_fill( script, ui_colour( k_ui_bg ) );
-
- f64 mouse_t = start + ((f64)g_ui_ctx->mouse[0] / (f64)vg.window_x)*len;
+ ui_fill( ctx, script, ui_colour( ctx, k_ui_bg ) );
+ f64 mouse_t = start + ((f64)ctx->mouse[0] / (f64)vg.window_x)*len;
/* keyframe draw and select */
bool absorb_by_keyframe = 0;
if( i )
{
ui_rect con = { lx, script[1]+7, x-lx, 1 };
- ui_fill( con, ui_colour(k_ui_blue) );
+ ui_fill( ctx, con, ui_colour( ctx, k_ui_blue ) );
vg_line( kf->cam.pos, player_replay.keyframes[i-1].cam.pos, VG__BLUE );
}
/* keyframe selection */
ui_rect tag = { x, script[1], 16, 16 };
- if( ui_inside_rect( tag, g_ui_ctx->mouse ) )
+ if( ui_inside_rect( tag, ctx->mouse ) )
{
absorb_by_keyframe = 1;
- if( ui_click_down( UI_MOUSE_LEFT ) )
+ if( ui_click_down( ctx, UI_MOUSE_LEFT ) )
{
if( player_replay.active_keyframe != i )
{
}
else
{
- ui_outline( tag, 1, ui_colour(k_ui_fg), 0 );
+ ui_outline( ctx, tag, 1, ui_colour(ctx, k_ui_fg), 0 );
}
}
/* edit controls */
- u32 drag_colour = ui_opacity( ui_colour(k_ui_bg+2), 0.5f );
+ u32 drag_colour = ui_opacity( ui_colour(ctx, k_ui_bg+2), 0.5f );
if( i == player_replay.active_keyframe )
{
- ui_outline( tag, 2, ui_colour(k_ui_fg), 0 );
+ ui_outline( ctx, tag, 2, ui_colour(ctx, k_ui_fg), 0 );
ui_rect tray = { tag[0]+8-32, tag[1]+16+2, 64, 16 };
ui_rect dragbar = { tray[0]+16, tray[1], 32, 16 };
bool pos_correct = 0;
- if( ui_inside_rect( dragbar, g_ui_ctx->mouse_click ) )
+ if( ui_inside_rect( dragbar, ctx->mouse_click ) )
{
- if( ui_clicking( UI_MOUSE_LEFT ) )
+ if( ui_clicking( ctx, UI_MOUSE_LEFT ) )
{
- drag_colour = ui_opacity( ui_colour(k_ui_fg), 0.5f );
+ drag_colour = ui_opacity( ui_colour(ctx,k_ui_fg), 0.5f );
pos_correct = 1;
replay_seek( &player_replay.local, mouse_t );
}
- else if( ui_click_up( UI_MOUSE_LEFT ) )
+ else if( ui_click_up( ctx, UI_MOUSE_LEFT ) )
{
pos_correct = 1;
kf->time = mouse_t;
if( pos_correct )
{
- tag[0] = g_ui_ctx->mouse[0]-8;
+ tag[0] = ctx->mouse[0]-8;
tray[0] = tag[0]+8-32;
dragbar[0] = tray[0]+16;
}
}
- if( ui_inside_rect( dragbar, g_ui_ctx->mouse ) )
+ if( ui_inside_rect( dragbar, ctx->mouse ) )
{
- g_ui_ctx->cursor = k_ui_cursor_hand;
+ ctx->cursor = k_ui_cursor_hand;
}
if( !pos_correct )
- ui_fill( tray, ui_opacity( ui_colour(k_ui_bg+2), 0.5f ) );
+ {
+ ui_fill( ctx, tray,
+ ui_opacity( ui_colour( ctx, k_ui_bg+2 ), 0.5f ) );
+ }
- ui_fill( dragbar, drag_colour );
- ui_text( dragbar, ":::", 1, k_ui_align_middle_center, 0 );
+ ui_fill( ctx, dragbar, drag_colour );
+ ui_text( ctx, dragbar, ":::", 1, k_ui_align_middle_center, 0 );
if( !pos_correct )
{
ui_rect btn = { tray[0], tray[1], 16, 16 };
- if( ui_button_text( btn, "X", 1 ) == k_ui_button_click )
+ if( ui_button_text( ctx, btn, "X", 1 ) == k_ui_button_click )
{
for( u32 j=i; j<player_replay.keyframe_count-1; j ++ )
player_replay.keyframes[j] = player_replay.keyframes[j+1];
k_ui_button_holding_outside |
k_ui_button_click;
- if( ui_button_text( btn1, "E", 1 ) & mask_using )
+ if( ui_button_text( ctx, btn1, "E", 1 ) & mask_using )
{
- replay_fly_edit_keyframe( kf );
- ui_set_mouse_pos( btn1[0]+8, btn1[1]+8 );
+ replay_fly_edit_keyframe( ctx, kf );
+ vg_ui_set_mouse_pos( btn1[0]+8, btn1[1]+8 );
}
}
}
- ui_fill( tag, ui_colour(k_ui_blue) );
+ ui_fill( ctx, tag, ui_colour( ctx, k_ui_blue ) );
lx = x;
}
/* adding keyframes */
- if( ui_inside_rect( script, g_ui_ctx->mouse ) )
+ if( ui_inside_rect( script, ctx->mouse ) )
{
- g_ui_ctx->cursor = k_ui_cursor_hand;
+ ctx->cursor = k_ui_cursor_hand;
- ui_rect cursor = { g_ui_ctx->mouse[0], script[1], 4, 16 };
- ui_fill( cursor, ui_colour( k_ui_fg ) );
+ ui_rect cursor = { ctx->mouse[0], script[1], 4, 16 };
+ ui_fill( ctx, cursor, ui_colour( ctx, k_ui_fg ) );
- if( !absorb_by_keyframe && ui_click_down( UI_MOUSE_LEFT ) )
+ if( !absorb_by_keyframe && ui_click_down( ctx, UI_MOUSE_LEFT ) )
{
u32 max = vg_list_size( player_replay.keyframes );
if( player_replay.keyframe_count == max )
{
- ui_start_modal( "Maximum keyframes reached", UI_MODAL_BAD );
+ ui_start_modal( ctx, "Maximum keyframes reached", UI_MODAL_BAD );
}
else
{
/* timeline scrub */
bool start_in_timeline =
- ui_clicking(UI_MOUSE_LEFT) &&
- ui_inside_rect(timeline, g_ui_ctx->mouse_click);
- if( (ui_inside_rect( timeline, g_ui_ctx->mouse )) || start_in_timeline )
+ ui_clicking(ctx, UI_MOUSE_LEFT) &&
+ ui_inside_rect(timeline, ctx->mouse_click);
+ if( (ui_inside_rect( timeline, ctx->mouse )) || start_in_timeline )
{
- ui_rect cursor = { g_ui_ctx->mouse[0], timeline[1], 4, timeline[3] };
- ui_fill( cursor, ui_colour( k_ui_fg ) );
- g_ui_ctx->cursor = k_ui_cursor_ibeam;
+ ui_rect cursor = { ctx->mouse[0], timeline[1], 4, timeline[3] };
+ ui_fill( ctx, cursor, ui_colour( ctx, k_ui_fg ) );
+ ctx->cursor = k_ui_cursor_ibeam;
- if( ui_clicking( UI_MOUSE_LEFT ) && start_in_timeline )
+ if( ui_clicking( ctx, UI_MOUSE_LEFT ) && start_in_timeline )
{
replay_seek( &player_replay.local, mouse_t );
player_replay.active_keyframe = -1;
}
}
- if( ui_button( panel, "Clear keyframes" ) == k_ui_button_click )
+ if( ui_button( ctx, panel, "Clear keyframes" ) == k_ui_button_click )
{
player_replay.keyframe_count = 0;
}
- if( (ui_button( panel, "Hide UI (F2)" ) == k_ui_button_click) )
+ if( (ui_button( ctx, panel, "Hide UI (F2)" ) == k_ui_button_click) )
{
player_replay.show_ui ^= 0x1;
}
k_ui_button_holding_outside |
k_ui_button_click;
- if( ui_button( panel, "Edit cam" ) & mask_using )
+ if( ui_button( ctx, panel, "Edit cam" ) & mask_using )
{
- replay_fly_edit_keyframe( kf );
+ replay_fly_edit_keyframe( ctx, kf );
}
}
- ui_info( panel, "World settings" );
+ ui_info( ctx, panel, "World settings" );
f32 new_time = world_current_instance()->time;
- if( ui_slider( panel, "Time of day", 0, 1, &new_time ) )
+ if( ui_slider( ctx, panel, "Time of day", 0, 1, &new_time ) )
{
world_current_instance()->time = new_time;
}
- ui_info( panel, "" );
- if( ui_button( panel, "Exit editor (F1)" ) == k_ui_button_click )
+ ui_info( ctx, panel, "" );
+ if( ui_button( ctx, panel, "Exit editor (F1)" ) == k_ui_button_click )
{
player_replay.editor_mode = 0;
replay_show_helpers();