summaryrefslogtreecommitdiff
path: root/platform/javascript
AgeCommit message (Collapse)Author
2021-06-11Rename Reference to RefCountedPedro J. Estébanez
2021-06-11Core: Move DirAccess and FileAccess to `core/io`Rémi Verschelde
File handling APIs are typically considered part of I/O, and we did have most `FileAccess` implementations in `core/io` already.
2021-06-08Fixed missed IDHandler dependency in GodotFetchArthur Bikmullin
2021-06-03Add MOUSE_MODE_CONFINED_HIDDENAaron Franke
Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
2021-06-01Move remaining dummy drivers to servers.Fabio Alessandrelli
2021-06-01LinuxBSD now compiles without vulkan/x11.Fabio Alessandrelli
2021-05-31Implement shader cachingreduz
* Shader compilation is now cached. Subsequent loads take less than a millisecond. * Improved game, editor and project manager startup time. * Editor uses .godot/shader_cache to store shaders. * Game uses user://shader_cache * Project manager uses $config_dir/shader_cache * Options to tweak shader caching in project settings. * Editor path configuration moved from EditorSettings to new class, EditorPaths, so it can be available early on (before shaders are compiled). * Reworked ShaderCompilerRD to ensure deterministic shader code creation (else shader may change and cache will be invalidated). * Added shader compression with SMOLV: https://github.com/aras-p/smol-v
2021-05-25Rename File::get_len() get_length()Marcel Admiraal
2021-05-25Tweak dozens of editor property hints for consistencyHugo Locurcio
- Update Viewport MSAA property hints to match the currently exposed values. - Add some performance hints to property hints.
2021-05-21Merge pull request #48928 from Faless/js/4.x_fix_build_after_renameRémi Verschelde
[HTML5] Fix build after KEY_CTRL rename.
2021-05-21[HTML5] Fix build after KEY_CTRL rename.Fabio Alessandrelli
2021-05-21[HTML5] Add easy to use download API.Fabio Alessandrelli
New `JavaScript.download_buffer` method to create a prompt that let the user download a file.
2021-05-20Merge pull request #48719 from Faless/js/4.x_interfacesRémi Verschelde
[HTML5] Implement Godot <-> JavaScript interface.
2021-05-20[HTML5] Implement Godot <-> JavaScript interface.Fabio Alessandrelli
2021-05-20Fix typos with codespellRémi Verschelde
Using codespell 2.0.0. Method: ``` $ cat > ../godot-word-whitelist.txt << EOF ang curvelinear dof doubleclick fave findn GIRD leapyear lod merchantibility nd numer ois ony que seeked synching te uint unselect webp EOF $ codespell -w -q 3 -I ../godot-word-whitelist.txt --skip="./thirdparty,*.po" $ git diff // undo unwanted changes ```
2021-05-19[HTML5] Fix GDNative compilation with emcc 2.0.19+Fabio Alessandrelli
Add `WARN_ON_UNDEFINED_SYMBOLS=0` for the main module (which defines `godot_js_main` as extern coming from the "side" module, i.e. the main Godot binary).
2021-05-17Merge pull request #48168 from LightningAA/control-to-ctrl-4.0Rémi Verschelde
2021-05-17Make all file access 64-bit (uint64_t)Pedro J. Estébanez
This changes the types of a big number of variables. General rules: - Using `uint64_t` in general. We also considered `int64_t` but eventually settled on keeping it unsigned, which is also closer to what one would expect with `size_t`/`off_t`. - We only keep `int64_t` for `seek_end` (takes a negative offset from the end) and for the `Variant` bindings, since `Variant::INT` is `int64_t`. This means we only need to guard against passing negative values in `core_bind.cpp`. - Using `uint32_t` integers for concepts not needing such a huge range, like pages, blocks, etc. In addition: - Improve usage of integer types in some related places; namely, `DirAccess`, core binds. Note: - On Windows, `_ftelli64` reports invalid values when using 32-bit MinGW with version < 8.0. This was an upstream bug fixed in 8.0. It breaks support for big files on 32-bit Windows builds made with that toolchain. We might add a workaround. Fixes #44363. Fixes godotengine/godot-proposals#400. Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2021-05-12CI: Update JavaScript linter deps with known security vulnerabilitiesRémi Verschelde
jsdoc has no new release so I'm tracking this PR: https://github.com/jsdoc/jsdoc/pull/1906
2021-05-08Merge pull request #48543 from Faless/js/4.x_target_fps_fixFabio Alessandrelli
[HTML5] Fix target_fps when window loses focus.
2021-05-07Rename "Control" key to "Ctrl" and add "_pressed" suffix to all ↵Lightning_A
InputEventWithModifiers properties/methods
2021-05-07[HTML5] Fix target_fps when window loses focus.Fabio Alessandrelli
We don't get updates when the window is unfocused/minimized, so we must detect the situation where the counted ticks start drifting away resulting in more frames drawn than needed. This commit adds a check to ensure that the target ticks do not drift away more than one second.
2021-05-07OS: Remove native video API only implemented on iOSRémi Verschelde
See discussion in #43811, it was only implemented on iOS and even that implementation was fairly limited. This would best be provided as plugins for Android and iOS without cluttering the shared OS API.
2021-05-06[HTML5] Use 64KiB chunk size in JS HTTPClient.Fabio Alessandrelli
For consistency with the native one, and the documentation.
2021-05-06Rename `IP_Unix`, `IP_Address` and `TCP_Server` to remove underscoresHugo Locurcio
2021-05-04Rename `doubleclick` to `double_click`Aaron Franke
2021-04-30[HTML5] Fix builds with recent emscripten versionsFabio Alessandrelli
Library suffix should be `.a`, the `EXTRA_` in `EXTRA_EXPORTED_RUNTIME_METHODS` is deprecated.
2021-04-29Replace remaining uses of `NULL` with `nullptr`Rémi Verschelde
Follow-up to #38736 (these uses were likely added after this PR was merged).
2021-04-27Core: Drop custom `copymem`/`zeromem` definesRémi Verschelde
We've been using standard C library functions `memcpy`/`memset` for these since 2016 with 67f65f66391327b2967a20a89c3627e1dd6e84eb. There was still the possibility for third-party platform ports to override the definitions with a custom header, but this doesn't seem useful anymore.
2021-04-27[HTML5] Export as Progressive Web App.Fabio Alessandrelli
Adds possibility to export as a progressive web app. Allows customizing base icons, display mode, orientation and offline page.
2021-04-27[HTML5] HTTP server uses optional SSL.Fabio Alessandrelli
Generates a key/cert snakeoil pair or use a custom SSL cert/key. This is of course false security, and potentially detrimental for it. But, so long, those are the requirements browser vendors agreed on to use things like the Gamepad API, and more advanced topics like wasm threads. You don't need this if you run on localhost (at least!), but you do need this (or a much safer nginx proxy) to try those things on your local network (e.g. when debugging a phone, networking, etc).
2021-04-27[HTML5] Optional icon generation, use export name for it.Fabio Alessandrelli
We used to only generate the favicon if it was specified in the user project settings, now it's optional, will export it to `NAME.icon.png`, (falling back to the default project icon if none is set in project settings), and the `<link>` tag is added using the `$HEAD_INCLUDE` instead of being hardcoded in the template.
2021-04-27[HTML5] Debug HttpServer now runs in `web` cache subdir.Fabio Alessandrelli
Serving all files in that folder and using a known list of mime types. Makes it easy to add more exported files, while still playing safe.
2021-04-20[JS, Android] Re-add "no-exceptions" for export templates builds with ICU.bruvzg
2021-04-06[HTML5] Implement WebGL fallback.Fabio Alessandrelli
According to project settings and when WebGL2 is not available. This does nothing in current master, as we have no rendering yet!
2021-04-05Style: Apply clang-tidy's `modernize-use-nullptr`Rémi Verschelde
2021-04-03[HTML5] Disable body_size in fetch.Fabio Alessandrelli
We were using `Content-Length` from the server when `Content-Encoding` was not set (i.e. response was not compressed). Sadly, in CORS requests accessing headers is restricted, and while `Content-Length` is enabled by default, `Content-Encoding` is not. This results in the impossibility of knowing if the content was compressed, unless the server explicitly enabled the encoding header via `Access-Control-Expose-Headers`. To keep maximum compatibility we must disable `body_size` completely.
2021-03-29[HTML5] Fix WM notifications not being called.Fabio Alessandrelli
Regression from the library refactoring, binding and not calling is pretty useless 'o_o.
2021-03-29[HTML5] Fix Mono builds (old emcc?)Fabio Alessandrelli
Promise chaining the emscripten module `then` function breaks it badly, causing an infinite loop. I'm unsure about the source of the issue, but most likely at this point is due to the old emscripten version (I remember very old html5 builds having issue with promise chaining too). With this commit, we no longer use the module as a promise, and instantiate it using `Promise` objects directly for compatibility.
2021-03-28Rename Texture.get_data() to get_image()Marcel Admiraal
2021-03-23Rename some more global enums (Key, Joy, MIDI)Aaron Franke
2021-03-23Rename ButtonList enum and members to MouseButtonAaron Franke
2021-03-20Merge pull request #47191 from Faless/js/4.x_force_mimeRémi Verschelde
[HTML5] Fix loading when mime-type is missing.
2021-03-20Merge pull request #46966 from qarmin/faster_releaseRémi Verschelde
Allow to not optimize release build
2021-03-20[HTML5] Fix editor version numbering.Fabio Alessandrelli
Should not write patch version when it's `0`.
2021-03-20[HTML5] Fix loading when mime-type is missing.Fabio Alessandrelli
`WebAssembly.instantiateStreaming` requires the mime-type to be `application/wasm`, but some servers (including most debug servers) do not provide the content-type header. This commit forces it via JavaScript, by creating a `Response` object with the `wasm` content, and explicitly defined `content-type` header.
2021-03-14Allow to not optimize release buildRafał Mikrut
2021-03-12[HTML5] Drag and drop zip in project manager.Fabio Alessandrelli
With a very nice hack, a new hidden configuration option that delays dropped files removal at exit. This still leaks while the project manager is running, but will clear memory as soon as it exits or load something. (reminder, dropped files are reguarly removed after the signal is emitted specifically to avoid leaks, but I prefer hacking the HTML5 config then the project manager).
2021-03-11[HTML5] Opt-in virtual keyboard support.Fabio Alessandrelli
Added as an export option "Experimental Virtual Keyboard". There is no zoom, so text/line edit must be in the top part of the screen, or it will get hidden by the virtual keyboard. UTF8/Latin-1 only (I think regular UTF-8 should work out of the box in 4.0 but I can't test it). It uses an hidden textarea or input, based on the multiline variable, and only gets activated if the device has a touchscreen. This could cause problems on devices with both touchscreen and a real keyboard (although input should still work in general with some minor focus issues). I'm thinking of a system to detect the first physical keystroke and disable it in case, but it might do more harm then good, so it must be well thought.
2021-03-10[HTML5] Properly set canvas size during setup.Fabio Alessandrelli
It used to be updated before the first iteration, causing the window/viewport size values to be incorrect during the initialization phase (e.g. during the first `_ready` notification).