mirror of
				https://github.com/JHDev2006/Super-Mario-Bros.-Remastered-Public.git
				synced 2025-11-04 08:35:41 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			73 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			GDScript
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			GDScript
		
	
	
		
			Executable File
		
	
	
	
	
@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)
 |