Feat/visual audio overhaul #21

Merged
Dotts merged 31 commits from feat/visual-audio-overhaul into main 2026-07-21 14:09:18 -07:00
Showing only changes of commit 39af109893 - Show all commits
+15
View File
@@ -67,6 +67,7 @@ var _recoil_yaw: float = 0.0
var _target_drift_offset: Vector3 = Vector3.ZERO var _target_drift_offset: Vector3 = Vector3.ZERO
var _current_drift_offset: Vector3 = Vector3.ZERO var _current_drift_offset: Vector3 = Vector3.ZERO
var _swap_pitch: float = 0.0 var _swap_pitch: float = 0.0
var _reload_dip: float = 0.0
func add_recoil(pitch: float, yaw: float) -> void: func add_recoil(pitch: float, yaw: float) -> void:
_recoil_pitch += pitch * 20.0 # Scale up for visual model recoil _recoil_pitch += pitch * 20.0 # Scale up for visual model recoil
@@ -152,6 +153,20 @@ func _process(_delta: float) -> void:
vm_camera.rotate_object_local(Vector3.RIGHT, deg_to_rad(_swap_pitch)) vm_camera.rotate_object_local(Vector3.RIGHT, deg_to_rad(_swap_pitch))
vm_camera.translate_object_local(Vector3(0, -_swap_pitch * 0.005, 0)) vm_camera.translate_object_local(Vector3(0, -_swap_pitch * 0.005, 0))
# Reload animation: the weapon dips down-and-inward with a roll,
# holds through the reload, and rises as it completes.
var aw = weapons.get(active_slot)
if aw and "reloading" in aw and aw.reloading \
and "reload_timer" in aw and "reload_time" in aw and aw.reload_time > 0.0:
var t: float = clampf(1.0 - aw.reload_timer / aw.reload_time, 0.0, 1.0)
_reload_dip = lerpf(_reload_dip, sin(minf(t * 1.4, 1.0) * PI), 10.0 * _delta)
else:
_reload_dip = lerpf(_reload_dip, 0.0, 10.0 * _delta)
if _reload_dip > 0.01:
vm_camera.translate_object_local(Vector3(0.03 * _reload_dip, 0.14 * _reload_dip, 0))
vm_camera.rotate_object_local(Vector3.FORWARD, deg_to_rad(-14.0 * _reload_dip))
vm_camera.rotate_object_local(Vector3.RIGHT, deg_to_rad(9.0 * _reload_dip))
vm_camera.fov = lerpf(vm_camera.fov, target_fov, 10.0 * _delta) vm_camera.fov = lerpf(vm_camera.fov, target_fov, 10.0 * _delta)
func _build_loadout() -> void: func _build_loadout() -> void: