45 lines
1.3 KiB
GDScript
45 lines
1.3 KiB
GDScript
extends Node3D
|
|
|
|
@onready var camera: Camera3D = $Camera3D
|
|
@export var verticalLookLimit: float = deg_to_rad(50)
|
|
|
|
|
|
@export var psxScene: PackedScene
|
|
var psxInstance: Node = null
|
|
var togglePsxEffect: bool = false
|
|
#@export var horizontalLookRightLimit: float = deg_to_rad(290)
|
|
#@export var horizontalLookLeftLimit: float = deg_to_rad(-196)
|
|
var cameraPitch: float = 0.0
|
|
var cameraYaw: float = 0.0
|
|
|
|
|
|
|
|
func _ready() -> void:
|
|
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
|
|
var currentRot = camera.rotation
|
|
cameraPitch = currentRot.x
|
|
cameraYaw = currentRot.y
|
|
camera.rotation.z = 0.0
|
|
|
|
func _input(event: InputEvent) -> void:
|
|
if event is InputEventMouseMotion:
|
|
cameraPitch -= event.screen_relative.y * GlobalSettings.cameraSensitivity
|
|
cameraYaw -= event.screen_relative.x * GlobalSettings.cameraSensitivity
|
|
#cameraPitch = clamp(cameraPitch, -verticalLookLimit, verticalLookLimit)
|
|
#cameraYaw = clamp(cameraYaw, -horizontalLookLeftLimit, horizontalLookRightLimit)
|
|
cameraPitch = clamp(cameraPitch, -verticalLookLimit, verticalLookLimit)
|
|
camera.rotation = Vector3(cameraPitch, cameraYaw, 0)
|
|
|
|
if Input.is_action_just_released("PSX Theme toggle"):
|
|
togglePsxEffect = !togglePsxEffect
|
|
|
|
if togglePsxEffect:
|
|
psxInstance = psxScene.instantiate()
|
|
add_child(psxInstance)
|
|
else:
|
|
psxInstance.queue_free()
|
|
psxInstance = null
|
|
|
|
|
|
|