starcheese/Debuggable.gd

44 lines
1.2 KiB
GDScript3
Raw Permalink Normal View History

2025-01-04 02:25:39 +01:00
extends Node2D
signal debug_updated(node: Node, debug_text: String)
@export var update_interval: float = 1.0 # Throttle debug updates
@export var default_debug_text: String = "No debug info available." # Default text
var update_timer: float = 0.0
# Store debug data providers
var debug_providers: Array = []
func _ready():
if not is_in_group("debuggable"):
add_to_group("debuggable")
emit_debug_info()
# Register a system or component as a debug provider
func register_debug_provider(provider: Callable):
if provider not in debug_providers:
debug_providers.append(provider)
print("Registered debug provider:", provider)
# Update debug information from all providers
func update_debug():
var debug_info = []
debug_info.append("=== Node Debug Info ===")
for provider in debug_providers:
if provider.is_valid():
var data = provider.call()
for key in data.keys():
debug_info.append("%s: %s" % [key.capitalize(), data[key]])
emit_signal("debug_updated", self, String("\n").join(debug_info))
func _process(delta: float):
update_timer += delta
if update_timer >= update_interval:
update_timer = 0.0
update_debug()
func emit_debug_info():
emit_signal("debug_updated", self, default_debug_text)