We need to turn this into a little bit like html, we need to add divs and ids so that we can grab oids of the objects and then do operations on them, because right now we have ways to get things, but no ways of getting them back
Since rendering techniques may change, the ui class simply gives a way to export the geometry required to render the ui, in the cpp toolbox context then rendering and processing the ui can be put into a function like this:
if (mouse_just_clicked) {
}
process_key_pressed_this_tick(curr_ui);
batcher.absolute_position_with_colored_vertex_shader_batcher.queue_draw(
cb.id, cb.ivpsc.indices, cb.ivpsc.xyz_positions, cb.ivpsc.rgb_colors,
cb.modified_signal.has_just_changed());
}
batcher.transform_v_with_signed_distance_field_text_shader_batcher.queue_draw(
tb.id, tb.text_drawing_data.indices, tb.text_drawing_data.xyz_positions,
tb.text_drawing_data.texture_coordinates);
batcher.absolute_position_with_colored_vertex_shader_batcher.queue_draw(
tb.id, tb.background_ivpsc.indices, tb.background_ivpsc.xyz_positions, tb.background_ivpsc.rgb_colors,
tb.modified_signal.has_just_changed());
}
batcher.transform_v_with_signed_distance_field_text_shader_batcher.queue_draw(
cr.id, cr.text_drawing_data.indices, cr.text_drawing_data.xyz_positions,
cr.text_drawing_data.texture_coordinates);
batcher.absolute_position_with_colored_vertex_shader_batcher.queue_draw(
cr.id, cr.ivpsc.indices, cr.ivpsc.xyz_positions, cr.ivpsc.rgb_colors,
cr.modified_signal.has_just_changed());
}
batcher.transform_v_with_signed_distance_field_text_shader_batcher.queue_draw(
ib.id, ib.text_drawing_data.indices, ib.text_drawing_data.xyz_positions,
ib.text_drawing_data.texture_coordinates, ib.modified_signal.has_just_changed());
batcher.absolute_position_with_colored_vertex_shader_batcher.queue_draw(
ib.id, ib.background_ivpsc.indices, ib.background_ivpsc.xyz_positions, ib.background_ivpsc.rgb_colors,
ib.modified_signal.has_just_changed());
}
batcher.transform_v_with_signed_distance_field_text_shader_batcher.queue_draw(
dd.id, dd.dropdown_text_data.indices, dd.dropdown_text_data.xyz_positions,
dd.dropdown_text_data.texture_coordinates, dd.modified_signal.has_just_changed());
batcher.absolute_position_with_colored_vertex_shader_batcher.queue_draw(
dd.id, dd.dropdown_background.indices, dd.dropdown_background.xyz_positions,
dd.dropdown_background.rgb_colors, dd.modified_signal.has_just_changed());
if (dd.dropdown_open) {
int num_dropdowns = dd.dropdown_option_rects.size();
for (
int i = 0;
i < num_dropdowns;
i++) {
IVPSolidColor ivpsc = dd.dropdown_option_backgrounds[
i];
IVPTextured ivpt = dd.dropdown_option_text_data[
i];
unsigned int doid = dd.dropdown_doids[
i];
batcher.transform_v_with_signed_distance_field_text_shader_batcher.queue_draw(
doid, ivpt.indices, ivpt.xyz_positions, ivpt.texture_coordinates,
dd.modified_signal.has_just_changed());
batcher.absolute_position_with_colored_vertex_shader_batcher.queue_draw(
doid, ivpsc.indices, ivpsc.xyz_positions, ivpsc.rgb_colors, dd.modified_signal.has_just_changed());
}
}
}
}
const std::vector< UIDropdown > & get_dropdowns() const
Definition ui.cpp:706
const std::vector< UITextBox > & get_text_boxes() const
Definition ui.cpp:708
void process_mouse_just_clicked(const glm::vec2 &mouse_pos_ndc)
Definition ui.cpp:250
void process_mouse_position(const glm::vec2 &mouse_pos_ndc)
Definition ui.cpp:16
const std::vector< UIClickableTextBox > & get_clickable_text_boxes() const
Definition ui.cpp:705
const std::vector< UIInputBox > & get_input_boxes() const
Definition ui.cpp:707
const std::vector< UIRect > & get_colored_boxes() const
Definition ui.cpp:709
void process_and_queue_render_ui(glm::vec2 ndc_mouse_pos, UI &curr_ui, IUIRenderSuite &ui_render_suite, const std::vector< std::string > &key_strings_just_pressed, bool delete_action_just_pressed, bool confirm_action_just_pressed, bool mouse_just_clicked)
Definition ui.cpp:711
When rendering the ui, we usually want to ignore the 3d component of information so that it appears on top of the already rendered things, so before drawing you might want to disable the depth test: