summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--editor/editor_export.h1
-rw-r--r--editor/editor_run_native.cpp2
-rw-r--r--methods.py35
-rw-r--r--platform/android/export/export.cpp12
-rw-r--r--platform/android/run_icon.pngbin0 -> 636 bytes
-rw-r--r--platform/javascript/export/export.cpp41
-rw-r--r--platform/javascript/run_icon.pngbin0 -> 471 bytes
7 files changed, 72 insertions, 19 deletions
diff --git a/editor/editor_export.h b/editor/editor_export.h
index 740f05174b..64381fbb35 100644
--- a/editor/editor_export.h
+++ b/editor/editor_export.h
@@ -197,6 +197,7 @@ public:
};
virtual Error run(const Ref<EditorExportPreset> &p_preset, int p_device, int p_debug_flags) { return OK; }
+ virtual Ref<Texture> get_run_icon() const { return get_logo(); }
virtual bool can_export(const Ref<EditorExportPreset> &p_preset, String &r_error, bool &r_missing_templates) const = 0;
diff --git a/editor/editor_run_native.cpp b/editor/editor_run_native.cpp
index 4a767621ef..52b7e6992d 100644
--- a/editor/editor_run_native.cpp
+++ b/editor/editor_run_native.cpp
@@ -41,7 +41,7 @@ void EditorRunNative::_notification(int p_what) {
Ref<EditorExportPlatform> eep = EditorExport::get_singleton()->get_export_platform(i);
if (eep.is_null())
continue;
- Ref<ImageTexture> icon = eep->get_logo();
+ Ref<ImageTexture> icon = eep->get_run_icon();
if (!icon.is_null()) {
Ref<Image> im = icon->get_data();
im = im->duplicate();
diff --git a/methods.py b/methods.py
index 2f9d45897e..4d3d5ae343 100644
--- a/methods.py
+++ b/methods.py
@@ -1513,23 +1513,26 @@ def split_lib(self, libname):
def save_active_platforms(apnames, ap):
for x in ap:
- pth = x + "/logo.png"
-# print("open path: "+pth)
- pngf = open(pth, "rb")
- b = pngf.read(1)
- str = " /* AUTOGENERATED FILE, DO NOT EDIT */ \n"
- str += " static const unsigned char _" + x[9:] + "_logo[]={"
- while(len(b) == 1):
- str += hex(ord(b))
- b = pngf.read(1)
- if (len(b) == 1):
- str += ","
-
- str += "};\n"
+ names = ['logo']
+ if os.path.isfile(x + "/run_icon.png"):
+ names.append('run_icon')
- wf = x + "/logo.gen.h"
- logow = open(wf, "wb")
- logow.write(str)
+ for name in names:
+ pngf = open(x + "/" + name + ".png", "rb")
+ b = pngf.read(1)
+ str = " /* AUTOGENERATED FILE, DO NOT EDIT */ \n"
+ str += " static const unsigned char _" + x[9:] + "_" + name + "[]={"
+ while(len(b) == 1):
+ str += hex(ord(b))
+ b = pngf.read(1)
+ if (len(b) == 1):
+ str += ","
+
+ str += "};\n"
+
+ wf = x + "/" + name + ".gen.h"
+ pngw = open(wf, "wb")
+ pngw.write(str)
def no_verbose(sys, env):
diff --git a/platform/android/export/export.cpp b/platform/android/export/export.cpp
index d6ed234669..a72e8aa90e 100644
--- a/platform/android/export/export.cpp
+++ b/platform/android/export/export.cpp
@@ -37,6 +37,7 @@
#include "os/file_access.h"
#include "os/os.h"
#include "platform/android/logo.gen.h"
+#include "platform/android/run_icon.gen.h"
#include "version.h"
#include <string.h>
#if 0
@@ -2042,6 +2043,7 @@ class EditorExportAndroid : public EditorExportPlatform {
GDCLASS(EditorExportAndroid, EditorExportPlatform)
Ref<ImageTexture> logo;
+ Ref<ImageTexture> run_icon;
struct Device {
@@ -3036,6 +3038,10 @@ public:
return OK;
}
+ virtual Ref<Texture> get_run_icon() const {
+ return run_icon;
+ }
+
virtual bool can_export(const Ref<EditorExportPreset> &p_preset, String &r_error, bool &r_missing_templates) const {
r_missing_templates = find_export_template("android_debug.apk") == String() || find_export_template("android_release.apk") == String();
@@ -3524,9 +3530,13 @@ public:
EditorExportAndroid() {
Ref<Image> img = memnew(Image(_android_logo));
- logo = Ref<ImageTexture>(memnew(ImageTexture));
+ logo.instance();
logo->create_from_image(img);
+ img = Ref<Image>(memnew(Image(_android_run_icon)));
+ run_icon.instance();
+ run_icon->create_from_image(img);
+
device_lock = Mutex::create();
device_thread = Thread::create(_device_poll_thread, this);
devices_changed = true;
diff --git a/platform/android/run_icon.png b/platform/android/run_icon.png
new file mode 100644
index 0000000000..e53f8e9da5
--- /dev/null
+++ b/platform/android/run_icon.png
Binary files differ
diff --git a/platform/javascript/export/export.cpp b/platform/javascript/export/export.cpp
index 8b04deabd7..4bdfdae39e 100644
--- a/platform/javascript/export/export.cpp
+++ b/platform/javascript/export/export.cpp
@@ -31,6 +31,7 @@
#include "editor_export.h"
#include "io/zip_io.h"
#include "platform/javascript/logo.gen.h"
+#include "platform/javascript/run_icon.gen.h"
#define EXPORT_TEMPLATE_WEBASSEMBLY_RELEASE "webassembly_release.zip"
#define EXPORT_TEMPLATE_WEBASSEMBLY_DEBUG "webassembly_debug.zip"
@@ -42,6 +43,8 @@ class EditorExportPlatformJavaScript : public EditorExportPlatform {
GDCLASS(EditorExportPlatformJavaScript, EditorExportPlatform)
Ref<ImageTexture> logo;
+ Ref<ImageTexture> run_icon;
+ bool runnable_when_last_polled;
void _fix_html(Vector<uint8_t> &p_html, const Ref<EditorExportPreset> &p_preset, const String &p_name, bool p_debug);
void _fix_fsloader_js(Vector<uint8_t> &p_js, const String &p_pack_name, uint64_t p_pack_size);
@@ -64,10 +67,12 @@ public:
virtual String get_binary_extension() const;
virtual Error export_project(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path, int p_flags = 0);
- virtual int get_device_count() const { return 1; }
+ virtual bool poll_devices();
+ virtual int get_device_count() const;
virtual String get_device_name(int p_device) const { return TTR("Run in Browser"); }
virtual String get_device_info(int p_device) const { return TTR("Run exported HTML in the system's default browser."); }
virtual Error run(const Ref<EditorExportPreset> &p_preset, int p_device, int p_debug_flags);
+ virtual Ref<Texture> get_run_icon() const;
EditorExportPlatformJavaScript();
};
@@ -303,6 +308,29 @@ Error EditorExportPlatformJavaScript::export_project(const Ref<EditorExportPrese
return OK;
}
+bool EditorExportPlatformJavaScript::poll_devices() {
+
+ Ref<EditorExportPreset> preset;
+
+ for (int i = 0; i < EditorExport::get_singleton()->get_export_preset_count(); i++) {
+
+ Ref<EditorExportPreset> ep = EditorExport::get_singleton()->get_export_preset(i);
+ if (ep->is_runnable() && ep->get_platform() == this) {
+ preset = ep;
+ break;
+ }
+ }
+
+ bool prev = runnable_when_last_polled;
+ runnable_when_last_polled = preset.is_valid();
+ return runnable_when_last_polled != prev;
+}
+
+int EditorExportPlatformJavaScript::get_device_count() const {
+
+ return runnable_when_last_polled;
+}
+
Error EditorExportPlatformJavaScript::run(const Ref<EditorExportPreset> &p_preset, int p_device, int p_debug_flags) {
String path = EditorSettings::get_singleton()->get_settings_path() + "/tmp/tmp_export.html";
@@ -314,11 +342,22 @@ Error EditorExportPlatformJavaScript::run(const Ref<EditorExportPreset> &p_prese
return OK;
}
+Ref<Texture> EditorExportPlatformJavaScript::get_run_icon() const {
+
+ return run_icon;
+}
+
EditorExportPlatformJavaScript::EditorExportPlatformJavaScript() {
Ref<Image> img = memnew(Image(_javascript_logo));
logo.instance();
logo->create_from_image(img);
+
+ img = Ref<Image>(memnew(Image(_javascript_run_icon)));
+ run_icon.instance();
+ run_icon->create_from_image(img);
+
+ runnable_when_last_polled = false;
}
void register_javascript_exporter() {
diff --git a/platform/javascript/run_icon.png b/platform/javascript/run_icon.png
new file mode 100644
index 0000000000..dedee6f479
--- /dev/null
+++ b/platform/javascript/run_icon.png
Binary files differ