@@ -70,7 +70,8 @@ def GlobRecursive(path, pattern, **kwargs):
7070 'GBIND_METHODS_APPEND' ,
7171 'GBIND_METHODS_PREPEND' ,
7272 'GRESOURCE_LOADER' ,
73- 'GRESOURCE_SAVER'
73+ 'GRESOURCE_SAVER' ,
74+ 'GEDITOR_PLUGIN'
7475] + INIT_LEVELS
7576
7677ALL_KEYWORDS = KEYWORDS + TARGETLESS_KEYWORDS
@@ -525,6 +526,11 @@ def process_macros(item, macros, properties, is_ignored=False):
525526 case 'GRESOURCE_SAVER' :
526527 class_defs ['is_resource_saver' ] = True
527528
529+ case 'GEDITOR_PLUGIN' :
530+ class_defs ['init_level' ] = 'EDITOR'
531+ class_defs ['is_editor_plugin' ] = True
532+
533+
528534
529535 return not is_ignored
530536
@@ -734,13 +740,17 @@ def make_register_str_pair(class_name_full, content):
734740 loaders_savers .append (f'extern Ref<{ class_name_full } > { variable_name } ;' )
735741 register_str += f'\t { variable_name } .instantiate();\n \t ResourceLoader::get_singleton()->add_resource_format_loader({ variable_name } );\n '
736742 unregister_str += f'\t ResourceLoader::get_singleton()->remove_resource_format_loader({ variable_name } );\n \t { variable_name } .unref();\n '
743+
737744 elif 'is_resource_saver' in content :
738745 variable_name = f'{ content ["class_name" ]} _saver'
739746
740747 loaders_savers .append (f'extern Ref<{ class_name_full } > { variable_name } ;\n ' )
741748 register_str += f'\t { variable_name } .instantiate();\n \t ResourceSaver::get_singleton()->add_resource_format_saver({ variable_name } );\n '
742749 unregister_str += f'\t ResourceSaver::get_singleton()->remove_resource_format_saver({ variable_name } );\n \t { variable_name } .unref();\n '
743750
751+ elif 'is_editor_plugin' in content :
752+ register_str += f'\t EditorPlugins::add_by_type<{ class_name_full } >();\n '
753+
744754 return register_str , unregister_str
745755
746756 for file , filecontent in defs_all ['files' ].items ():
@@ -768,7 +778,7 @@ def make_register_str_pair(class_name_full, content):
768778 if loaders_savers != []:
769779 scripts_header += '#include <godot_cpp/classes/resource_loader.hpp>\n '
770780 scripts_header += '#include <godot_cpp/classes/resource_saver.hpp>\n '
771-
781+
772782 classes_register_str = ''
773783 if classes_register_levels ['CORE' ] != []:
774784 minimal_register_level = 'MODULE_INITIALIZATION_LEVEL_CORE'
0 commit comments