diff options
author | Fredia Huya-Kouadio <fhuya@meta.com> | 2024-09-13 13:05:20 -0700 |
---|---|---|
committer | Fredia Huya-Kouadio <fhuyakou@gmail.com> | 2024-09-29 15:05:05 -0700 |
commit | 7a909896f73cf7ed81ba39028b75315ecf851628 (patch) | |
tree | 2c20af8ebad9f65277ba3cd963b9fd74b687b7ba /editor | |
parent | 84dcdde9088d512efebb0033fb881d8f7fd9c107 (diff) | |
download | redot-engine-7a909896f73cf7ed81ba39028b75315ecf851628.tar.gz |
Expose `get_export_option_visibility` to editor plugins
Diffstat (limited to 'editor')
-rw-r--r-- | editor/export/editor_export_plugin.cpp | 7 | ||||
-rw-r--r-- | editor/export/editor_export_plugin.h | 2 | ||||
-rw-r--r-- | editor/export/editor_export_preset.cpp | 25 |
3 files changed, 32 insertions, 2 deletions
diff --git a/editor/export/editor_export_plugin.cpp b/editor/export/editor_export_plugin.cpp index 5945c02413..999216b495 100644 --- a/editor/export/editor_export_plugin.cpp +++ b/editor/export/editor_export_plugin.cpp @@ -295,6 +295,12 @@ bool EditorExportPlugin::_should_update_export_options(const Ref<EditorExportPla return ret; } +bool EditorExportPlugin::_get_export_option_visibility(const Ref<EditorExportPlatform> &p_export_platform, const String &p_option_name) const { + bool ret = true; + GDVIRTUAL_CALL(_get_export_option_visibility, p_export_platform, p_option_name, ret); + return ret; +} + String EditorExportPlugin::_get_export_option_warning(const Ref<EditorExportPlatform> &p_export_platform, const String &p_option_name) const { String ret; GDVIRTUAL_CALL(_get_export_option_warning, p_export_platform, p_option_name, ret); @@ -354,6 +360,7 @@ void EditorExportPlugin::_bind_methods() { GDVIRTUAL_BIND(_get_export_options, "platform"); GDVIRTUAL_BIND(_get_export_options_overrides, "platform"); GDVIRTUAL_BIND(_should_update_export_options, "platform"); + GDVIRTUAL_BIND(_get_export_option_visibility, "platform", "option"); GDVIRTUAL_BIND(_get_export_option_warning, "platform", "option"); GDVIRTUAL_BIND(_get_export_features, "platform", "debug"); diff --git a/editor/export/editor_export_plugin.h b/editor/export/editor_export_plugin.h index 4c0107af72..db11d25f7d 100644 --- a/editor/export/editor_export_plugin.h +++ b/editor/export/editor_export_plugin.h @@ -132,6 +132,7 @@ protected: GDVIRTUAL1RC(TypedArray<Dictionary>, _get_export_options, const Ref<EditorExportPlatform> &); GDVIRTUAL1RC(Dictionary, _get_export_options_overrides, const Ref<EditorExportPlatform> &); GDVIRTUAL1RC(bool, _should_update_export_options, const Ref<EditorExportPlatform> &); + GDVIRTUAL2RC(bool, _get_export_option_visibility, const Ref<EditorExportPlatform> &, String); GDVIRTUAL2RC(String, _get_export_option_warning, const Ref<EditorExportPlatform> &, String); GDVIRTUAL0RC(String, _get_name) @@ -160,6 +161,7 @@ protected: virtual void _get_export_options(const Ref<EditorExportPlatform> &p_export_platform, List<EditorExportPlatform::ExportOption> *r_options) const; virtual Dictionary _get_export_options_overrides(const Ref<EditorExportPlatform> &p_export_platform) const; virtual bool _should_update_export_options(const Ref<EditorExportPlatform> &p_export_platform) const; + virtual bool _get_export_option_visibility(const Ref<EditorExportPlatform> &p_export_platform, const String &p_option_name) const; virtual String _get_export_option_warning(const Ref<EditorExportPlatform> &p_export_platform, const String &p_option_name) const; public: diff --git a/editor/export/editor_export_preset.cpp b/editor/export/editor_export_preset.cpp index 9f805666d0..2a468139d4 100644 --- a/editor/export/editor_export_preset.cpp +++ b/editor/export/editor_export_preset.cpp @@ -135,8 +135,29 @@ String EditorExportPreset::_get_property_warning(const StringName &p_name) const void EditorExportPreset::_get_property_list(List<PropertyInfo> *p_list) const { for (const KeyValue<StringName, PropertyInfo> &E : properties) { - if (!value_overrides.has(E.key) && platform->get_export_option_visibility(this, E.key)) { - p_list->push_back(E.value); + if (!value_overrides.has(E.key)) { + bool property_visible = platform->get_export_option_visibility(this, E.key); + if (!property_visible) { + continue; + } + + // Get option visibility from editor export plugins. + Vector<Ref<EditorExportPlugin>> export_plugins = EditorExport::get_singleton()->get_export_plugins(); + for (int i = 0; i < export_plugins.size(); i++) { + if (!export_plugins[i]->supports_platform(platform)) { + continue; + } + + export_plugins.write[i]->set_export_preset(Ref<EditorExportPreset>(this)); + property_visible = export_plugins[i]->_get_export_option_visibility(platform, E.key); + if (!property_visible) { + break; + } + } + + if (property_visible) { + p_list->push_back(E.value); + } } } } |