summaryrefslogtreecommitdiffstats
path: root/editor
diff options
context:
space:
mode:
authorFredia Huya-Kouadio <fhuya@meta.com>2024-09-13 13:05:20 -0700
committerFredia Huya-Kouadio <fhuyakou@gmail.com>2024-09-29 15:05:05 -0700
commit7a909896f73cf7ed81ba39028b75315ecf851628 (patch)
tree2c20af8ebad9f65277ba3cd963b9fd74b687b7ba /editor
parent84dcdde9088d512efebb0033fb881d8f7fd9c107 (diff)
downloadredot-engine-7a909896f73cf7ed81ba39028b75315ecf851628.tar.gz
Expose `get_export_option_visibility` to editor plugins
Diffstat (limited to 'editor')
-rw-r--r--editor/export/editor_export_plugin.cpp7
-rw-r--r--editor/export/editor_export_plugin.h2
-rw-r--r--editor/export/editor_export_preset.cpp25
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);
+ }
}
}
}