summaryrefslogtreecommitdiffstats
path: root/platform/web
diff options
context:
space:
mode:
Diffstat (limited to 'platform/web')
-rw-r--r--platform/web/detect.py10
-rw-r--r--platform/web/doc_classes/EditorExportPlatformWeb.xml54
-rw-r--r--platform/web/export/export.cpp4
-rw-r--r--platform/web/export/export.h1
-rw-r--r--platform/web/export/export_plugin.cpp36
-rw-r--r--platform/web/export/export_plugin.h2
6 files changed, 90 insertions, 17 deletions
diff --git a/platform/web/detect.py b/platform/web/detect.py
index 08c1ff7b4a..419d8918f2 100644
--- a/platform/web/detect.py
+++ b/platform/web/detect.py
@@ -48,6 +48,16 @@ def get_opts():
]
+def get_doc_classes():
+ return [
+ "EditorExportPlatformWeb",
+ ]
+
+
+def get_doc_path():
+ return "doc_classes"
+
+
def get_flags():
return [
("arch", "wasm32"),
diff --git a/platform/web/doc_classes/EditorExportPlatformWeb.xml b/platform/web/doc_classes/EditorExportPlatformWeb.xml
new file mode 100644
index 0000000000..6e5a2ac078
--- /dev/null
+++ b/platform/web/doc_classes/EditorExportPlatformWeb.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="EditorExportPlatformWeb" inherits="EditorExportPlatform" version="4.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+ <brief_description>
+ Exporter for the Web.
+ </brief_description>
+ <description>
+ </description>
+ <tutorials>
+ <link title="Exporting for the Web">$DOCS_URL/tutorials/export/exporting_for_web.html</link>
+ </tutorials>
+ <members>
+ <member name="custom_template/debug" type="String" setter="" getter="">
+ Path to the custom export template. If left empty, default template is used.
+ </member>
+ <member name="custom_template/release" type="String" setter="" getter="">
+ Path to the custom export template. If left empty, default template is used.
+ </member>
+ <member name="html/canvas_resize_policy" type="int" setter="" getter="">
+ The canvas resize policy determines how the canvas should be resized by Godot.
+ </member>
+ <member name="html/custom_html_shell" type="String" setter="" getter="">
+ </member>
+ <member name="html/experimental_virtual_keyboard" type="bool" setter="" getter="">
+ </member>
+ <member name="html/export_icon" type="bool" setter="" getter="">
+ </member>
+ <member name="html/focus_canvas_on_start" type="bool" setter="" getter="">
+ </member>
+ <member name="html/head_include" type="String" setter="" getter="">
+ </member>
+ <member name="progressive_web_app/background_color" type="Color" setter="" getter="">
+ </member>
+ <member name="progressive_web_app/display" type="int" setter="" getter="">
+ </member>
+ <member name="progressive_web_app/enabled" type="bool" setter="" getter="">
+ </member>
+ <member name="progressive_web_app/icon_144x144" type="String" setter="" getter="">
+ </member>
+ <member name="progressive_web_app/icon_180x180" type="String" setter="" getter="">
+ </member>
+ <member name="progressive_web_app/icon_512x512" type="String" setter="" getter="">
+ </member>
+ <member name="progressive_web_app/offline_page" type="String" setter="" getter="">
+ </member>
+ <member name="progressive_web_app/orientation" type="int" setter="" getter="">
+ </member>
+ <member name="variant/extensions_support" type="bool" setter="" getter="">
+ </member>
+ <member name="vram_texture_compression/for_desktop" type="bool" setter="" getter="">
+ </member>
+ <member name="vram_texture_compression/for_mobile" type="bool" setter="" getter="">
+ </member>
+ </members>
+</class>
diff --git a/platform/web/export/export.cpp b/platform/web/export/export.cpp
index 11e728ea16..54d9774da5 100644
--- a/platform/web/export/export.cpp
+++ b/platform/web/export/export.cpp
@@ -33,6 +33,10 @@
#include "editor/editor_settings.h"
#include "export_plugin.h"
+void register_web_exporter_types() {
+ GDREGISTER_VIRTUAL_CLASS(EditorExportPlatformWeb);
+}
+
void register_web_exporter() {
#ifndef ANDROID_ENABLED
EDITOR_DEF("export/web/http_host", "localhost");
diff --git a/platform/web/export/export.h b/platform/web/export/export.h
index 8d2bbfff26..da02bd8d93 100644
--- a/platform/web/export/export.h
+++ b/platform/web/export/export.h
@@ -31,6 +31,7 @@
#ifndef WEB_EXPORT_H
#define WEB_EXPORT_H
+void register_web_exporter_types();
void register_web_exporter();
#endif // WEB_EXPORT_H
diff --git a/platform/web/export/export_plugin.cpp b/platform/web/export/export_plugin.cpp
index d8e04904c7..7a62cd2a4a 100644
--- a/platform/web/export/export_plugin.cpp
+++ b/platform/web/export/export_plugin.cpp
@@ -320,7 +320,7 @@ void EditorExportPlatformWeb::get_preset_features(const Ref<EditorExportPreset>
r_features->push_back("wasm32");
}
-void EditorExportPlatformWeb::get_export_options(List<ExportOption> *r_options) {
+void EditorExportPlatformWeb::get_export_options(List<ExportOption> *r_options) const {
r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "custom_template/debug", PROPERTY_HINT_GLOBAL_FILE, "*.zip"), ""));
r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "custom_template/release", PROPERTY_HINT_GLOBAL_FILE, "*.zip"), ""));
@@ -656,31 +656,35 @@ void EditorExportPlatformWeb::_server_thread_poll(void *data) {
}
EditorExportPlatformWeb::EditorExportPlatformWeb() {
- server.instantiate();
- server_thread.start(_server_thread_poll, this);
+ if (EditorNode::get_singleton()) {
+ server.instantiate();
+ server_thread.start(_server_thread_poll, this);
#ifdef MODULE_SVG_ENABLED
- Ref<Image> img = memnew(Image);
- const bool upsample = !Math::is_equal_approx(Math::round(EDSCALE), EDSCALE);
+ Ref<Image> img = memnew(Image);
+ const bool upsample = !Math::is_equal_approx(Math::round(EDSCALE), EDSCALE);
- ImageLoaderSVG img_loader;
- img_loader.create_image_from_string(img, _web_logo_svg, EDSCALE, upsample, false);
- logo = ImageTexture::create_from_image(img);
+ ImageLoaderSVG img_loader;
+ img_loader.create_image_from_string(img, _web_logo_svg, EDSCALE, upsample, false);
+ logo = ImageTexture::create_from_image(img);
- img_loader.create_image_from_string(img, _web_run_icon_svg, EDSCALE, upsample, false);
- run_icon = ImageTexture::create_from_image(img);
+ img_loader.create_image_from_string(img, _web_run_icon_svg, EDSCALE, upsample, false);
+ run_icon = ImageTexture::create_from_image(img);
#endif
- Ref<Theme> theme = EditorNode::get_singleton()->get_editor_theme();
- if (theme.is_valid()) {
- stop_icon = theme->get_icon(SNAME("Stop"), SNAME("EditorIcons"));
- } else {
- stop_icon.instantiate();
+ Ref<Theme> theme = EditorNode::get_singleton()->get_editor_theme();
+ if (theme.is_valid()) {
+ stop_icon = theme->get_icon(SNAME("Stop"), SNAME("EditorIcons"));
+ } else {
+ stop_icon.instantiate();
+ }
}
}
EditorExportPlatformWeb::~EditorExportPlatformWeb() {
- server->stop();
+ if (server.is_valid()) {
+ server->stop();
+ }
server_quit = true;
server_thread.wait_to_finish();
}
diff --git a/platform/web/export/export_plugin.h b/platform/web/export/export_plugin.h
index e74c945837..334f12d64d 100644
--- a/platform/web/export/export_plugin.h
+++ b/platform/web/export/export_plugin.h
@@ -99,7 +99,7 @@ class EditorExportPlatformWeb : public EditorExportPlatform {
public:
virtual void get_preset_features(const Ref<EditorExportPreset> &p_preset, List<String> *r_features) const override;
- virtual void get_export_options(List<ExportOption> *r_options) override;
+ virtual void get_export_options(List<ExportOption> *r_options) const override;
virtual String get_name() const override;
virtual String get_os_name() const override;