1 static void sfx_internal_debug_overlay(void)
10 u32 buffer_length
, clip_start
, clip_end
;
12 infos
[ SFX_MAX_SYSTEMS
];
15 MUTEX_LOCK( sfx_mux_t01
);
17 num_systems
= sfx_sys_len
;
19 for( int i
= 0; i
< sfx_sys_len
; i
++ )
21 sfx_system
*sys
= sfx_sys
+ i
;
22 struct sound_info
*snd
= &infos
[ i
];
24 snd
->signal
= sys
->signal_average
;
25 snd
->name
= sys
->name
;
26 snd
->cursor
= sys
->cur
;
27 snd
->flags
= sys
->flags
;
29 if( sys
->thread_clone
)
31 snd
->clip_start
= sys
->thread_clone
->clip_start
;
32 snd
->clip_end
= sys
->thread_clone
->clip_end
;
33 snd
->buffer_length
= sys
->thread_clone
->buffer_length
;
38 snd
->clip_end
= sys
->end
;
39 snd
->buffer_length
= sys
->end
;
43 MUTEX_UNLOCK( sfx_mux_t01
);
48 ui_begin( &ui_global_ctx
, vg_window_x
, vg_window_y
);
50 // TODO: Find a more elegent form for this
52 if( vg_get_button( "primary" ) ) mouse_state
= 2;
53 if( vg_get_button_down( "primary" ) ) mouse_state
= 1;
54 if( vg_get_button_up( "primary" ) ) mouse_state
= 3;
56 ui_set_mouse( &ui_global_ctx
, vg_mouse
[0], vg_mouse
[1], mouse_state
);
59 for( int i
= 0; i
< num_systems
; i
++ )
61 ui_global_ctx
.cursor
[2] = 150;
62 ui_global_ctx
.cursor
[3] = 12;
64 u32 alpha
= (infos
[i
].flags
& SFX_FLAG_GHOST
)? 0x44000000: 0xff000000;
66 ui_new_node( &ui_global_ctx
);
68 ui_fill_rect( &ui_global_ctx
, ui_global_ctx
.cursor
, 0x00333333 | alpha
);
70 ui_px baseline
= ui_global_ctx
.cursor
[0];
71 ui_px width_block_1
= (ui_px
)(((float)infos
[i
].clip_start
/ (float)infos
[i
].buffer_length
) * 150.0f
);
72 ui_px width_block_2
= (ui_px
)(((float)(infos
[i
].buffer_length
-infos
[i
].clip_end
) / (float)infos
[i
].buffer_length
) * 150.0f
);
74 ui_global_ctx
.cursor
[2] = width_block_1
;
75 ui_fill_rect( &ui_global_ctx
, ui_global_ctx
.cursor
, 0x77ffffff );
77 ui_global_ctx
.cursor
[2] = width_block_2
;
78 ui_align_right( &ui_global_ctx
);
79 ui_fill_rect( &ui_global_ctx
, ui_global_ctx
.cursor
, 0x77ffffff );
83 ui_global_ctx
.cursor
[2] = 2;
84 ui_global_ctx
.cursor
[0] = baseline
+ (ui_px
)(((float)infos
[i
].cursor
/ (float)infos
[i
].buffer_length
) * 150.0f
);
85 ui_fill_rect( &ui_global_ctx
, ui_global_ctx
.cursor
, 0xffffffff );
87 ui_global_ctx
.cursor
[0] = baseline
+ 2;
88 ui_global_ctx
.cursor
[1] += 2;
89 ui_text( &ui_global_ctx
, infos
[i
].name
, 1, 0 );
91 ui_end_down( &ui_global_ctx
);
92 ui_global_ctx
.cursor
[1] += 1;
95 ui_resolve( &ui_global_ctx
);
97 m3x3f view
= M3X3_IDENTITY
;
98 m3x3_translate( view
, (v3f
){ -1.0f
, 1.0f
, 0.0f
} );
99 m3x3_scale( view
, (v3f
){ 1.0f
/((float)vg_window_x
*0.5f
), -1.0f
/((float)vg_window_y
*0.5f
), 1.0f
} );
100 vg_lines_drawall( (float*)view
);
102 ui_draw( &ui_global_ctx
);