Added debug HUD

This commit is contained in:
Rob Kelly 2025-09-29 15:36:35 -06:00
parent e4d3ca6d90
commit a775865ed9
3 changed files with 126 additions and 5 deletions

26
src/player/debug_hud.gd Normal file
View File

@ -0,0 +1,26 @@
extends CanvasLayer
const FPS_SAMPLES := 4
@export var player: Player
var _delta_samples: Array[float] = []
@onready var fps_label: Label = %FPSLabel
@onready var player_position_label: Label = %PlayerPositionLabel
@onready var player_velocity_label: Label = %PlayerVelocityLabel
@onready var player_speed_label: Label = %PlayerSpeedLabel
func _process(delta: float) -> void:
player_position_label.text = str(player.global_position)
player_velocity_label.text = str(player.velocity)
player_speed_label.text = "%.3f" % player.velocity.length()
# Average FPS across window
_delta_samples.push_front(delta)
if _delta_samples.size() > FPS_SAMPLES:
_delta_samples.pop_back()
var sum_delta: float = _delta_samples.reduce(func(a: float, b: float) -> float: return a + b)
var avg_delta := sum_delta / _delta_samples.size()
fps_label.text = "%.1f" % (1 / avg_delta)

View File

@ -0,0 +1 @@
uid://dao84umfatnid

View File

@ -1,17 +1,21 @@
[gd_scene load_steps=12 format=3 uid="uid://dtbulshrxetes"]
[gd_scene load_steps=17 format=3 uid="uid://dtbulshrxetes"]
[ext_resource type="Script" uid="uid://bihaf1xlwpkdo" path="res://src/player/player.gd" id="1_5f2sf"]
[ext_resource type="Script" uid="uid://f3kssctvn2bo" path="res://src/player/camera_controller.gd" id="1_mf2ua"]
[ext_resource type="Script" uid="uid://f3kssctvn2bo" path="res://src/player/camera/camera_controller.gd" id="1_mf2ua"]
[ext_resource type="Script" uid="uid://csjccrhj5wnx7" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="1_rxibo"]
[ext_resource type="Script" uid="uid://8umksf8e80fw" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="2_mf2ua"]
[ext_resource type="Script" uid="uid://032jyhgkb2rv" path="res://src/player/mouselook_controller.gd" id="4_244u8"]
[ext_resource type="Script" uid="uid://buq2c8inefgdl" path="res://src/player/camera/strafe_bank_effect.gd" id="3_x42xx"]
[ext_resource type="Script" uid="uid://032jyhgkb2rv" path="res://src/player/camera/mouselook_controller.gd" id="4_244u8"]
[ext_resource type="Script" uid="uid://c0nxcunx0fo4r" path="res://src/player/movement_controller.gd" id="6_jiejy"]
[ext_resource type="Script" uid="uid://d11erhxna68vd" path="res://src/player/player_input_controller.gd" id="7_o822w"]
[ext_resource type="Script" uid="uid://dao84umfatnid" path="res://src/player/debug_hud.gd" id="9_l271a"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_qnmj6"]
[sub_resource type="CapsuleMesh" id="CapsuleMesh_4anbu"]
[sub_resource type="Curve" id="Curve_x42xx"]
[sub_resource type="Resource" id="Resource_244u8"]
script = ExtResource("2_mf2ua")
duration = 0.4
@ -22,6 +26,13 @@ ease = 0
radius = 0.1
height = 1.0
[sub_resource type="SystemFont" id="SystemFont_x42xx"]
font_names = PackedStringArray("Monospace")
[sub_resource type="Theme" id="Theme_l271a"]
default_font = SubResource("SystemFont_x42xx")
Label/constants/outline_size = 4
[node name="Player" type="CharacterBody3D"]
collision_layer = 3
script = ExtResource("1_5f2sf")
@ -40,14 +51,19 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
script = ExtResource("1_mf2ua")
yaw_root = NodePath("../..")
[node name="PhantomCamera3D" type="Node3D" parent="CameraOffset/CameraController"]
[node name="StrafeBankEffect" type="Node3D" parent="CameraOffset/CameraController" node_paths=PackedStringArray("character")]
script = ExtResource("3_x42xx")
character = NodePath("../../..")
pitch_curve = SubResource("Curve_x42xx")
[node name="PhantomCamera3D" type="Node3D" parent="CameraOffset/CameraController/StrafeBankEffect"]
script = ExtResource("1_rxibo")
priority = 1
tween_resource = SubResource("Resource_244u8")
noise_emitter_layer = 1
metadata/_custom_type_script = "uid://csjccrhj5wnx7"
[node name="MeshInstance3D" type="MeshInstance3D" parent="CameraOffset/CameraController/PhantomCamera3D"]
[node name="MeshInstance3D" type="MeshInstance3D" parent="CameraOffset/CameraController/StrafeBankEffect/PhantomCamera3D"]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0, 0, -0.45)
gi_mode = 0
mesh = SubResource("CapsuleMesh_o822w")
@ -63,3 +79,81 @@ metadata/_custom_type_script = "uid://c0nxcunx0fo4r"
[node name="PlayerInputController" type="Node" parent="MovementController"]
script = ExtResource("7_o822w")
metadata/_custom_type_script = "uid://d11erhxna68vd"
[node name="DebugHUD" type="CanvasLayer" parent="." node_paths=PackedStringArray("player")]
script = ExtResource("9_l271a")
player = NodePath("..")
[node name="Control" type="Control" parent="DebugHUD"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
theme = SubResource("Theme_l271a")
[node name="MarginContainer" type="MarginContainer" parent="DebugHUD/Control"]
layout_mode = 1
offset_right = 40.0
offset_bottom = 40.0
theme_override_constants/margin_left = 64
theme_override_constants/margin_top = 64
theme_override_constants/margin_right = 64
theme_override_constants/margin_bottom = 64
[node name="VBoxContainer" type="VBoxContainer" parent="DebugHUD/Control/MarginContainer"]
layout_mode = 2
[node name="HBoxContainer" type="HBoxContainer" parent="DebugHUD/Control/MarginContainer/VBoxContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="DebugHUD/Control/MarginContainer/VBoxContainer/HBoxContainer"]
layout_mode = 2
text = "FPS: "
[node name="FPSLabel" type="Label" parent="DebugHUD/Control/MarginContainer/VBoxContainer/HBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "0"
[node name="HBoxContainer2" type="HBoxContainer" parent="DebugHUD/Control/MarginContainer/VBoxContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="DebugHUD/Control/MarginContainer/VBoxContainer/HBoxContainer2"]
layout_mode = 2
text = "PLAYER POSITION: "
[node name="PlayerPositionLabel" type="Label" parent="DebugHUD/Control/MarginContainer/VBoxContainer/HBoxContainer2"]
unique_name_in_owner = true
layout_mode = 2
text = "[0.0, 0.0, 0.0]"
[node name="HBoxContainer3" type="HBoxContainer" parent="DebugHUD/Control/MarginContainer/VBoxContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="DebugHUD/Control/MarginContainer/VBoxContainer/HBoxContainer3"]
layout_mode = 2
text = "PLAYER VELOCITY: "
[node name="PlayerVelocityLabel" type="Label" parent="DebugHUD/Control/MarginContainer/VBoxContainer/HBoxContainer3"]
unique_name_in_owner = true
layout_mode = 2
text = "[0.0, 0.0, 0.0]"
[node name="HBoxContainer4" type="HBoxContainer" parent="DebugHUD/Control/MarginContainer/VBoxContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="DebugHUD/Control/MarginContainer/VBoxContainer/HBoxContainer4"]
layout_mode = 2
text = "PLAYER SPEED: "
[node name="PlayerSpeedLabel" type="Label" parent="DebugHUD/Control/MarginContainer/VBoxContainer/HBoxContainer4"]
unique_name_in_owner = true
layout_mode = 2
text = "0.0"
[node name="Label2" type="Label" parent="DebugHUD/Control/MarginContainer/VBoxContainer/HBoxContainer4"]
layout_mode = 2
text = "m/s"