extends Spatial

# look stats
var lookSensitivity : float = 15.0
var minLookAngle : float = -20.0
var maxLookAngle : float = 75.0
 
# vectors
var mouseDelta = Vector2()
 
# components
onready var player = get_parent()

# called when the node is initialized
func _ready ():
	on_player_input_change(Controller.player_input_enabled)
	Controller.connect("player_input_change", self, "on_player_input_change")

# called when an input is detected
func _input (event):
 
	# set "mouseDelta" when we move our mouse
	if Controller.player_input_enabled and event is InputEventMouseMotion:
		mouseDelta = event.relative

# called every frame
func _process (delta):
	if Controller.player_input_enabled:
		# get the rotation to apply to the camera and player
		var rot = Vector3(mouseDelta.y, mouseDelta.x, 0) * lookSensitivity * delta
	 
		# camera vertical rotation
		rotation_degrees.x += rot.x
		rotation_degrees.x = clamp(rotation_degrees.x, minLookAngle, maxLookAngle)
	 
		# player horizontal rotation
		player.rotation_degrees.y -= rot.y
	 
		# clear the mouse movement vector
		mouseDelta = Vector2()

func on_player_input_change(value):
	print(value)
	if value:
		Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
	else:
		Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
