@@ -123,15 +123,28 @@ def __cinit__(self):
123123@staticmethod
124124def __godot_extension_unregister_class():
125125 # print("[DEBUG] { spec .class_name } .__godot_extension_unregister_class()")
126+
127+ global __godot_extension_{ spec .class_name } _registered
128+ if not __godot_extension_{ spec .class_name } _registered:
129+ print("Not registered !", flush=True)
130+ raise RuntimeError("Not registered !")
131+
126132 { spec .class_name + "." + spec .unregister_class_hook + "()" if spec .unregister_class_hook is not None else "" }
127133 unregister_extension_class(b"{ spec .class_name } ")
128134 gd_string_name_del(&__godot_extension_{ spec .class_name } _class_name)
129135 gd_string_name_del(&__godot_extension_{ spec .class_name } _parent_class_name)
130136
137+ __godot_extension_{ spec .class_name } _registered = False
138+
131139@staticmethod
132140def __godot_extension_register_class():
133141 # print("[DEBUG] { spec .class_name } .__godot_extension_register_class()")
134142
143+ global __godot_extension_{ spec .class_name } _registered
144+ if __godot_extension_{ spec .class_name } _registered:
145+ print("Already registered !", flush=True)
146+ raise RuntimeError("Already registered !")
147+
135148 global __godot_extension_{ spec .class_name } _class_name
136149 global __godot_extension_{ spec .class_name } _parent_class_name
137150 __godot_extension_{ spec .class_name } _class_name = gd_string_name_from_unchecked_pystr("{ spec .class_name } ")
@@ -147,6 +160,8 @@ def __godot_extension_register_class():
147160 { "True" if spec .is_abstract else "False" } ,
148161 { "True" if spec .is_exposed else "False" } ,
149162 )
163+
164+ __godot_extension_{ spec .class_name } _registered = True
150165"""
151166 for method in spec .methods :
152167 cooked_params = "["
@@ -218,6 +233,7 @@ def generate_injected_module_code(spec: ModuleDef) -> str:
218233 for klass in spec .classes :
219234 code += f"""
220235# { klass .class_name }
236+ cdef bint __godot_extension_{ klass .class_name } _registered = False
221237cdef gd_string_name_t __godot_extension_{ klass .class_name } _class_name
222238cdef gd_string_name_t __godot_extension_{ klass .class_name } _parent_class_name
223239"""
0 commit comments