forked from woofmeow/straywild
57 lines
1.8 KiB
GDScript
57 lines
1.8 KiB
GDScript
extends SceneTree
|
|
|
|
const PlayerScene: PackedScene = preload("res://player/player.tscn")
|
|
|
|
|
|
func _initialize() -> void:
|
|
call_deferred("_run")
|
|
|
|
|
|
func _run() -> void:
|
|
root.size = Vector2i(1280, 720)
|
|
var player := PlayerScene.instantiate() as Player
|
|
root.add_child(player)
|
|
await process_frame
|
|
player.local_control_enabled = true
|
|
player.set_camera_input_enabled(true)
|
|
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
|
|
|
|
var press := InputEventMouseButton.new()
|
|
press.button_index = MOUSE_BUTTON_RIGHT
|
|
press.button_mask = MOUSE_BUTTON_MASK_RIGHT
|
|
press.pressed = true
|
|
player.call("_input", press)
|
|
assert(bool(player.get("_camera_dragging")))
|
|
if DisplayServer.get_name() != "headless":
|
|
assert(Input.mouse_mode == Input.MOUSE_MODE_VISIBLE)
|
|
|
|
var yaw := player.get_node("%CameraYaw") as Node3D
|
|
var previous_yaw: float = yaw.rotation.y
|
|
var motion := InputEventMouseMotion.new()
|
|
motion.button_mask = MOUSE_BUTTON_MASK_RIGHT
|
|
motion.relative = Vector2(18.0, -4.0)
|
|
motion.screen_relative = motion.relative
|
|
player.call("_input", motion)
|
|
assert(not is_equal_approx(yaw.rotation.y, previous_yaw))
|
|
await process_frame
|
|
assert(bool(player.get("_camera_dragging")))
|
|
if DisplayServer.get_name() != "headless":
|
|
assert(Input.mouse_mode == Input.MOUSE_MODE_CAPTURED)
|
|
|
|
var release := InputEventMouseButton.new()
|
|
release.button_index = MOUSE_BUTTON_RIGHT
|
|
release.pressed = false
|
|
player.call("_input", release)
|
|
assert(not bool(player.get("_camera_dragging")))
|
|
if DisplayServer.get_name() != "headless":
|
|
assert(Input.mouse_mode == Input.MOUSE_MODE_VISIBLE)
|
|
|
|
player.call("_input", press)
|
|
assert(bool(player.get("_camera_dragging")))
|
|
player.notification(NOTIFICATION_APPLICATION_FOCUS_OUT)
|
|
assert(not bool(player.get("_camera_dragging")))
|
|
|
|
player.queue_free()
|
|
await process_frame
|
|
print("Camera drag validation: PASS")
|
|
quit()
|