diff --git a/project/aircraft/fallback_input.gd b/project/aircraft/fallback_input.gd index a0cf4de..ecbaade 100644 --- a/project/aircraft/fallback_input.gd +++ b/project/aircraft/fallback_input.gd @@ -9,9 +9,11 @@ const CAMERA_X_ROT_MIN := deg_to_rad(-85) const CAMERA_X_ROT_MAX := deg_to_rad(70) @export var use_mouse: bool = true +@export var pov_move_speed = 0.05 var active: bool = false var initial_rotation: Vector3 +var initial_pov_position: Vector3 @onready var camera_base = $"." @onready var camera = $FallbackCamera @@ -20,6 +22,7 @@ func _ready() -> void: set_process(false) set_process_input(false) initial_rotation = camera.rotation + initial_pov_position = position func _on_aircraft_use_fallback(active_in: bool) -> void: if active_in: @@ -51,7 +54,15 @@ func _input(event): if use_mouse and event is InputEventMouseMotion: var camera_speed_this_frame = CAMERA_MOUSE_ROTATION_SPEED rotate_camera(event.relative * camera_speed_this_frame * scale_factor) + + if event.is_action_pressed("pov_reset"): + position = initial_pov_position +func _process(delta: float): + var horizontal = Input.get_vector("pov_left", "pov_right", "pov_forward", "pov_back") + var vertical = Input.get_axis("pov_down", "pov_up") + # Currently PilotEyes has Yaw 180, so horizontal axes need to be inverted + position += delta * pov_move_speed * Vector3(-horizontal.x, vertical, -horizontal.y) func rotate_camera(move): camera_base.rotate_y(-move.x) diff --git a/project/project.godot b/project/project.godot index a75ba2f..8180d9a 100644 --- a/project/project.godot +++ b/project/project.godot @@ -25,19 +25,63 @@ window/stretch/mode="viewport" enabled=PackedStringArray() +[input] + +pov_up={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null) +] +} +pov_down={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":67,"key_label":0,"unicode":99,"location":0,"echo":false,"script":null) +] +} +pov_forward={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null) +] +} +pov_back={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null) +] +} +pov_right={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null) +] +} +pov_left={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null) +] +} +pov_reset={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":81,"key_label":0,"unicode":113,"location":0,"echo":false,"script":null) +] +} + [physics] common/enable_object_picking=false [rendering] +textures/canvas_textures/default_texture_filter=2 renderer/rendering_method="gl_compatibility" renderer/rendering_method.mobile="gl_compatibility" +lights_and_shadows/directional_shadow/size=8192 +lights_and_shadows/directional_shadow/soft_shadow_filter_quality=3 +lights_and_shadows/positional_shadow/soft_shadow_filter_quality=3 anti_aliasing/quality/msaa_2d=1 anti_aliasing/quality/msaa_3d=1 +lights_and_shadows/positional_shadow/atlas_size=8192 [xr] +openxr/enabled=true openxr/reference_space=2 openxr/foveation_level=3 shaders/enabled=true