Browse Source

[HTML5] Better editor HTML, small refactor.

Side and GDNative libraries are now added by engine.js , the dynlink pre
js had been deleted.
Fabio Alessandrelli 4 years ago
parent
commit
4e09453407

+ 10 - 1
misc/dist/html/editor.html

@@ -4,7 +4,7 @@
 	<meta charset='utf-8' />
 	<meta charset='utf-8' />
 	<meta name='viewport' content='width=device-width, user-scalable=no' />
 	<meta name='viewport' content='width=device-width, user-scalable=no' />
 	<link id='-gd-engine-icon' rel='icon' type='image/png' href='favicon.png' />
 	<link id='-gd-engine-icon' rel='icon' type='image/png' href='favicon.png' />
-	<title></title>
+	<title>Godot Engine Web Editor ($GODOT_VERSION)</title>
 	<style type='text/css'>
 	<style type='text/css'>
 
 
 		*:focus {
 		*:focus {
@@ -189,8 +189,17 @@
 				<br />
 				<br />
 				<img src="logo.svg" width="1024" height="414" style="width: auto; height: auto; max-width: 85%; max-height: 250px" />
 				<img src="logo.svg" width="1024" height="414" style="width: auto; height: auto; max-width: 85%; max-height: 250px" />
 				<br />
 				<br />
+				$GODOT_VERSION
+				<br />
+				<a href="releases/">Need an old version?</a>
+				<br />
+				<br />
+				<br />
 				<label for="zip-file" style="margin-right: 1rem">Preload project ZIP:</label> <input id="zip-file" type="file" id="files" name="files" style="margin-bottom: 1rem"/>
 				<label for="zip-file" style="margin-right: 1rem">Preload project ZIP:</label> <input id="zip-file" type="file" id="files" name="files" style="margin-bottom: 1rem"/>
 				<br />
 				<br />
+<a href="demo.zip">(Try this for example)</a>
+				<br />
+				<br />
 				<button id="startButton" class="btn" style="margin-bottom: 4rem">Start Godot editor</button>
 				<button id="startButton" class="btn" style="margin-bottom: 4rem">Start Godot editor</button>
 				<br />
 				<br />
 				<button class="btn" onclick="clearPersistence()">Clear persistent data</button>
 				<button class="btn" onclick="clearPersistence()">Clear persistent data</button>

+ 7 - 4
platform/javascript/SCsub

@@ -42,8 +42,6 @@ if env["gdnative_enabled"]:
     sys_env["LIBS"] = []
     sys_env["LIBS"] = []
     # We use IDBFS. Since Emscripten 1.39.1 it needs to be linked explicitly.
     # We use IDBFS. Since Emscripten 1.39.1 it needs to be linked explicitly.
     sys_env.Append(LIBS=["idbfs.js"])
     sys_env.Append(LIBS=["idbfs.js"])
-    # JS prepended to the module code loading the side library.
-    sys_env.Append(LINKFLAGS=["--pre-js", sys_env.File("js/dynlink.pre.js")])
     # Configure it as a main module (dynamic linking support).
     # Configure it as a main module (dynamic linking support).
     sys_env.Append(CCFLAGS=["-s", "MAIN_MODULE=1"])
     sys_env.Append(CCFLAGS=["-s", "MAIN_MODULE=1"])
     sys_env.Append(LINKFLAGS=["-s", "MAIN_MODULE=1"])
     sys_env.Append(LINKFLAGS=["-s", "MAIN_MODULE=1"])
@@ -53,7 +51,6 @@ if env["gdnative_enabled"]:
     sys_env["ENV"]["EMCC_FORCE_STDLIBS"] = "libc,libc++,libc++abi"
     sys_env["ENV"]["EMCC_FORCE_STDLIBS"] = "libc,libc++,libc++abi"
     # The main emscripten runtime, with exported standard libraries.
     # The main emscripten runtime, with exported standard libraries.
     sys = sys_env.Program(build_targets, ["javascript_runtime.cpp"])
     sys = sys_env.Program(build_targets, ["javascript_runtime.cpp"])
-    sys_env.Depends(sys, "js/dynlink.pre.js")
 
 
     # The side library, containing all Godot code.
     # The side library, containing all Godot code.
     wasm_env = env.Clone()
     wasm_env = env.Clone()
@@ -97,7 +94,13 @@ out_files = [
     zip_dir.File(binary_name + ".html"),
     zip_dir.File(binary_name + ".html"),
     zip_dir.File(binary_name + ".audio.worklet.js"),
     zip_dir.File(binary_name + ".audio.worklet.js"),
 ]
 ]
-html_file = "#misc/dist/html/editor.html" if env["tools"] else "#misc/dist/html/full-size.html"
+html_file = "#misc/dist/html/full-size.html"
+if env["tools"]:
+    subst_dict = {"\$GODOT_VERSION": env.GetBuildVersion()}
+    html_file = env.Substfile(
+        target="#bin/godot${PROGSUFFIX}.html", source="#misc/dist/html/editor.html", SUBST_DICT=subst_dict
+    )
+
 in_files = [js_wrapped, build[1], html_file, "#platform/javascript/js/libs/audio.worklet.js"]
 in_files = [js_wrapped, build[1], html_file, "#platform/javascript/js/libs/audio.worklet.js"]
 if env["gdnative_enabled"]:
 if env["gdnative_enabled"]:
     in_files.append(build[2])  # Runtime
     in_files.append(build[2])  # Runtime

+ 11 - 2
platform/javascript/detect.py

@@ -1,7 +1,14 @@
 import os
 import os
 import sys
 import sys
 
 
-from emscripten_helpers import run_closure_compiler, create_engine_file, add_js_libraries, add_js_pre, add_js_externs
+from emscripten_helpers import (
+    run_closure_compiler,
+    create_engine_file,
+    add_js_libraries,
+    add_js_pre,
+    add_js_externs,
+    get_build_version,
+)
 from methods import get_compiler_version
 from methods import get_compiler_version
 from SCons.Util import WhereIs
 from SCons.Util import WhereIs
 
 
@@ -58,7 +65,6 @@ def configure(env):
             sys.exit(255)
             sys.exit(255)
 
 
     ## Build type
     ## Build type
-
     if env["target"] == "release":
     if env["target"] == "release":
         # Use -Os to prioritize optimizing for reduced file size. This is
         # Use -Os to prioritize optimizing for reduced file size. This is
         # particularly valuable for the web platform because it directly
         # particularly valuable for the web platform because it directly
@@ -142,6 +148,9 @@ def configure(env):
     env.AddMethod(add_js_pre, "AddJSPre")
     env.AddMethod(add_js_pre, "AddJSPre")
     env.AddMethod(add_js_externs, "AddJSExterns")
     env.AddMethod(add_js_externs, "AddJSExterns")
 
 
+    # Add method for getting build version string.
+    env.AddMethod(get_build_version, "GetBuildVersion")
+
     # Add method that joins/compiles our Engine files.
     # Add method that joins/compiles our Engine files.
     env.AddMethod(create_engine_file, "CreateEngineFile")
     env.AddMethod(create_engine_file, "CreateEngineFile")
 
 

+ 9 - 0
platform/javascript/emscripten_helpers.py

@@ -15,6 +15,15 @@ def run_closure_compiler(target, source, env, for_signature):
     return " ".join(cmd)
     return " ".join(cmd)
 
 
 
 
+def get_build_version(env):
+    import version
+
+    name = "custom_build"
+    if os.getenv("BUILD_NAME") != None:
+        name = os.getenv("BUILD_NAME")
+    return "%d.%d.%d.%s.%s" % (version.major, version.minor, version.patch, version.status, name)
+
+
 def create_engine_file(env, target, source, externs):
 def create_engine_file(env, target, source, externs):
     if env["use_closure_compiler"]:
     if env["use_closure_compiler"]:
         return env.BuildJS(target, source, JSEXTERNS=externs)
         return env.BuildJS(target, source, JSEXTERNS=externs)

+ 0 - 1
platform/javascript/js/dynlink.pre.js

@@ -1 +0,0 @@
-Module['dynamicLibraries'] = [Module['thisProgram'] + '.side.wasm'].concat(Module['dynamicLibraries'] ? Module['dynamicLibraries'] : []);

+ 1 - 1
platform/javascript/js/engine/engine.js

@@ -62,7 +62,7 @@ const Engine = (function () {
 			// Emscripten configuration.
 			// Emscripten configuration.
 			config['thisProgram'] = me.executableName;
 			config['thisProgram'] = me.executableName;
 			config['noExitRuntime'] = true;
 			config['noExitRuntime'] = true;
-			config['dynamicLibraries'] = me.gdnativeLibs;
+			config['dynamicLibraries'] = [`${me.executableName}.side.wasm`].concat(me.gdnativeLibs);
 			Godot(config).then(function (module) {
 			Godot(config).then(function (module) {
 				module['initFS'](me.persistentPaths).then(function (fs_err) {
 				module['initFS'](me.persistentPaths).then(function (fs_err) {
 					me.rtenv = module;
 					me.rtenv = module;