extends MultiplayerSynchronizer @export var direction: Vector2 = Vector2.ZERO @export var walk: bool = false @export var primary_interact: bool = false @export var secondary_interact: bool = false @onready var _camera_pivot: Node3D = %CameraPivot func _ready() -> void: if multiplayer.is_server() or get_multiplayer_authority() != multiplayer.get_unique_id(): set_process(false) set_physics_process(false) func _physics_process(_delta: float) -> void: if get_multiplayer_authority() != multiplayer.get_unique_id(): return var directional_input := Input.get_vector("move_right", "move_left", "move_forward", "move_back") var camera_adjusted: Vector3 = (directional_input.x * _camera_pivot.global_basis.z) + (directional_input.y * _camera_pivot.global_basis.x) direction = Vector2(camera_adjusted.x, camera_adjusted.z).rotated(PI / 2.0).normalized() walk = Input.is_action_pressed("walk") func _input(_event: InputEvent) -> void: if get_multiplayer_authority() != multiplayer.get_unique_id(): return if Input.get_mouse_mode() != Input.MOUSE_MODE_CAPTURED: return primary_interact = Input.is_action_pressed("primary_interact") secondary_interact = Input.is_action_pressed("secondary_interact")