@@ -70,7 +70,8 @@ def GlobRecursive(path, pattern, **kwargs):
70
70
'GBIND_METHODS_APPEND' ,
71
71
'GBIND_METHODS_PREPEND' ,
72
72
'GRESOURCE_LOADER' ,
73
- 'GRESOURCE_SAVER'
73
+ 'GRESOURCE_SAVER' ,
74
+ 'GEDITOR_PLUGIN'
74
75
] + INIT_LEVELS
75
76
76
77
ALL_KEYWORDS = KEYWORDS + TARGETLESS_KEYWORDS
@@ -525,6 +526,11 @@ def process_macros(item, macros, properties, is_ignored=False):
525
526
case 'GRESOURCE_SAVER' :
526
527
class_defs ['is_resource_saver' ] = True
527
528
529
+ case 'GEDITOR_PLUGIN' :
530
+ class_defs ['init_level' ] = 'EDITOR'
531
+ class_defs ['is_editor_plugin' ] = True
532
+
533
+
528
534
529
535
return not is_ignored
530
536
@@ -734,13 +740,17 @@ def make_register_str_pair(class_name_full, content):
734
740
loaders_savers .append (f'extern Ref<{ class_name_full } > { variable_name } ;' )
735
741
register_str += f'\t { variable_name } .instantiate();\n \t ResourceLoader::get_singleton()->add_resource_format_loader({ variable_name } );\n '
736
742
unregister_str += f'\t ResourceLoader::get_singleton()->remove_resource_format_loader({ variable_name } );\n \t { variable_name } .unref();\n '
743
+
737
744
elif 'is_resource_saver' in content :
738
745
variable_name = f'{ content ["class_name" ]} _saver'
739
746
740
747
loaders_savers .append (f'extern Ref<{ class_name_full } > { variable_name } ;\n ' )
741
748
register_str += f'\t { variable_name } .instantiate();\n \t ResourceSaver::get_singleton()->add_resource_format_saver({ variable_name } );\n '
742
749
unregister_str += f'\t ResourceSaver::get_singleton()->remove_resource_format_saver({ variable_name } );\n \t { variable_name } .unref();\n '
743
750
751
+ elif 'is_editor_plugin' in content :
752
+ register_str += f'\t EditorPlugins::add_by_type<{ class_name_full } >();\n '
753
+
744
754
return register_str , unregister_str
745
755
746
756
for file , filecontent in defs_all ['files' ].items ():
@@ -768,7 +778,7 @@ def make_register_str_pair(class_name_full, content):
768
778
if loaders_savers != []:
769
779
scripts_header += '#include <godot_cpp/classes/resource_loader.hpp>\n '
770
780
scripts_header += '#include <godot_cpp/classes/resource_saver.hpp>\n '
771
-
781
+
772
782
classes_register_str = ''
773
783
if classes_register_levels ['CORE' ] != []:
774
784
minimal_register_level = 'MODULE_INITIALIZATION_LEVEL_CORE'
0 commit comments