Lots of little tweaks and fixes

This commit is contained in:
2026-06-12 20:26:00 -05:00
parent 7fc1a4645c
commit 3d01fcce86
32 changed files with 570 additions and 160 deletions
+19 -7
View File
@@ -42,7 +42,15 @@ var _freeTimer:float = 0.0
var _mouseDelta:Vector2 = Vector2.ZERO
var _rightMouseHeld:bool = false
func _canOrbit() -> bool:
return not UI.activeConversation
func _input(event:InputEvent) -> void:
if not _canOrbit():
if _rightMouseHeld:
_rightMouseHeld = false
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
return
if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_RIGHT:
_rightMouseHeld = event.pressed
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED if _rightMouseHeld else Input.MOUSE_MODE_VISIBLE
@@ -56,13 +64,17 @@ func _process(delta:float) -> void:
var xMult:float = -1.0 if SETTINGS.invertCameraX else 1.0
var yMult:float = 1.0 if SETTINGS.invertCameraY else -1.0
var orbitInput:Vector2 = Input.get_vector(
"camera_orbit_left", "camera_orbit_right",
"camera_orbit_up", "camera_orbit_down"
)
var orbitInput:Vector2 = Vector2.ZERO
var mouseActive:bool = false
if _canOrbit():
orbitInput = Input.get_vector(
"camera_orbit_left", "camera_orbit_right",
"camera_orbit_up", "camera_orbit_down"
)
mouseActive = _mouseDelta.length_squared() > 0.0
var controllerActive:bool = orbitInput.length() > 0.01
var mouseActive:bool = _mouseDelta.length_squared() > 0.0
# Any manual camera input returns to FREE and resets the centering timer
if controllerActive or mouseActive:
@@ -83,10 +95,10 @@ func _process(delta:float) -> void:
if mouseActive:
_yaw += _mouseDelta.x * mouseSensitivity * SETTINGS.cameraSpeedMouse * xMult
_pitch += _mouseDelta.y * mouseSensitivity * SETTINGS.cameraSpeedMouse * yMult
_mouseDelta = Vector2.ZERO
_mouseDelta = Vector2.ZERO
# center_camera input → switch to MANUAL_CENTER immediately
if Input.is_action_just_pressed("center_camera"):
if _canOrbit() and Input.is_action_just_pressed("center_camera"):
_mode = CameraMode.MANUAL_CENTER
# In FREE mode, accumulate time toward auto-centering while the player is moving
+25
View File
@@ -22,11 +22,36 @@ func _exit_tree() -> void:
self.area_entered.disconnect(_onAreaEntered)
self.area_exited.disconnect(_onAreaExited)
func _process(_delta:float) -> void:
if entity.movementType != Entity.MovementType.PLAYER:
return
if UI.INTERACT_INDICATOR and UI.INTERACT_INDICATOR.visible:
UI.INTERACT_INDICATOR.updateWorldPosition()
func _getBestInteractable() -> Entity:
for area in interactableAreas:
if area.isInteractable():
return area.entity
return null
func _updateIndicator() -> void:
if entity.movementType != Entity.MovementType.PLAYER:
return
if UI.INTERACT_INDICATOR == null:
return
var best:Entity = _getBestInteractable()
if best:
UI.INTERACT_INDICATOR.setEntity(best)
else:
UI.INTERACT_INDICATOR.clear()
func _onAreaEntered(area:Area3D) -> void:
if area is EntityInteractableArea:
if area.entity == entity:
return
interactableAreas.append(area)
_updateIndicator()
func _onAreaExited(area:Area3D) -> void:
interactableAreas.erase(area)
_updateIndicator()