@tool class_name PFD extends Node2D @export var euler_attitude_deg: Vector3: set(value): euler_attitude_deg = value horizon_pivot.rotation = deg_to_rad(-value.x) const px_per_deg: float = 6.56 horizon_background.position.y = px_per_deg * clamp(value.y, -30, 30) heading_ticks.rotation = deg_to_rad(-value.z) heading_label.text = "%03d" % (int(round(value.z) + 360) % 360) @export var airspeed: float: set(value): airspeed = value airspeed_label.text = str(int(round(value))) @export var groundspeed: float: set(value): groundspeed = value groundspeed_label.text = str(int(round(value))) @export var altitude: float: set(value): altitude = value var step = 1 if value > 49.5: step = 5 if value > 99.5: step = 10 altitude_label.text = str(int(step * round(value / step))) @export var climbrate: float = 1000: set(value): climbrate = value climbrate_arrow.scale.y = clamp(value / 1000.0, -1, 1) @onready var horizon_pivot: Node2D = $HorizonMask/HorizonOrigin/Pivot @onready var horizon_background: Node2D = $HorizonMask/HorizonOrigin/Pivot/Background @onready var heading_ticks: Node2D = $HeadingOrigin/Ticks @onready var climbrate_arrow: Node2D = $ClimbrateOrigin/Polygon2D @onready var airspeed_label: Label = $Airspeed @onready var groundspeed_label: Label = $Groundspeed @onready var altitude_label: Label = $Altitude @onready var heading_label: Label = $Heading func update(aircraft: Transform3D, velocity: Vector3): var godot_euler = aircraft.basis.get_euler() euler_attitude_deg = Vector3(godot_euler.z, -godot_euler.x, -godot_euler.y) * rad_to_deg(1)