From 3eb0c2555f819c8cc468e515ca63370a09df1492 Mon Sep 17 00:00:00 2001 From: SamratGhale Date: Sat, 28 Mar 2026 06:42:23 +0545 Subject: [PATCH] Fix rendering current entity --- entity.odin | 7 ++----- handle_input.odin | 8 ++++++++ interface.odin | 8 ++++++-- interface_entity.odin | 14 ++++++++++++-- 4 files changed, 28 insertions(+), 9 deletions(-) diff --git a/entity.odin b/entity.odin index fdc2bbb..f69ad1d 100644 --- a/entity.odin +++ b/entity.odin @@ -102,14 +102,11 @@ compare_engine_entity_def :: proc(a, b : engine_entity_def) -> bool //ret &= a.vertices[:] == b.vertices[:] ret &= a.name_buf == b.name_buf - if a.entity_flags != b.entity_flags{ - fmt.println("Hello world") - } ret &= a.entity_flags == b.entity_flags ret &= a.index == b.index - ret &= a.body_count == b.body_count - ret &= a.rev_joint == b.rev_joint + ret &= a.body_count == b.body_count + ret &= a.rev_joint == b.rev_joint //ret &= a.link_length[:] == b.link_length[:] return ret diff --git a/handle_input.odin b/handle_input.odin index 2d3ae11..8672734 100644 --- a/handle_input.odin +++ b/handle_input.odin @@ -71,6 +71,14 @@ handle_entity_mode :: proc( input := &state.input mpos := draw.camera_convert_screen_to_world(&state.draw.cam, input.mouse) + if interface.selected_entity != -1 + { + def := &level.entity_defs[interface.selected_entity] + { + draw.solid_circle_add(&interface.state.draw.solid_circles, {p = def.body_def.position, q = {c = 1} }, 0.2, {1, 0, 0, 1}) + } + } + //Setlect entity if is_key_pressed(state, glfw.MOUSE_BUTTON_LEFT) { diff --git a/interface.odin b/interface.odin index 097f8a0..aa82741 100644 --- a/interface.odin +++ b/interface.odin @@ -190,9 +190,13 @@ interface_all :: proc($E: typeid, interface: ^interface_state, game_data : $G) - if mu.begin_window(&state.mu_ctx, "B2d Interface", {1630, 170, 250, 450}) { - if .ACTIVE in mu.header(&state.mu_ctx, "Entity", {.AUTO_SIZE}) + + if interface.edit_mode == .ENTITY { - if interface_entity(interface) do ret = true + if .ACTIVE in mu.header(&state.mu_ctx, "Entity", {.AUTO_SIZE}) + { + if interface_entity(interface) do ret = true + } } mu.end_window(&state.mu_ctx) } diff --git a/interface_entity.odin b/interface_entity.odin index 18eb6ce..ad5126e 100644 --- a/interface_entity.odin +++ b/interface_entity.odin @@ -374,6 +374,8 @@ interface_shape_def_editor :: proc(def: ^engine_entity_def) -> bool interface_entity :: proc(interface: ^interface_state) -> bool { entity_selected := (interface.selected_entity != -1) && len(interface.entity_defs) > 0 + + ctx := &interface.state.mu_ctx if entity_selected { @@ -386,8 +388,16 @@ interface_entity :: proc(interface: ^interface_state) -> bool //Flags for flag in engine_entity_flags_enum { - //contains := flag in def.entity_flags - //if mu.checkbox(fmt.tprint(flag), &contains) do def.entity_flags ~= {flag} + contains := flag in def.entity_flags + if .CHANGE in mu.checkbox(ctx, fmt.tprint(flag), &contains) + { + def.entity_flags ~= {flag} + } + } + + //Draw circle on selected entity + { + draw.solid_circle_add(&interface.state.draw.solid_circles, {p = def.body_def.position, q = {c = 1} }, 0.2, {1, 0, 0, 1}) }