From 2b652faf547bc3c3a626ff9fbee17b12700ffc16 Mon Sep 17 00:00:00 2001 From: Nordup Date: Mon, 19 Feb 2024 09:06:52 +0400 Subject: [PATCH] Scale mouse position, disable emulate_touch_from_mouse --- project/project.godot | 4 ---- project/scenes/menu_body/world.tscn | 3 ++- project/scripts/sandbox/input_sync.gd | 22 +++++++++++++++++++++- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/project/project.godot b/project/project.godot index 34e26d3..a36e599 100644 --- a/project/project.godot +++ b/project/project.godot @@ -54,10 +54,6 @@ open_debug={ ] } -[input_devices] - -pointing/emulate_touch_from_mouse=true - [physics] 2d/physics_engine="GodotPhysics2D" diff --git a/project/scenes/menu_body/world.tscn b/project/scenes/menu_body/world.tscn index 5a48a77..c43d1f5 100644 --- a/project/scenes/menu_body/world.tscn +++ b/project/scenes/menu_body/world.tscn @@ -331,10 +331,11 @@ grow_horizontal = 2 grow_vertical = 2 focus_mode = 0 -[node name="InputSync" type="Node" parent="HBoxContainer/WorldCanvas"] +[node name="InputSync" type="Node" parent="HBoxContainer/WorldCanvas" node_paths=PackedStringArray("render_result")] script = ExtResource("8_1blsi") gate_events = ExtResource("2_q7cvi") ui_events = ExtResource("9_ir58h") +render_result = NodePath("../RenderResult") [node name="CommandSync" type="CommandSync" parent="HBoxContainer/WorldCanvas"] script = ExtResource("10_cqo55") diff --git a/project/scripts/sandbox/input_sync.gd b/project/scripts/sandbox/input_sync.gd index eeba4eb..00b949a 100644 --- a/project/scripts/sandbox/input_sync.gd +++ b/project/scripts/sandbox/input_sync.gd @@ -2,6 +2,10 @@ extends Node @export var gate_events: GateEvents @export var ui_events: UiEvents +@export var render_result: RenderResult + +var scale_width: float +var scale_height: float var input_sync: InputSync var should_send := false @@ -10,6 +14,13 @@ var should_send := false func _ready() -> void: gate_events.gate_entered.connect(start_server) ui_events.visibility_changed.connect(on_ui_visibility_changed) + + # Scale mouse position for resolutions other than 1920x1080 + var viewport_width = ProjectSettings.get_setting("display/window/size/viewport_width", 1152) + var viewport_height = ProjectSettings.get_setting("display/window/size/viewport_height", 648) + scale_width = float(render_result.width) / viewport_width + scale_height = float(render_result.height) / viewport_height + Debug.logclr("Mouse position scale: %fx%f" % [scale_width, scale_height], Color.DIM_GRAY) func start_server() -> void: @@ -23,6 +34,15 @@ func on_ui_visibility_changed(visible: bool) -> void: func _input(event: InputEvent) -> void: if input_sync == null or not should_send: return - if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT: return + + if event is InputEventMouse: + event.position = get_scaled_mouse_pos(event.position) + event.global_position = get_scaled_mouse_pos(event.global_position) input_sync.send_input_event(event) + + +func get_scaled_mouse_pos(position : Vector2) -> Vector2: + position.x *= scale_width + position.y *= scale_height + return position