Handle capture mode toggle in _input
This commit is contained in:
		
							parent
							
								
									4d8a0fec10
								
							
						
					
					
						commit
						e3f652e6b1
					
				| 
						 | 
					@ -61,7 +61,6 @@ enum MovementType { VERTICAL, LATERAL }
 | 
				
			||||||
@export var max_iteration_count := 4
 | 
					@export var max_iteration_count := 4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var jump_pressed := false
 | 
					var jump_pressed := false
 | 
				
			||||||
var escape_pressed_prev := false
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
var gravity := 9.8
 | 
					var gravity := 9.8
 | 
				
			||||||
var _velocity: Vector3 = Vector3()
 | 
					var _velocity: Vector3 = Vector3()
 | 
				
			||||||
| 
						 | 
					@ -93,26 +92,27 @@ func unlock_mouse() -> void:
 | 
				
			||||||
# TODO should this have an action associated?
 | 
					# TODO should this have an action associated?
 | 
				
			||||||
# TODO should it be in unhandled?
 | 
					# TODO should it be in unhandled?
 | 
				
			||||||
func _input(event: InputEvent) -> void:
 | 
					func _input(event: InputEvent) -> void:
 | 
				
			||||||
 | 
						# Rotate body/camera
 | 
				
			||||||
	if event is InputEventMouseMotion and Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED:
 | 
						if event is InputEventMouseMotion and Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED:
 | 
				
			||||||
		var motion := event as InputEventMouseMotion
 | 
							var motion := event as InputEventMouseMotion
 | 
				
			||||||
		body.rotate_y(-motion.relative.x * mouse_sensitivity)
 | 
							body.rotate_y(-motion.relative.x * mouse_sensitivity)
 | 
				
			||||||
		head.rotate_x(-motion.relative.y * mouse_sensitivity)
 | 
							head.rotate_x(-motion.relative.y * mouse_sensitivity)
 | 
				
			||||||
		head.rotation.x = clamp(head.rotation.x, -1.4, 1.4)
 | 
							head.rotation.x = clamp(head.rotation.x, -1.4, 1.4)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Toggle mouse capture mode
 | 
				
			||||||
 | 
						if event is InputEventKey && event.is_pressed():
 | 
				
			||||||
 | 
							var key_event := event as InputEventKey
 | 
				
			||||||
 | 
							if key_event.keycode == KEY_ESCAPE:
 | 
				
			||||||
 | 
								if Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED:
 | 
				
			||||||
 | 
									unlock_mouse()
 | 
				
			||||||
 | 
								else:
 | 
				
			||||||
 | 
									lock_mouse()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# TODO should this be in unhandled input?
 | 
					# TODO should this be in unhandled input?
 | 
				
			||||||
# TODO this should return void and just set the appropriate fields (input_dir!!)
 | 
					# TODO this should return void and just set the appropriate fields (input_dir!!)
 | 
				
			||||||
# Input buffering? lol lmao
 | 
					# Input buffering? lol lmao
 | 
				
			||||||
func get_input() -> Vector2:
 | 
					func get_input() -> Vector2:
 | 
				
			||||||
	# Toggle mouse capture mode
 | 
					 | 
				
			||||||
	var escape_pressed_curr := Input.is_key_pressed(KEY_ESCAPE)
 | 
					 | 
				
			||||||
	if escape_pressed_curr && !escape_pressed_prev:
 | 
					 | 
				
			||||||
		if Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED:
 | 
					 | 
				
			||||||
			unlock_mouse()
 | 
					 | 
				
			||||||
		else:
 | 
					 | 
				
			||||||
			lock_mouse()
 | 
					 | 
				
			||||||
	escape_pressed_prev = escape_pressed_curr
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	# We don't want to be moving if the mouse isn't captured!
 | 
						# We don't want to be moving if the mouse isn't captured!
 | 
				
			||||||
	if Input.get_mouse_mode() != Input.MOUSE_MODE_CAPTURED:
 | 
						if Input.get_mouse_mode() != Input.MOUSE_MODE_CAPTURED:
 | 
				
			||||||
		return Vector2(0, 0)
 | 
							return Vector2(0, 0)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue