From cf84ee22a9b884453ac8d50b4c3216baf2e3897a Mon Sep 17 00:00:00 2001 From: Juan Linietsky Date: Sat, 16 Dec 2017 16:11:13 -0300 Subject: [PATCH] Added custom editor splash (including sponsor logo). --- SConstruct | 4 +++ main/SCsub | 24 ++++++++++++++++++ main/main.cpp | 6 +++++ ...{splash_sponsors.png => splash_editor.png} | Bin scene/resources/packed_scene.cpp | 2 +- 5 files changed, 35 insertions(+), 1 deletion(-) rename main/{splash_sponsors.png => splash_editor.png} (100%) diff --git a/SConstruct b/SConstruct index af1ffb544e7..ad6b6ee4451 100644 --- a/SConstruct +++ b/SConstruct @@ -188,6 +188,7 @@ opts.Add(BoolVariable('builtin_squish', "Use the builtin squish library", True)) opts.Add(BoolVariable('builtin_thekla_atlas', "Use the builtin thekla_altas library", True)) opts.Add(BoolVariable('builtin_zlib', "Use the builtin zlib library", True)) opts.Add(BoolVariable('builtin_zstd', "Use the builtin zstd library", True)) +opts.Add(BoolVariable('no_editor_splash', "Don't use the custom splash screen for the editor", False)) # Environment setup opts.Add("CXX", "C++ compiler") @@ -239,6 +240,9 @@ if (env_base['target'] == 'debug'): env_base.Append(CPPFLAGS=['-DDEBUG_MEMORY_ALLOC']) env_base.Append(CPPFLAGS=['-DSCI_NAMESPACE']) +if (env_base['no_editor_splash']): + env_base.Append(CPPFLAGS=['-DNO_EDITOR_SPLASH']) + if not env_base['deprecated']: env_base.Append(CPPFLAGS=['-DDISABLE_DEPRECATED']) diff --git a/main/SCsub b/main/SCsub index 2cc617fc2c7..37491636e1e 100644 --- a/main/SCsub +++ b/main/SCsub @@ -24,6 +24,27 @@ def make_splash(target, source, env): g.write("#endif") +def make_splash_editor(target, source, env): + + src = source[0].srcnode().abspath + dst = target[0].srcnode().abspath + f = open(src, "rb") + g = open(dst, "w") + + buf = f.read() + + g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n") + g.write("#ifndef BOOT_SPLASH_EDITOR_H\n") + g.write("#define BOOT_SPLASH_EDITOR_H\n") + g.write('static const Color boot_splash_editor_bg_color = Color::html("#232323");\n') + g.write("static const unsigned char boot_splash_editor_png[] = {\n") + for i in range(len(buf)): + g.write(byte_to_str(buf[i]) + ",\n") + g.write("};\n") + g.write("#endif") + + + def make_app_icon(target, source, env): src = source[0].srcnode().abspath @@ -51,6 +72,9 @@ Export('env') env.Depends("#main/splash.gen.h", "#main/splash.png") env.Command("#main/splash.gen.h", "#main/splash.png", make_splash) +env.Depends("#main/splash_editor.gen.h", "#main/splash.png") +env.Command("#main/splash_editor.gen.h", "#main/splash_editor.png", make_splash_editor) + env.Depends("#main/app_icon.gen.h", "#main/app_icon.png") env.Command("#main/app_icon.gen.h", "#main/app_icon.png", make_app_icon) diff --git a/main/main.cpp b/main/main.cpp index c6e20f6d3b8..ab520c5e7f0 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -42,6 +42,7 @@ #include "script_debugger_remote.h" #include "servers/register_server_types.h" #include "splash.gen.h" +#include "splash_editor.gen.h" #include "input_map.h" #include "io/resource_loader.h" @@ -1051,7 +1052,12 @@ Error Main::setup2(Thread::ID p_main_tid_override) { #ifndef NO_DEFAULT_BOOT_LOGO MAIN_PRINT("Main: Create bootsplash"); +#if defined(TOOLS_ENABLED) && !defined(NO_EDITOR_SPLASH) + + Ref splash = editor ? memnew(Image(boot_splash_editor_png)) : memnew(Image(boot_splash_png)); +#else Ref splash = memnew(Image(boot_splash_png)); +#endif MAIN_PRINT("Main: ClearColor"); VisualServer::get_singleton()->set_default_clear_color(boot_splash_bg_color); diff --git a/main/splash_sponsors.png b/main/splash_editor.png similarity index 100% rename from main/splash_sponsors.png rename to main/splash_editor.png diff --git a/scene/resources/packed_scene.cpp b/scene/resources/packed_scene.cpp index af6375c6e08..879f76e6d8d 100644 --- a/scene/resources/packed_scene.cpp +++ b/scene/resources/packed_scene.cpp @@ -1213,7 +1213,7 @@ Dictionary SceneState::get_bundled_scene() const { rnodes.push_back(nd.owner); rnodes.push_back(nd.type); uint32_t name_index = nd.name; - if (nd.index < (1 << (32 - NAME_INDEX_BITS))) { //save if less than 16k childs + if (nd.index < (1 << (32 - NAME_INDEX_BITS)) - 1) { //save if less than 16k childs name_index |= uint32_t(nd.index + 1) << NAME_INDEX_BITS; //for backwards compatibility, index 0 is no index } rnodes.push_back(name_index);