From c21426e74fdb3bb6ac7e6436aed1acae829471ec Mon Sep 17 00:00:00 2001 From: why-try313 Date: Tue, 21 Feb 2023 11:11:49 +0100 Subject: [PATCH 1/4] [FIX] Failsafe env["TOOLS"] variable getter --- SCsub | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/SCsub b/SCsub index b8486b59..aa80b6a1 100644 --- a/SCsub +++ b/SCsub @@ -5,6 +5,7 @@ Import('env') Import('env_modules') env_module = env_modules.Clone() JS_ENGINE = 'quickjs' +TOOLS = env.get('TOOLS'); def open_file(path, mode): if platform.python_version() > '3': @@ -41,7 +42,7 @@ if JS_ENGINE == 'quickjs': env_module.Append(CPPPATH=["quickjs/quickjs"]) # env_module.Append(CXXFLAGS=["-std=c++20"]) # env_module.Append(CCFLAGS=["-std=c++20"]) - if env['tools']: + if TOOLS: env_module.add_source_files(env.modules_sources, 'tools/editor_tools.cpp') env_module.add_source_files(env.modules_sources, 'quickjs/quickjs_builtin_binder.gen.cpp') env_module.add_source_files(env.modules_sources, 'quickjs/*.cpp') @@ -60,7 +61,7 @@ sources = [ 'misc/godot.binding_script.gen.cpp', ] -if env['tools']: +if TOOLS: base_text = '/* THIS FILE IS GENERATED DO NOT EDIT */\n#include "editor_tools.h"\nString JavaScriptPlugin::{} = \n{};' tool_fns = {"tools/godot.d.ts.gen.cpp": ("BUILTIN_DECLARATION_TEXT", dump_text_file_to_cpp("misc/godot.d.ts")), "tools/tsconfig.json.gen.cpp": ("TSCONFIG_CONTENT", dump_text_file_to_cpp("misc/tsconfig.json")), From 331496370c31eb6452288608e13de8aabe78317c Mon Sep 17 00:00:00 2001 From: why-try313 Date: Tue, 21 Feb 2023 11:13:53 +0100 Subject: [PATCH 2/4] [FIX] Fixed missing comma --- javascript_language.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javascript_language.cpp b/javascript_language.cpp index 58601b2b..a1d1b919 100644 --- a/javascript_language.cpp +++ b/javascript_language.cpp @@ -163,7 +163,7 @@ void JavaScriptLanguage::get_reserved_words(List *p_words) const { "RegExp", "ArrayBuffer", "SharedArrayBuffer", - "Uint8ClampedArray" + "Uint8ClampedArray", "Int8Array", "Uint8Array", "Int16Array", From 1216d8dabd9b4caaeda9d69109b44f79d7c6c5f2 Mon Sep 17 00:00:00 2001 From: why-try313 Date: Tue, 21 Feb 2023 11:18:05 +0100 Subject: [PATCH 3/4] [FIX] Adds GDNative to GDExtension migration changes --- javascript_language.cpp | 2 +- javascript_language.h | 4 ++-- register_types.cpp | 36 +++++++++++++++++++----------------- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/javascript_language.cpp b/javascript_language.cpp index a1d1b919..cd2fe07a 100644 --- a/javascript_language.cpp +++ b/javascript_language.cpp @@ -18,7 +18,7 @@ static void free_callback(void *p_token, void *p_instance, void *p_binding) { } } -static GDNativeBool reference_callback(void *p_token, void *p_binding, GDNativeBool p_reference) { +static GDExtensionBool reference_callback(void *p_token, void *p_binding, GDExtensionBool p_reference) { if (JavaScriptBinder *binder = JavaScriptLanguage::get_singleton()->get_thread_binder(Thread::get_caller_id())) { if (p_reference) { binder->godot_refcount_incremented(static_cast(p_binding)); diff --git a/javascript_language.h b/javascript_language.h index f7e0fec2..aaf0ee07 100644 --- a/javascript_language.h +++ b/javascript_language.h @@ -21,7 +21,7 @@ class JavaScriptLanguage : public ScriptLanguage { static JavaScriptLanguage *singleton; JavaScriptBinder *main_binder; HashMap thread_binder_map; - GDNativeInstanceBindingCallbacks instance_binding_callbacks; + GDExtensionInstanceBindingCallbacks instance_binding_callbacks; CallableMiddleman *callable_middleman; #ifdef TOOLS_ENABLED @@ -43,7 +43,7 @@ class JavaScriptLanguage : public ScriptLanguage { } _FORCE_INLINE_ virtual String get_name() const override { return "JavaScript"; } - const GDNativeInstanceBindingCallbacks *get_instance_binding_callbacks() const { return &instance_binding_callbacks; } + const GDExtensionInstanceBindingCallbacks *get_instance_binding_callbacks() const { return &instance_binding_callbacks; } #ifdef TOOLS_ENABLED _FORCE_INLINE_ HashSet > &get_scripts() { return scripts; } #endif diff --git a/register_types.cpp b/register_types.cpp index 9b68a728..8b5781f2 100644 --- a/register_types.cpp +++ b/register_types.cpp @@ -44,32 +44,34 @@ class EditorExportJavaScript : public EditorExportPlugin { public: virtual void _export_file(const String &p_path, const String &p_type, const HashSet &p_features) override { - int script_mode = EditorExportPreset::MODE_SCRIPT_COMPILED; + String script_key; + // int script_mode = EditorExportPreset::MODE_SCRIPT_COMPILED; const Ref &preset = get_export_preset(); - if (preset.is_valid()) { - script_mode = preset->get_script_export_mode(); - } + // if (preset.is_valid()) { + // script_mode = preset->get_file_export_mode(p_path); + // } - if (script_mode == EditorExportPreset::MODE_SCRIPT_TEXT) - return; + // if (script_mode == EditorExportPreset::MODE_SCRIPT_TEXT) + // return; String extension = p_path.get_extension(); if (extension != EXT_JSCLASS && extension != EXT_JSMODULE) return; - if (script_mode == EditorExportPreset::ScriptExportMode::MODE_SCRIPT_COMPILED) { -#if 0 // Disable compile to bytecode as it is not battle tested on all platform - Error err; - String code = FileAccess::get_file_as_string(p_path, &err); - ERR_FAIL_COND(err != OK); - - Vector file; - ERR_FAIL_COND(JavaScriptLanguage::get_singleton()->get_main_binder()->compile_to_bytecode(code, p_path, file) != OK); - add_file(p_path.get_basename() + "." + extension + "b", file, true); -#endif - } +// if (script_mode == EditorExportPreset::FileExportMode::MODE_SCRIPT_COMPILED) { +// #if 0 // Disable compile to bytecode as it is not battle tested on all platform +// Error err; +// String code = FileAccess::get_file_as_string(p_path, &err); +// ERR_FAIL_COND(err != OK); + +// Vector file; +// ERR_FAIL_COND(JavaScriptLanguage::get_singleton()->get_main_binder()->compile_to_bytecode(code, p_path, file) != OK); +// add_file(p_path.get_basename() + "." + extension + "b", file, true); +// #endif +// } } + virtual String _get_name() const override { return "JavaScript"; } }; #endif From 9b1695391c43aa456e001de517680c45d42ba69d Mon Sep 17 00:00:00 2001 From: why-try313 Date: Tue, 21 Feb 2023 11:18:37 +0100 Subject: [PATCH 4/4] [FIX] Adds missing get_global_name method --- javascript.cpp | 4 ++++ javascript.h | 1 + 2 files changed, 5 insertions(+) diff --git a/javascript.cpp b/javascript.cpp index 6445358f..411965e3 100644 --- a/javascript.cpp +++ b/javascript.cpp @@ -23,6 +23,10 @@ bool JavaScript::can_instantiate() const { #endif } +StringName JavaScript::get_global_name() const { + return StringName(); +} + StringName JavaScript::get_instance_base_type() const { static StringName empty; ERR_FAIL_NULL_V(javascript_class, empty); diff --git a/javascript.h b/javascript.h index 0c499bdd..1ffbf1a3 100644 --- a/javascript.h +++ b/javascript.h @@ -43,6 +43,7 @@ class JavaScript : public Script { virtual Ref