Skip to content

Commit

Permalink
Merge pull request #90225 from aaronfranke/gltf-ext-prop-list
Browse files Browse the repository at this point in the history
GLTF export: Propagate `property_list_changed` from extensions
  • Loading branch information
akien-mga committed Apr 5, 2024
2 parents ecbd668 + a9416da commit 383de7d
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 0 deletions.
9 changes: 9 additions & 0 deletions modules/gltf/editor/editor_scene_exporter_gltf_settings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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])) {
Expand Down Expand Up @@ -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.
Expand Down
1 change: 1 addition & 0 deletions modules/gltf/editor/editor_scene_exporter_gltf_settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ class EditorSceneExporterGLTFSettings : public RefCounted {
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;
Expand Down

0 comments on commit 383de7d

Please sign in to comment.