diff options
| author | Rémi Verschelde <rverschelde@gmail.com> | 2024-04-05 12:16:41 +0200 |
|---|---|---|
| committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-04-05 12:16:41 +0200 |
| commit | 383de7da1964fbf4065f5df6068eb7ce23f3916f (patch) | |
| tree | 3408631a74b8018be7d323d3cbb150342ceb9255 | |
| parent | ecbd668ff36e1706752ba12531b85b115b500c67 (diff) | |
| parent | a9416da6ea92fdb90ecddedcc7a1913c93cf156f (diff) | |
| download | redot-engine-383de7da1964fbf4065f5df6068eb7ce23f3916f.tar.gz | |
Merge pull request #90225 from aaronfranke/gltf-ext-prop-list
GLTF export: Propagate `property_list_changed` from extensions
| -rw-r--r-- | modules/gltf/editor/editor_scene_exporter_gltf_settings.cpp | 9 | ||||
| -rw-r--r-- | modules/gltf/editor/editor_scene_exporter_gltf_settings.h | 1 |
2 files changed, 10 insertions, 0 deletions
diff --git a/modules/gltf/editor/editor_scene_exporter_gltf_settings.cpp b/modules/gltf/editor/editor_scene_exporter_gltf_settings.cpp index b0283b0c55..d11300343a 100644 --- a/modules/gltf/editor/editor_scene_exporter_gltf_settings.cpp +++ b/modules/gltf/editor/editor_scene_exporter_gltf_settings.cpp @@ -84,6 +84,11 @@ void EditorSceneExporterGLTFSettings::_get_property_list(List<PropertyInfo> *p_l } } +void EditorSceneExporterGLTFSettings::_on_extension_property_list_changed() { + generate_property_list(_document); + emit_signal("property_list_changed"); +} + bool EditorSceneExporterGLTFSettings::_set_extension_setting(const String &p_name_str, const Variant &p_value) { PackedStringArray split = String(p_name_str).split("/", true, 1); if (!_config_name_to_extension_map.has(split[0])) { @@ -130,6 +135,10 @@ void EditorSceneExporterGLTFSettings::generate_property_list(Ref<GLTFDocument> p String image_format_hint_string = "None,PNG,JPEG"; // Add properties from all document extensions. for (Ref<GLTFDocumentExtension> &extension : GLTFDocument::get_all_gltf_document_extensions()) { + const Callable on_prop_changed = callable_mp(this, &EditorSceneExporterGLTFSettings::_on_extension_property_list_changed); + if (!extension->is_connected("property_list_changed", on_prop_changed)) { + extension->connect("property_list_changed", on_prop_changed); + } const String config_prefix = get_friendly_config_prefix(extension); _config_name_to_extension_map[config_prefix] = extension; // If the extension allows saving in different image formats, add to the enum. diff --git a/modules/gltf/editor/editor_scene_exporter_gltf_settings.h b/modules/gltf/editor/editor_scene_exporter_gltf_settings.h index 6032932367..e1ce674274 100644 --- a/modules/gltf/editor/editor_scene_exporter_gltf_settings.h +++ b/modules/gltf/editor/editor_scene_exporter_gltf_settings.h @@ -48,6 +48,7 @@ protected: bool _set(const StringName &p_name, const Variant &p_value); bool _get(const StringName &p_name, Variant &r_ret) const; void _get_property_list(List<PropertyInfo> *p_list) const; + void _on_extension_property_list_changed(); bool _set_extension_setting(const String &p_name_str, const Variant &p_value); bool _get_extension_setting(const String &p_name_str, Variant &r_ret) const; |
