extends Camera3D

@export var SPEED = 10.0

var active: bool

func _enter_tree() -> void:
	set_multiplayer_authority(int(get_parent().get_parent().name))

func set_active() -> void:
	if not is_multiplayer_authority():
		return
	active = true
	current = true
	top_level = true

func _process(delta: float) -> void:
	if active == false or not is_multiplayer_authority():
		return
	var xz_plane = Input.get_vector("plr_strafe_l","plr_strafe_r","plr_forward","plr_back")
	var y = Input.get_axis("spc_down","spc_up")
	
	var direction = Vector3(xz_plane.x,y,xz_plane.y)
	global_position += global_basis * direction * SPEED * delta

func rotate_camera(x,y) -> void:
	rotate_y(x)
	rotation.x = clamp(rotation.x + y,-PI/2,PI/2)
	orthonormalize()

func _input(event: InputEvent) -> void:
	if active == false or not is_multiplayer_authority():
		return
	if event is InputEventMouseMotion:
		rotate_camera(-event.relative.x * ClientSettings.SENSITIVITY,-event.relative.y * ClientSettings.SENSITIVITY)
