diff --git a/addons/block_code/block_code_node/block_code.gd b/addons/block_code/block_code_node/block_code.gd index fc03f04f..eaafb088 100644 --- a/addons/block_code/block_code_node/block_code.gd +++ b/addons/block_code/block_code_node/block_code.gd @@ -4,7 +4,6 @@ class_name BlockCode extends Node @export var block_script: BlockScriptData = null -static var plugin func _ready(): @@ -31,10 +30,6 @@ func _enter_tree(): new_bsd.generated_script = new_bsd.generated_script.replace("INHERIT_DEFAULT", new_bsd.script_inherits) block_script = new_bsd - if plugin == null: - plugin = ClassDB.instantiate("EditorPlugin") - plugin.add_inspector_plugin(load("res://addons/block_code/inspector_plugin/block_script_inspector.gd").new()) - func _update_parent_script(): if Engine.is_editor_hint(): diff --git a/addons/block_code/block_code_plugin.gd b/addons/block_code/block_code_plugin.gd index b45a84f4..70ef59bf 100644 --- a/addons/block_code/block_code_plugin.gd +++ b/addons/block_code/block_code_plugin.gd @@ -6,6 +6,9 @@ const MainPanel := preload("res://addons/block_code/ui/main_panel.tscn") static var main_panel: MainPanel static var block_code_button: Button +const BlockInspectorPlugin := preload("res://addons/block_code/inspector_plugin/block_script_inspector.gd") +var block_inspector_plugin: BlockInspectorPlugin + var editor_inspector: EditorInspector var editor_selection: EditorSelection @@ -52,6 +55,8 @@ func _enter_tree(): main_panel = MainPanel.instantiate() main_panel.undo_redo = get_undo_redo() block_code_button = add_control_to_bottom_panel(main_panel, _get_plugin_name()) + block_inspector_plugin = BlockInspectorPlugin.new() + add_inspector_plugin(block_inspector_plugin) # Remove unwanted class nodes from create node old_feature_profile = EditorInterface.get_current_feature_profile() @@ -71,6 +76,8 @@ func _enter_tree(): func _exit_tree(): + remove_inspector_plugin(block_inspector_plugin) + if block_code_button: remove_control_from_bottom_panel(main_panel) block_code_button = null @@ -155,7 +162,8 @@ func select_block_code_node(block_code: BlockCode): func _refresh_block_code_node(): - main_panel.switch_block_code_node(_selected_block_code) + if main_panel: + main_panel.switch_block_code_node(_selected_block_code) func _on_selected_block_code_changed(): diff --git a/addons/block_code/inspector_plugin/block_script_inspector.gd b/addons/block_code/inspector_plugin/block_script_inspector.gd index f40ef60b..73722d36 100644 --- a/addons/block_code/inspector_plugin/block_script_inspector.gd +++ b/addons/block_code/inspector_plugin/block_script_inspector.gd @@ -10,7 +10,7 @@ func _parse_begin(object): var button := Button.new() button.text = "Open Block Script" - button.pressed.connect(func(): BlockCodePlugin.main_panel.switch_script(block_code)) + button.pressed.connect(func(): BlockCodePlugin.main_panel.switch_block_code_node(block_code)) var container := MarginContainer.new() container.add_theme_constant_override("margin_bottom", 10) diff --git a/addons/block_code/ui/picker/categories/block_category.gd b/addons/block_code/ui/picker/categories/block_category.gd index 428d79c5..4cc9066f 100644 --- a/addons/block_code/ui/picker/categories/block_category.gd +++ b/addons/block_code/ui/picker/categories/block_category.gd @@ -1,5 +1,5 @@ class_name BlockCategory -extends Object +extends RefCounted var name: String var block_list: Array[Block]