From c1c846dfb66ed466b99d0c85984fe4d439b8edc9 Mon Sep 17 00:00:00 2001 From: Katajisto Date: Tue, 15 Jul 2025 10:34:38 +0300 Subject: [PATCH] work on editor improvements --- src/editor/console.jai | 6 ++++++ src/editor/editor.jai | 4 ++++ src/editor/level_editor.jai | 26 +++++++++++++++++++------- src/editor/trile_editor.jai | 4 ++++ 4 files changed, 33 insertions(+), 7 deletions(-) diff --git a/src/editor/console.jai b/src/editor/console.jai index 5074322..841faed 100644 --- a/src/editor/console.jai +++ b/src/editor/console.jai @@ -61,6 +61,12 @@ tick_console :: () { while console_report.count > MAX_REPORT_ROWS { array_ordered_remove_by_index(*console_report, 0); } + + if console_state != .CLOSED { + console_open_ignore_input = true; + } else { + console_open_ignore_input = false; + } } console_input_start : string = ""; diff --git a/src/editor/editor.jai b/src/editor/editor.jai index e2fde33..6228f5a 100644 --- a/src/editor/editor.jai +++ b/src/editor/editor.jai @@ -14,6 +14,10 @@ current_editor_view : Editor_View = .Trile_Editor; #scope_export +// Used when the console is open, so typing doesn't cause all sorts of stuff. +console_open_ignore_input : bool = false; + + draw_editor_ui :: (theme: *GR.Overall_Theme) { r := GR.get_rect(0,0,0,0); r.x = 0; r.w = 100*vw; diff --git a/src/editor/level_editor.jai b/src/editor/level_editor.jai index 94771e2..46c3d1c 100644 --- a/src/editor/level_editor.jai +++ b/src/editor/level_editor.jai @@ -2,6 +2,9 @@ // @ToDo do a config tweak file thing like jblow has and add this there. CAMERA_INACTIVE_TIME_TO_ORBIT :: 20.0; +MAX_CAMERA_DIST :: 25.0; +MIN_CAMERA_DIST :: 2.0; +DIST_SCROLL_SPEED :: 0.8; mouse2Active : bool; mouse2ActivationPosition : Vector2; @@ -40,11 +43,13 @@ get_level_editor_camera :: () -> Camera { } tick_level_editor_camera :: () { + if console_open_ignore_input then return; + if get_time() - lastInputTime > CAMERA_INACTIVE_TIME_TO_ORBIT { // idle rotating camera cameraRotation += cast(float) delta_time; } - cameraSpeed :: 5.1; + cameraSpeed :: 150; forward : Vector3 = .{1, 0, 0}; qrotation : Quaternion = .{cos(-cameraRotation/2.0),0,sin(-cameraRotation/2.0),0}; @@ -56,23 +61,28 @@ tick_level_editor_camera :: () { qrotation_left : Quaternion = .{cos(-cameraRotation/2.0),0,sin(-cameraRotation/2.0),0}; rotate(*left, qrotation_left); left2d := Vector2.{left.x, left.z}; + + cameraDist = clamp(cameraDist - mouse_delta_z * DIST_SCROLL_SPEED, MIN_CAMERA_DIST, MAX_CAMERA_DIST); + + distRange : float = MAX_CAMERA_DIST - MIN_CAMERA_DIST; + zoomCameraMovementMultiplier := 0.03 + ((cameraDist - MIN_CAMERA_DIST) / distRange) * 0.15; if input_button_states[#char "W"] & .DOWN { lastInputTime = get_time(); - cameraCenter += -cameraSpeed * (xx delta_time) * forward2d; + cameraCenter += -cameraSpeed * zoomCameraMovementMultiplier * (xx delta_time) * forward2d; } if input_button_states[#char "S"] & .DOWN { lastInputTime = get_time(); - cameraCenter += cameraSpeed * (xx delta_time) * forward2d; + cameraCenter += cameraSpeed * zoomCameraMovementMultiplier * (xx delta_time) * forward2d; } if input_button_states[#char "A"] & .DOWN { lastInputTime = get_time(); - cameraCenter += -cameraSpeed * (xx delta_time) * left2d; + cameraCenter += -cameraSpeed * zoomCameraMovementMultiplier * (xx delta_time) * left2d; } if input_button_states[#char "D"] & .DOWN { lastInputTime = get_time(); - cameraCenter += cameraSpeed * (xx delta_time) * left2d; + cameraCenter += cameraSpeed * zoomCameraMovementMultiplier * (xx delta_time) * left2d; } if input_button_states[Key_Code.ARROW_UP] & .START { @@ -104,12 +114,13 @@ tick_level_editor_camera :: () { mouse2Active = false; } + if input_button_states[Key_Code.MOUSE_BUTTON_MIDDLE] & .DOWN { if mouse3Active { lastInputTime = get_time(); diff := mouse3ActivationPosition - Vector2.{input_mouse_x, input_mouse_y}; - cameraCenter = cameraCenter + forward2d * -diff.y * cast(float) delta_time * 0.1; - cameraCenter = cameraCenter + left2d * -diff.x * cast(float) delta_time * 0.1; + cameraCenter = cameraCenter + forward2d * -diff.y * cast(float) delta_time * zoomCameraMovementMultiplier; + cameraCenter = cameraCenter + left2d * -diff.x * cast(float) delta_time * zoomCameraMovementMultiplier; } else { mouse3Active = true; mouse3ActivationPosition = Vector2.{input_mouse_x, input_mouse_y}; @@ -117,6 +128,7 @@ tick_level_editor_camera :: () { } else { mouse3Active = false; } + } diff --git a/src/editor/trile_editor.jai b/src/editor/trile_editor.jai index a306198..dd43dc9 100644 --- a/src/editor/trile_editor.jai +++ b/src/editor/trile_editor.jai @@ -106,6 +106,8 @@ handle_tool_click :: () { current_color : Vector3 = .{1.0, 0.0, 0.0}; tick_trile_editor :: () { + if console_open_ignore_input then return; + if !current_trile then current_trile = get_trile("test"); if input_button_states[Key_Code.MOUSE_BUTTON_LEFT] & .START { @@ -300,6 +302,8 @@ draw_trile :: () { } trile_editor_shortcuts :: () { + if console_open_ignore_input then return; + if input_button_states[Key_Code.CTRL] & .DOWN { if input_button_states[#char "A"] & .START { current_mode = .AREA;