extends Control const DefaultDisplay = preload("InspectorDisplay.tscn") const DefaultControl = preload("InspectorControl.tscn") const DefaultSpacer = preload("InspectorSpacer.tscn") @export var target: Node2D func _ready(): if target: setTarget(target) func setTarget(newTarget): target = newTarget for child in get_children(): child.queue_free() var definition = target.getInspecctorDefinition() for spec in definition: if 'type' in spec: match (spec.type): 'spacer': add_child(DefaultSpacer.instantiate()) continue var node = (DefaultControl if spec.editable else DefaultDisplay).instantiate() node.property = spec.property node.target = target node.label = spec.label if 'min' in spec: node.min = spec.min if 'max' in spec: node.max = spec.max add_child(node)