Merge pull request #108658 from bruvzg/ed_pl_init

[EditorExportPlatform] Move initialization to a dedicated method.
This commit is contained in:
Thaddeus Crews 2025-09-30 18:35:25 -05:00
commit 5240f1c283
No known key found for this signature in database
GPG key ID: 8C6E5FEB5FC03CCC
21 changed files with 56 additions and 31 deletions

View file

@ -221,6 +221,12 @@
Returns [code]true[/code] if project configuration is valid. Returns [code]true[/code] if project configuration is valid.
</description> </description>
</method> </method>
<method name="_initialize" qualifiers="virtual">
<return type="void" />
<description>
Initializes the plugin. Called by the editor when platform is registered.
</description>
</method>
<method name="_is_executable" qualifiers="virtual const"> <method name="_is_executable" qualifiers="virtual const">
<return type="bool" /> <return type="bool" />
<param index="0" name="path" type="String" /> <param index="0" name="path" type="String" />

View file

@ -127,6 +127,7 @@ void EditorExport::_bind_methods() {
} }
void EditorExport::add_export_platform(const Ref<EditorExportPlatform> &p_platform) { void EditorExport::add_export_platform(const Ref<EditorExportPlatform> &p_platform) {
p_platform->initialize();
export_platforms.push_back(p_platform); export_platforms.push_back(p_platform);
should_update_presets = true; should_update_presets = true;

View file

@ -349,6 +349,8 @@ public:
virtual void resolve_platform_feature_priorities(const Ref<EditorExportPreset> &p_preset, HashSet<String> &p_features) {} virtual void resolve_platform_feature_priorities(const Ref<EditorExportPreset> &p_preset, HashSet<String> &p_features) {}
virtual String get_debug_protocol() const { return "tcp://"; } virtual String get_debug_protocol() const { return "tcp://"; }
virtual HashMap<String, Variant> get_custom_project_settings(const Ref<EditorExportPreset> &p_preset) const { return HashMap<String, Variant>(); } virtual HashMap<String, Variant> get_custom_project_settings(const Ref<EditorExportPreset> &p_preset) const { return HashMap<String, Variant>(); }
virtual void initialize() {}
}; };
VARIANT_ENUM_CAST(EditorExportPlatform::ExportMessageType) VARIANT_ENUM_CAST(EditorExportPlatform::ExportMessageType)

View file

@ -2815,23 +2815,21 @@ Error EditorExportPlatformAppleEmbedded::run(const Ref<EditorExportPreset> &p_pr
#endif #endif
} }
EditorExportPlatformAppleEmbedded::EditorExportPlatformAppleEmbedded(const char *p_platform_logo_svg, const char *p_run_icon_svg) { void EditorExportPlatformAppleEmbedded::_initialize(const char *p_platform_logo_svg, const char *p_run_icon_svg) {
if (EditorNode::get_singleton()) { Ref<Image> img = memnew(Image);
Ref<Image> img = memnew(Image); const bool upsample = !Math::is_equal_approx(Math::round(EDSCALE), EDSCALE);
const bool upsample = !Math::is_equal_approx(Math::round(EDSCALE), EDSCALE);
ImageLoaderSVG::create_image_from_string(img, p_platform_logo_svg, EDSCALE, upsample, false); ImageLoaderSVG::create_image_from_string(img, p_platform_logo_svg, EDSCALE, upsample, false);
logo = ImageTexture::create_from_image(img); logo = ImageTexture::create_from_image(img);
ImageLoaderSVG::create_image_from_string(img, p_run_icon_svg, EDSCALE, upsample, false); ImageLoaderSVG::create_image_from_string(img, p_run_icon_svg, EDSCALE, upsample, false);
run_icon = ImageTexture::create_from_image(img); run_icon = ImageTexture::create_from_image(img);
plugins_changed.set(); plugins_changed.set();
devices_changed.set(); devices_changed.set();
#ifdef MACOS_ENABLED #ifdef MACOS_ENABLED
_update_preset_status(); _update_preset_status();
#endif #endif
}
} }
EditorExportPlatformAppleEmbedded::~EditorExportPlatformAppleEmbedded() { EditorExportPlatformAppleEmbedded::~EditorExportPlatformAppleEmbedded() {

View file

@ -229,6 +229,8 @@ protected:
r_features->push_back("apple_embedded"); r_features->push_back("apple_embedded");
} }
void _initialize(const char *p_platform_logo_svg, const char *p_run_icon_svg);
public: public:
virtual Ref<Texture2D> get_logo() const override { return logo; } virtual Ref<Texture2D> get_logo() const override { return logo; }
virtual Ref<Texture2D> get_run_icon() const override { return run_icon; } virtual Ref<Texture2D> get_run_icon() const override { return run_icon; }
@ -279,7 +281,6 @@ public:
virtual void resolve_platform_feature_priorities(const Ref<EditorExportPreset> &p_preset, HashSet<String> &p_features) override { virtual void resolve_platform_feature_priorities(const Ref<EditorExportPreset> &p_preset, HashSet<String> &p_features) override {
} }
EditorExportPlatformAppleEmbedded(const char *p_platform_logo_svg, const char *p_run_icon_svg);
~EditorExportPlatformAppleEmbedded(); ~EditorExportPlatformAppleEmbedded();
/// List the gdip files in the directory specified by the p_path parameter. /// List the gdip files in the directory specified by the p_path parameter.

View file

@ -81,6 +81,8 @@ void EditorExportPlatformExtension::_bind_methods() {
GDVIRTUAL_BIND(_get_platform_features); GDVIRTUAL_BIND(_get_platform_features);
GDVIRTUAL_BIND(_get_debug_protocol); GDVIRTUAL_BIND(_get_debug_protocol);
GDVIRTUAL_BIND(_initialize);
} }
void EditorExportPlatformExtension::get_preset_features(const Ref<EditorExportPreset> &p_preset, List<String> *r_features) const { void EditorExportPlatformExtension::get_preset_features(const Ref<EditorExportPreset> &p_preset, List<String> *r_features) const {
@ -358,6 +360,10 @@ String EditorExportPlatformExtension::get_debug_protocol() const {
return EditorExportPlatform::get_debug_protocol(); return EditorExportPlatform::get_debug_protocol();
} }
void EditorExportPlatformExtension::initialize() {
GDVIRTUAL_CALL(_initialize);
}
EditorExportPlatformExtension::EditorExportPlatformExtension() { EditorExportPlatformExtension::EditorExportPlatformExtension() {
//NOP //NOP
} }

View file

@ -151,6 +151,9 @@ public:
virtual String get_debug_protocol() const override; virtual String get_debug_protocol() const override;
GDVIRTUAL0RC(String, _get_debug_protocol); GDVIRTUAL0RC(String, _get_debug_protocol);
virtual void initialize() override;
GDVIRTUAL0(_initialize);
EditorExportPlatformExtension(); EditorExportPlatformExtension();
~EditorExportPlatformExtension(); ~EditorExportPlatformExtension();
}; };

View file

@ -4250,7 +4250,7 @@ void EditorExportPlatformAndroid::get_platform_features(List<String> *r_features
void EditorExportPlatformAndroid::resolve_platform_feature_priorities(const Ref<EditorExportPreset> &p_preset, HashSet<String> &p_features) { void EditorExportPlatformAndroid::resolve_platform_feature_priorities(const Ref<EditorExportPreset> &p_preset, HashSet<String> &p_features) {
} }
EditorExportPlatformAndroid::EditorExportPlatformAndroid() { void EditorExportPlatformAndroid::initialize() {
if (EditorNode::get_singleton()) { if (EditorNode::get_singleton()) {
Ref<Image> img = memnew(Image); Ref<Image> img = memnew(Image);
const bool upsample = !Math::is_equal_approx(Math::round(EDSCALE), EDSCALE); const bool upsample = !Math::is_equal_approx(Math::round(EDSCALE), EDSCALE);

View file

@ -279,7 +279,7 @@ public:
virtual void resolve_platform_feature_priorities(const Ref<EditorExportPreset> &p_preset, HashSet<String> &p_features) override; virtual void resolve_platform_feature_priorities(const Ref<EditorExportPreset> &p_preset, HashSet<String> &p_features) override;
EditorExportPlatformAndroid(); virtual void initialize() override;
~EditorExportPlatformAndroid(); ~EditorExportPlatformAndroid();
}; };

View file

@ -33,13 +33,17 @@
#include "logo_svg.gen.h" #include "logo_svg.gen.h"
#include "run_icon_svg.gen.h" #include "run_icon_svg.gen.h"
#include "editor/editor_node.h"
Vector<String> EditorExportPlatformIOS::device_types({ "iPhone", "iPad" }); Vector<String> EditorExportPlatformIOS::device_types({ "iPhone", "iPad" });
EditorExportPlatformIOS::EditorExportPlatformIOS() : void EditorExportPlatformIOS::initialize() {
EditorExportPlatformAppleEmbedded(_ios_logo_svg, _ios_run_icon_svg) { if (EditorNode::get_singleton()) {
EditorExportPlatformAppleEmbedded::_initialize(_ios_logo_svg, _ios_run_icon_svg);
#ifdef MACOS_ENABLED #ifdef MACOS_ENABLED
_start_remote_device_poller_thread(); _start_remote_device_poller_thread();
#endif #endif
}
} }
EditorExportPlatformIOS::~EditorExportPlatformIOS() { EditorExportPlatformIOS::~EditorExportPlatformIOS() {

View file

@ -63,6 +63,6 @@ public:
r_features->push_back("ios"); r_features->push_back("ios");
} }
EditorExportPlatformIOS(); virtual void initialize() override;
~EditorExportPlatformIOS(); ~EditorExportPlatformIOS();
}; };

View file

@ -612,7 +612,7 @@ Error EditorExportPlatformLinuxBSD::run(const Ref<EditorExportPreset> &p_preset,
#undef CLEANUP_AND_RETURN #undef CLEANUP_AND_RETURN
} }
EditorExportPlatformLinuxBSD::EditorExportPlatformLinuxBSD() { void EditorExportPlatformLinuxBSD::initialize() {
if (EditorNode::get_singleton()) { if (EditorNode::get_singleton()) {
Ref<Image> img = memnew(Image); Ref<Image> img = memnew(Image);
const bool upsample = !Math::is_equal_approx(Math::round(EDSCALE), EDSCALE); const bool upsample = !Math::is_equal_approx(Math::round(EDSCALE), EDSCALE);

View file

@ -89,5 +89,5 @@ public:
virtual Error run(const Ref<EditorExportPreset> &p_preset, int p_device, BitField<EditorExportPlatform::DebugFlags> p_debug_flags) override; virtual Error run(const Ref<EditorExportPreset> &p_preset, int p_device, BitField<EditorExportPlatform::DebugFlags> p_debug_flags) override;
virtual void cleanup() override; virtual void cleanup() override;
EditorExportPlatformLinuxBSD(); virtual void initialize() override;
}; };

View file

@ -2814,7 +2814,7 @@ Error EditorExportPlatformMacOS::run(const Ref<EditorExportPreset> &p_preset, in
#undef CLEANUP_AND_RETURN #undef CLEANUP_AND_RETURN
} }
EditorExportPlatformMacOS::EditorExportPlatformMacOS() { void EditorExportPlatformMacOS::initialize() {
if (EditorNode::get_singleton()) { if (EditorNode::get_singleton()) {
Ref<Image> img = memnew(Image); Ref<Image> img = memnew(Image);
const bool upsample = !Math::is_equal_approx(Math::round(EDSCALE), EDSCALE); const bool upsample = !Math::is_equal_approx(Math::round(EDSCALE), EDSCALE);

View file

@ -170,5 +170,5 @@ public:
virtual Error run(const Ref<EditorExportPreset> &p_preset, int p_device, BitField<EditorExportPlatform::DebugFlags> p_debug_flags) override; virtual Error run(const Ref<EditorExportPreset> &p_preset, int p_device, BitField<EditorExportPlatform::DebugFlags> p_debug_flags) override;
virtual void cleanup() override; virtual void cleanup() override;
EditorExportPlatformMacOS(); virtual void initialize() override;
}; };

View file

@ -33,13 +33,17 @@
#include "logo_svg.gen.h" #include "logo_svg.gen.h"
#include "run_icon_svg.gen.h" #include "run_icon_svg.gen.h"
#include "editor/editor_node.h"
Vector<String> EditorExportPlatformVisionOS::device_types({ "realityDevice" }); Vector<String> EditorExportPlatformVisionOS::device_types({ "realityDevice" });
EditorExportPlatformVisionOS::EditorExportPlatformVisionOS() : void EditorExportPlatformVisionOS::initialize() {
EditorExportPlatformAppleEmbedded(_visionos_logo_svg, _visionos_run_icon_svg) { if (EditorNode::get_singleton()) {
EditorExportPlatformAppleEmbedded::_initialize(_visionos_logo_svg, _visionos_run_icon_svg);
#ifdef MACOS_ENABLED #ifdef MACOS_ENABLED
_start_remote_device_poller_thread(); _start_remote_device_poller_thread();
#endif #endif
}
} }
EditorExportPlatformVisionOS::~EditorExportPlatformVisionOS() { EditorExportPlatformVisionOS::~EditorExportPlatformVisionOS() {

View file

@ -58,6 +58,6 @@ public:
r_features->push_back("visionos"); r_features->push_back("visionos");
} }
EditorExportPlatformVisionOS(); virtual void initialize() override;
~EditorExportPlatformVisionOS(); ~EditorExportPlatformVisionOS();
}; };

View file

@ -916,7 +916,7 @@ Ref<Texture2D> EditorExportPlatformWeb::get_run_icon() const {
return run_icon; return run_icon;
} }
EditorExportPlatformWeb::EditorExportPlatformWeb() { void EditorExportPlatformWeb::initialize() {
if (EditorNode::get_singleton()) { if (EditorNode::get_singleton()) {
server.instantiate(); server.instantiate();

View file

@ -148,6 +148,6 @@ public:
String get_debug_protocol() const override { return "ws://"; } String get_debug_protocol() const override { return "ws://"; }
EditorExportPlatformWeb(); virtual void initialize() override;
~EditorExportPlatformWeb(); ~EditorExportPlatformWeb();
}; };

View file

@ -1094,7 +1094,7 @@ Error EditorExportPlatformWindows::run(const Ref<EditorExportPreset> &p_preset,
#undef CLEANUP_AND_RETURN #undef CLEANUP_AND_RETURN
} }
EditorExportPlatformWindows::EditorExportPlatformWindows() { void EditorExportPlatformWindows::initialize() {
if (EditorNode::get_singleton()) { if (EditorNode::get_singleton()) {
Ref<Image> img = memnew(Image); Ref<Image> img = memnew(Image);
const bool upsample = !Math::is_equal_approx(Math::round(EDSCALE), EDSCALE); const bool upsample = !Math::is_equal_approx(Math::round(EDSCALE), EDSCALE);

View file

@ -97,5 +97,5 @@ public:
virtual Error run(const Ref<EditorExportPreset> &p_preset, int p_device, BitField<EditorExportPlatform::DebugFlags> p_debug_flags) override; virtual Error run(const Ref<EditorExportPreset> &p_preset, int p_device, BitField<EditorExportPlatform::DebugFlags> p_debug_flags) override;
virtual void cleanup() override; virtual void cleanup() override;
EditorExportPlatformWindows(); virtual void initialize() override;
}; };