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
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
@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))
|
||||
Reference in New Issue
Block a user