diff options
Diffstat (limited to 'binding_generator.py')
-rw-r--r-- | binding_generator.py | 69 |
1 files changed, 5 insertions, 64 deletions
diff --git a/binding_generator.py b/binding_generator.py index 9c3284d..eb201ff 100644 --- a/binding_generator.py +++ b/binding_generator.py @@ -131,8 +131,6 @@ def get_file_list(api_filepath, output_dir, headers=False, sources=False): if sources: utility_functions_source_path = source_gen_folder / "variant" / "utility_functions.cpp" files.append(str(utility_functions_source_path.as_posix())) - register_engine_classes_source_path = source_gen_folder / "register_engine_classes.cpp" - files.append(str(register_engine_classes_source_path.as_posix())) return files @@ -520,7 +518,10 @@ def generate_builtin_class_header(builtin_api, size, used_classes, fully_used_cl # Special cases. if class_name == "String" or class_name == "StringName" or class_name == "NodePath": - result.append(f"\t{class_name}(const char *from);") + if class_name == "StringName": + result.append(f"\t{class_name}(const char *from, bool p_static = false);") + else: + result.append(f"\t{class_name}(const char *from);") result.append(f"\t{class_name}(const wchar_t *from);") result.append(f"\t{class_name}(const char16_t *from);") result.append(f"\t{class_name}(const char32_t *from);") @@ -1207,10 +1208,6 @@ def generate_engine_classes_bindings(api, output_dir, use_template_get_node): generate_engine_class_source(class_api, used_classes, fully_used_classes, use_template_get_node) ) - register_engine_classes_filename = Path(output_dir) / "src" / "register_engine_classes.cpp" - with register_engine_classes_filename.open("w+", encoding="utf-8") as source_file: - source_file.write(generate_register_engine_classes_source(api)) - for native_struct in api["native_structures"]: struct_name = native_struct["name"] snake_struct_name = camel_to_snake(struct_name) @@ -1285,7 +1282,7 @@ def generate_engine_class_header(class_api, used_classes, fully_used_classes, us result.append(f"#include <godot_cpp/{get_include_path(included)}>") if class_name == "EditorPlugin": - result.append("#include <godot_cpp/templates/vector.hpp>") + result.append("#include <godot_cpp/classes/editor_plugin_registration.hpp>") if len(fully_used_classes) > 0: result.append("") @@ -1437,30 +1434,6 @@ def generate_engine_class_header(class_api, used_classes, fully_used_classes, us result.append("};") result.append("") - if class_name == "EditorPlugin": - result.append("class EditorPlugins {") - result.append("private:") - result.append("\tstatic Vector<StringName> plugin_classes;") - result.append("") - result.append("public:") - result.append("\tstatic void add_plugin_class(const StringName &p_class_name);") - result.append("\tstatic void remove_plugin_class(const StringName &p_class_name);") - result.append("\tstatic void deinitialize(GDExtensionInitializationLevel p_level);") - result.append("") - - result.append("\ttemplate <class T>") - result.append("\tstatic void add_by_type() {") - result.append("\t\tadd_plugin_class(T::get_class_static());") - result.append("\t}") - - result.append("\ttemplate <class T>") - result.append("\tstatic void remove_by_type() {") - result.append("\t\tremove_plugin_class(T::get_class_static());") - result.append("\t}") - - result.append("};") - result.append("") - result.append("} // namespace godot") result.append("") @@ -1685,38 +1658,6 @@ def generate_engine_class_source(class_api, used_classes, fully_used_classes, us return "\n".join(result) -def generate_register_engine_classes_source(api): - includes = [] - registrations = [] - - for class_api in api["classes"]: - if class_api["name"] == "ClassDB": - continue - - class_name = class_api["name"] - snake_class_name = camel_to_snake(class_name) - - includes.append(f"#include <godot_cpp/classes/{snake_class_name}.hpp>") - registrations.append(f"\tClassDB::register_engine_class<{class_name}>();") - - result = [] - add_header(f"register_engine_classes.cpp", result) - - result.append("#include <godot_cpp/godot.hpp>") - result.append("") - result = result + includes - result.append("") - result.append("namespace godot {") - result.append("") - result.append("void GDExtensionBinding::register_engine_classes() {") - result = result + registrations - result.append("}") - result.append("") - result.append("} // namespace godot ") - - return "\n".join(result) - - def generate_global_constants(api, output_dir): include_gen_folder = Path(output_dir) / "include" / "godot_cpp" / "classes" source_gen_folder = Path(output_dir) / "src" / "classes" |