diff --git a/entities/player/player_input.gd b/entities/player/player_input.gd index f9889d2..ceaeb95 100644 --- a/entities/player/player_input.gd +++ b/entities/player/player_input.gd @@ -24,8 +24,6 @@ signal jumped signal fired_primary signal throwed_flag -var _mouse_position: Vector2 - func _ready(): var has_authority = is_multiplayer_authority() set_process(has_authority) @@ -38,7 +36,15 @@ func _unhandled_input(event: InputEvent) -> void: if event is InputEventMouseMotion: if mouse_mode == Input.MOUSE_MODE_CAPTURED: # retrieve mouse position relative to last frame - _mouse_position = event.relative * MOUSE_SENSITIVITY + _update_camera(event.relative) + +func _update_camera(relative_motion : Vector2, sensitivity : float = MOUSE_SENSITIVITY) -> void: + # clamp vertical rotation (head motion) + camera_rotation.y -= relative_motion.y * sensitivity / 100 + camera_rotation.y = clamp(camera_rotation.y, deg_to_rad(-90.0),deg_to_rad(90.0)) + # wrap horizontal rotation (to prevent accumulation) + camera_rotation.x -= relative_motion.x * sensitivity / 100 + camera_rotation.x = wrapf(camera_rotation.x, deg_to_rad(0.0),deg_to_rad(360.0)) func _process(delta): direction = Input.get_vector("left", "right", "forward", "backward") @@ -50,7 +56,6 @@ func _process(delta): _throw_flag.rpc() jetting = Input.is_action_pressed("jump_and_jet") skiing = Input.is_action_pressed("ski") - _update_camera(delta) @rpc("call_local") func _jump(): @@ -64,12 +69,3 @@ func _fire_primary(): func _throw_flag(): throwed_flag.emit() -func _update_camera(delta): - # clamp vertical rotation (head motion) - camera_rotation.y -= _mouse_position.y * delta - camera_rotation.y = clamp(camera_rotation.y, deg_to_rad(-90.0),deg_to_rad(90.0)) - # wrap horizontal rotation (to prevent accumulation) - camera_rotation.x -= _mouse_position.x * delta - camera_rotation.x = wrapf(camera_rotation.x, deg_to_rad(0.0),deg_to_rad(360.0)) - # reset mouse motion until next input event - _mouse_position = Vector2.ZERO