Skip to content

Commit 7534ab1

Browse files
committed
Minor improvements.
1 parent 489e7e9 commit 7534ab1

2 files changed

Lines changed: 57 additions & 9 deletions

File tree

src/editor/src/editor.c

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -259,11 +259,33 @@ editor_on_mouse_button_pressed(
259259

260260
if (button == TE_MB_RIGHT) {
261261
if (editor->game_world == NULL) {
262-
// No point in doing something.
263262
return;
264263
}
264+
te_camera* game_camera = world_get_active_camera(editor->game_world);
265+
if (game_camera == NULL) {
266+
return;
267+
}
268+
269+
vec4 viewport;
270+
camera_get_viewport(game_camera, viewport);
265271

272+
vec2 cursor_pos;
266273
te_window* window = game_manager_get_window(game_manager);
274+
window_get_cursor_position(window, &cursor_pos[0], &cursor_pos[1]);
275+
276+
unsigned int window_width;
277+
unsigned int window_height;
278+
window_get_size(window, &window_width, &window_height);
279+
glm_vec2_div(
280+
cursor_pos, (vec2){(float)window_width, (float)window_height}, cursor_pos);
281+
282+
if (cursor_pos[0] < viewport[0] || cursor_pos[1] < viewport[1]
283+
|| cursor_pos[0] > viewport[0] + viewport[2]
284+
|| cursor_pos[1] > viewport[1] + viewport[3]) {
285+
// Outside of the viewport.
286+
return;
287+
}
288+
267289
window_capture_mouse_cursor(window, true);
268290

269291
editor_camera_enable_input(editor->editor_camera, true);
@@ -275,15 +297,15 @@ editor_on_mouse_button_released(
275297
void* game_instance, struct te_game_manager* game_manager, enum te_mouse_button button,
276298
bool was_handled_by_widget) {
277299
(void)was_handled_by_widget;
300+
278301
te_editor* editor = game_instance;
302+
te_window* window = game_manager_get_window(game_manager);
279303

280-
if (button == TE_MB_RIGHT) {
304+
if (button == TE_MB_RIGHT && window_is_mouse_captured(window)) {
281305
if (editor->game_world == NULL) {
282-
// No point in doing something.
283306
return;
284307
}
285308

286-
te_window* window = game_manager_get_window(game_manager);
287309
window_capture_mouse_cursor(window, false);
288310

289311
editor_camera_enable_input(editor->editor_camera, false);

src/editor/src/ui/world_inspector.c

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ struct te_world_inspector {
3333
// NULL if not set yet.
3434
te_world* game_world;
3535

36+
// Widgets for changing @ref is_3dobj_mode_selected.
37+
te_button_widget* button_3dobj;
38+
te_button_widget* button_2dobj;
39+
3640
// Valid while spawned, buttons that fill all available space (moved outside of the viewport if should not be visible).
3741
// Number of items in this array is @ref item_buttons_count.
3842
te_button_widget** item_buttons;
@@ -242,23 +246,30 @@ rebuild_item_list(te_world_inspector* inspector) {
242246
static void
243247
refresh_item_names(te_world_inspector* inspector) {
244248
const float hpadding = theme_get_horizontal_padding() / theme_get_left_panel_width();
249+
const float button_width = 1.0f - hpadding * 2.0f;
250+
const float indent_size = hpadding;
245251

246252
unsigned int button_idx = 0;
247253
for (unsigned int item_idx = inspector->current_page * inspector->item_buttons_count;
248254
button_idx < inspector->item_buttons_count && item_idx < inspector->item_list_count;
249255
button_idx++, item_idx++) {
250256
te_button_widget* button = inspector->item_buttons[button_idx];
257+
te_world_item_info* info = &inspector->item_list[item_idx];
251258

252-
// Fix pos of the button (in case it was hidden previously).
259+
// Fix pos of the button (in case it was hidden previously or had other indentation).
253260
{
254261
te_widget* widget = button_widget_get_widget(button);
255262

256263
vec2 pos;
257264
widget_get_relative_position(widget, pos);
258-
pos[0] = hpadding;
265+
pos[0] = hpadding + indent_size * (float)info->indent;
259266

260-
widget_set_relative_position(
261-
button_widget_get_widget(inspector->item_buttons[button_idx]), pos);
267+
vec2 size;
268+
widget_get_relative_size(widget, size);
269+
size[0] = button_width - indent_size * (float)info->indent;
270+
271+
widget_set_relative_position(widget, pos);
272+
widget_set_relative_size(widget, size);
262273
}
263274

264275
unsigned int child_count;
@@ -274,7 +285,6 @@ refresh_item_names(te_world_inspector* inspector) {
274285
break;
275286
}
276287

277-
te_world_item_info* info = &inspector->item_list[item_idx];
278288
const char* name = NULL;
279289
switch (info->type) {
280290
case (TE_WIT_MODEL): {
@@ -368,13 +378,27 @@ on_button_3dobj_clicked(te_button_widget* button) {
368378
te_world_inspector* inspector = widget_get_custom_ptr(button_widget_get_widget(button));
369379
inspector->is_3dobj_mode_selected = true;
370380
world_inspector_rebuild_list(inspector, inspector->game_world);
381+
382+
vec4 color;
383+
theme_get_accent_color(color);
384+
button_widget_set_color(button, color);
385+
386+
theme_get_button_color(color);
387+
button_widget_set_color(inspector->button_2dobj, color);
371388
}
372389

373390
static void
374391
on_button_2dobj_clicked(te_button_widget* button) {
375392
te_world_inspector* inspector = widget_get_custom_ptr(button_widget_get_widget(button));
376393
inspector->is_3dobj_mode_selected = false;
377394
world_inspector_rebuild_list(inspector, inspector->game_world);
395+
396+
vec4 color;
397+
theme_get_accent_color(color);
398+
button_widget_set_color(button, color);
399+
400+
theme_get_button_color(color);
401+
button_widget_set_color(inspector->button_3dobj, color);
378402
}
379403

380404
void
@@ -425,6 +449,7 @@ world_inspector_add(te_world_inspector* inspector, te_widget* left_panel) {
425449
// "3D objects" button ------------------
426450

427451
te_button_widget* button_3dobj = button_widget_create();
452+
inspector->button_3dobj = button_3dobj;
428453
{
429454
te_widget* widget = button_widget_get_widget(button_3dobj);
430455
widget_set_custom_ptr(widget, inspector);
@@ -452,6 +477,7 @@ world_inspector_add(te_world_inspector* inspector, te_widget* left_panel) {
452477
// "2D objects" button ------------------
453478

454479
te_button_widget* button_2dobj = button_widget_create();
480+
inspector->button_2dobj = button_2dobj;
455481
{
456482
te_widget* widget = button_widget_get_widget(button_2dobj);
457483
widget_set_custom_ptr(widget, inspector);

0 commit comments

Comments
 (0)