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)