using EinSoftworks.Events; using EinSoftworks.Input; using EinSoftworks.Movement; using Godot; namespace Voider.Player; public partial class Player : FirstPersonController { [Export] public Label SpeedVal { get; set; } [Export] public Label StateVal { get; set; } [Export] public Label PositionVal { get; set; } [Export] public Label VelocityVal { get; set; } private float _lastSpeed = 0f; public override void _Ready() { // InputManager is initialized by the library InputManager = InputManager.Instance; // Assign CameraNode from scene before calling base._Ready() if (CameraNode == null) { CameraNode = GetNode("CameraMount"); } // Set FOV and camera settings before base._Ready() BaseFov = 75f; MouseSensitivity = 0.35f; ControllerSensitivity = 3.0f; MinPitch = -89f; MaxPitch = 89f; EnableDebugOutput = true; base._Ready(); // Try to find UI labels if they're not already assigned // This allows the scene to work standalone or with external UI if (SpeedVal == null || StateVal == null || PositionVal == null || VelocityVal == null) { // Try to find DebugHUD in the scene tree var ui = GetNodeOrNull("/root/LibraryTest/UI/DebugHUD"); if (ui == null) { ui = GetNodeOrNull("/root/Main/UI/DebugHUD"); } if (ui != null) { SpeedVal = ui.GetNodeOrNull