work on editor improvements

This commit is contained in:
Tuomas Katajisto 2025-07-15 10:34:38 +03:00
parent bf8f8d164a
commit c1c846dfb6
4 changed files with 33 additions and 7 deletions

View File

@ -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 = "";

View File

@ -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;

View File

@ -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;
}
}

View File

@ -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;