From: Clifton Palmer Date: Thu, 8 May 2025 12:34:29 +0000 (+0300) Subject: Moved camera vector stuff into CameraHandler X-Git-Url: http://git.purplebirdman.com/frog-ninja.git/commitdiff_plain/bbc4ebf3292684ec9b3aa9a3ba37ae4d748da305?hp=0b4b7dc3e7a9507f7b7c87e9cf0f606e051927f2 Moved camera vector stuff into CameraHandler --- diff --git a/player/input/PlayerCameraHandler.gd b/player/input/PlayerCameraHandler.gd index ab2b865..d6fbe9d 100644 --- a/player/input/PlayerCameraHandler.gd +++ b/player/input/PlayerCameraHandler.gd @@ -14,6 +14,7 @@ class_name PlayerCameraHandler @onready var spring: SpringArm3D = $SpringArm3D +@onready var camera: Camera3D = $SpringArm3D/Camera3D # Called when the node enters the scene tree for the first time. @@ -46,3 +47,14 @@ func update(input: InputPacket, delta: float): # horizontal camera rotation rotation.y -= camera_input_direction.x * delta + + +# Get the XZ input direction based on player's input relative to the camera +func get_xz_direction_relative_to_camera(d: Vector2) -> Vector2: + if camera: + var forward := camera.global_basis.z + var right := camera.global_basis.x + var dir3 := forward * d.y + right * d.x + return Vector2(dir3.x, dir3.z).normalized() + else: + return Vector2.ZERO diff --git a/player/player.gd b/player/player.gd index 5964f1b..2e90774 100644 --- a/player/player.gd +++ b/player/player.gd @@ -20,7 +20,6 @@ var state := "" @onready var model: PlayerModel = $Model @onready var skin: SkeletonSkin3D = $Visual @onready var cameraHandler: PlayerCameraHandler = $CameraHandler -@onready var camera: Camera3D = $CameraHandler/SpringArm3D/Camera3D func _ready() -> void: @@ -31,23 +30,10 @@ func _physics_process(delta: float) -> void: var input_pkt := input.get_player_input() cameraHandler.update(input_pkt, delta) - input_pkt.player_movement_direction = get_movement_relative_to_camera( + input_pkt.player_movement_direction = cameraHandler.get_xz_direction_relative_to_camera( input_pkt.player_movement_direction ) model.update(input_pkt, delta) # TODO: this is bad!! model.skeleton.global_transform = skin.global_transform - - -# Get the XZ input direction based on player's input relative to the camera -func get_movement_relative_to_camera(movement_direction: Vector2) -> Vector2: - if camera: - var forward := camera.global_basis.z - var right := camera.global_basis.x - var dir := ( - forward * movement_direction.y + right * movement_direction.x - ).normalized() - return Vector2(dir.x, dir.z).normalized() - else: - return Vector2.ZERO