UI Windows slowly working

This commit is contained in:
2024-12-30 00:10:50 +01:00
parent 4ac24fa03c
commit 6ed67e8fcb
6 changed files with 424 additions and 123 deletions

View File

@@ -32,8 +32,55 @@ pick_scene_view_at :: (camera: Camera, coordinates: Vector2) {
}
editor_ui :: () {
ui_window_begin("Entities");
ui_label("TESTING ONE TWO", .{0,0.7,0,1});
// Scene picking
if key_down(.MOUSE_LEFT) {
if engine.current_scene != null {
coords := engine.input.normalized_viewport_mouse_position;
pick_scene_view_at(engine.editor.camera, .{coords.x, 1.0-coords.y});
}
}
{
ui_window_begin("Create", 100, 5, 200, 200);
new_entity := editor_ui_entity_creation();
if new_entity != null {
set_position(*new_entity.transform, engine.editor.camera.position + engine.editor.camera.forward * 20.0);
engine.editor.selected_entities.count = 0;
array_add(*engine.editor.selected_entities, new_entity);
}
ui_window_end();
}
ui_window_begin("Entities", 1, 5, 200, 600);
if engine.current_scene != null {
for engine.current_scene.entities {
if it.flags & .DELETED continue;
ui_set_next_padding(20);
clicked := false;
selected := array_find(engine.editor.selected_entities, it);
if it.name.count == 0 {
clicked = ui_clickable_label(tprint("%", it.type), selected, it.id);
} else {
clicked = ui_clickable_label(it.name, selected, it.id);
}
if clicked {
if !key_pressed(.CTRL) {
engine.editor.selected_entities.count = 0;
array_add(*engine.editor.selected_entities, it);
} else {
if selected {
array_unordered_remove_by_value(*engine.editor.selected_entities, it);
} else {
array_add(*engine.editor.selected_entities, it);
}
}
}
//ui_space(0, 5);
}
}
ui_window_end();
ui_full_size_background();
@@ -100,34 +147,34 @@ editor_ui :: () {
ui_set_next_size_x(.PCT, 1.0);
ui_tab_title_bar("ENTITIES");
if engine.current_scene != null {
for engine.current_scene.entities {
if it.flags & .DELETED continue;
//if engine.current_scene != null {
// for engine.current_scene.entities {
// if it.flags & .DELETED continue;
ui_set_next_padding(20);
clicked := false;
selected := array_find(engine.editor.selected_entities, it);
if it.name.count == 0 {
clicked = ui_clickable_label(tprint("%", it.type), selected, it.id);
} else {
clicked = ui_clickable_label(it.name, selected, it.id);
}
// ui_set_next_padding(20);
// clicked := false;
// selected := array_find(engine.editor.selected_entities, it);
// if it.name.count == 0 {
// clicked = ui_clickable_label(tprint("%", it.type), selected, it.id);
// } else {
// clicked = ui_clickable_label(it.name, selected, it.id);
// }
if clicked {
if !key_pressed(.CTRL) {
engine.editor.selected_entities.count = 0;
array_add(*engine.editor.selected_entities, it);
} else {
if selected {
array_unordered_remove_by_value(*engine.editor.selected_entities, it);
} else {
array_add(*engine.editor.selected_entities, it);
}
}
}
//ui_space(0, 5);
}
}
// if clicked {
// if !key_pressed(.CTRL) {
// engine.editor.selected_entities.count = 0;
// array_add(*engine.editor.selected_entities, it);
// } else {
// if selected {
// array_unordered_remove_by_value(*engine.editor.selected_entities, it);
// } else {
// array_add(*engine.editor.selected_entities, it);
// }
// }
// }
// //ui_space(0, 5);
// }
//}
}
ui_pop_parent();
}
@@ -174,32 +221,27 @@ editor_ui :: () {
}
ui_pop_parent();
ui_set_next_size_x(.PCT, 1.0);
ui_set_next_size_y(.PCT, 0.65);
//ui_set_next_size_x(.PCT, 1.0);
//ui_set_next_size_y(.PCT, 0.65);
state := ui_interactable_texture(get_texture_from_pass("UI Blend Pass"));
engine.input.viewport_mouse_position = state.local_mouse_coordinates;
engine.input.normalized_viewport_mouse_position = state.normalized_local_mouse_coordinates;
if state.left_mouse_down {
if engine.current_scene != null {
pick_scene_view_at(engine.editor.camera, .{state.normalized_local_mouse_coordinates.x, 1.0-state.normalized_local_mouse_coordinates.y});
}
//state := ui_interactable_texture(get_texture_from_pass("UI Blend Pass"));
//engine.input.viewport_mouse_position = state.local_mouse_coordinates;
//engine.input.normalized_viewport_mouse_position = state.normalized_local_mouse_coordinates;
}
//engine.editor.mouse_viewport_state = state;
engine.editor.mouse_viewport_state = state;
ui_set_next_size_x(.PCT, 1.0);
ui_set_next_size_y(.PCT, 0.25);
ui_tab_title_bar("Create entities");
{
new_entity := editor_ui_entity_creation();
if new_entity != null {
set_position(*new_entity.transform, engine.editor.camera.position + engine.editor.camera.forward * 20.0);
engine.editor.selected_entities.count = 0;
array_add(*engine.editor.selected_entities, new_entity);
}
}
//ui_set_next_size_x(.PCT, 1.0);
//ui_set_next_size_y(.PCT, 0.25);
//ui_tab_title_bar("Create entities");
//{
// new_entity := editor_ui_entity_creation();
// if new_entity != null {
// set_position(*new_entity.transform, engine.editor.camera.position + engine.editor.camera.forward * 20.0);
// engine.editor.selected_entities.count = 0;
// array_add(*engine.editor.selected_entities, new_entity);
// }
//}
}
ui_pop_parent();
@@ -262,7 +304,10 @@ base_editor_update :: () {
engine.editor.transform_gizmo.uniform_gizmo_scale = gizmo_scale;
set_scale(*engine.editor.transform_gizmo.transform, .{gizmo_scale, gizmo_scale, gizmo_scale});
coordinates := Vector2.{engine.editor.mouse_viewport_state.normalized_local_mouse_coordinates.x, 1.0 - engine.editor.mouse_viewport_state.normalized_local_mouse_coordinates.y};
coordinates := engine.input.normalized_viewport_mouse_position;
coordinates.y = 1.0 - coordinates.y;
//coordinates := Vector2.{engine.editor.mouse_viewport_state.normalized_local_mouse_coordinates.x, 1.0 - engine.editor.mouse_viewport_state.normalized_local_mouse_coordinates.y};
ray := normalized_screen_to_ray_v2(engine.editor.camera, coordinates);
if update_transform_gizmo(ray, coordinates) {