Files
ai-game-2/addons/transition_configurator/transition_inspector_plugin.gd
Bryce 4954732552 Add Transition Configurator plugin for easy exit configuration
Features:
- Fuzzy search for finding destination rooms
- Lists all TransitionPieces in selected room as arrival points
- Bidirectional wiring - updates return transition automatically
- Auto-reloads destination scene in editor
- UndoRedo support for source scene changes

Files added:
- addons/transition_configurator/plugin.cfg
- addons/transition_configurator/transition_configurator.gd
- addons/transition_configurator/transition_inspector_plugin.gd
- addons/transition_configurator/config_dialog.gd
- addons/transition_configurator/fuzzy_search.gd
- addons/transition_configurator/README.md
2026-03-16 09:26:03 -07:00

44 lines
1.2 KiB
GDScript

@tool
extends EditorInspectorPlugin
const CONFIG_DIALOG = preload("res://addons/transition_configurator/config_dialog.gd")
var config_dialog: Window = null
func _can_handle(object: Object) -> bool:
return object is TransitionPiece
func _parse_begin(object: Object) -> void:
var container = VBoxContainer.new()
container.add_theme_constant_override("separation", 10)
# Header label
var header = Label.new()
header.text = "Exit Configuration"
header.add_theme_font_size_override("font_size", 14)
container.add_child(header)
# Configure button
var button = Button.new()
button.text = "Configure Exit..."
button.custom_minimum_size = Vector2(200, 40)
button.pressed.connect(_on_configure_pressed.bind(object))
container.add_child(button)
# Separator
var separator = HSeparator.new()
separator.add_theme_constant_override("separation", 10)
container.add_child(separator)
add_custom_control(container)
func _on_configure_pressed(transition_piece: TransitionPiece) -> void:
if config_dialog == null:
config_dialog = CONFIG_DIALOG.new()
add_child(config_dialog)
config_dialog.transition_piece = transition_piece
config_dialog.populate_rooms()
EditorInterface.popup_dialog_centered(config_dialog, Vector2i(900, 600))