forked from kanium/starcheese
44 lines
1.2 KiB
GDScript
44 lines
1.2 KiB
GDScript
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)
|