| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- @tool
- extends EditorPlugin
- const AUTOLOAD_NAME = "BetterTerrain"
- var dock : Control
- var button : Button
- func _enter_tree() -> void:
- # Wait for autoloads to register
- await get_tree().process_frame
-
- if !get_tree().root.get_node_or_null(^"BetterTerrain"):
- # Autoload wasn't present on plugin init, which means plugin won't have loaded correctly
- add_autoload_singleton(AUTOLOAD_NAME, "res://addons/better-terrain/BetterTerrain.gd")
- ProjectSettings.save()
-
- var confirm = ConfirmationDialog.new()
- confirm.dialog_text = "The editor needs to be restarted for Better Terrain to load correctly. Restart now? Note: Unsaved changes will be lost."
- confirm.confirmed.connect(func():
- OS.set_restart_on_exit(true, ["-e"])
- get_tree().quit()
- )
- get_editor_interface().popup_dialog_centered(confirm)
-
- dock = load("res://addons/better-terrain/editor/Dock.tscn").instantiate()
- dock.update_overlay.connect(self.update_overlays)
- get_editor_interface().get_editor_main_screen().mouse_exited.connect(dock.canvas_mouse_exit)
- dock.undo_manager = get_undo_redo()
- button = add_control_to_bottom_panel(dock, "Terrain")
- button.toggled.connect(dock.about_to_be_visible)
- dock.force_show_terrains.connect(button.toggled.emit.bind(true))
- button.visible = false
- func _exit_tree() -> void:
- remove_control_from_bottom_panel(dock)
- dock.queue_free()
- func _handles(object) -> bool:
- return object is TileMapLayer or object is TileSet
- func _make_visible(visible) -> void:
- button.visible = visible
- func _edit(object) -> void:
- var new_tileset : TileSet = null
-
- if object is TileMapLayer:
- dock.tilemap = object
- new_tileset = object.tile_set
- if object is TileSet:
- new_tileset = object
-
- if dock.tileset != new_tileset:
- dock.tiles_about_to_change()
- dock.tileset = new_tileset
- dock.tiles_changed()
- func _forward_canvas_draw_over_viewport(overlay: Control) -> void:
- if dock.visible:
- dock.canvas_draw(overlay)
- func _forward_canvas_gui_input(event: InputEvent) -> bool:
- if !dock.visible:
- return false
-
- return dock.canvas_input(event)
|