Commit Graph

2981 Commits

Author SHA1 Message Date
Fabio Alessandrelli 31b5c5ee03 [HTML5] Custom Gamepad library to allow remapping.
No longer use emscripten functions for gamepads, implement them as
library functions in library_godot_display.js instead.
This allows us to do a better job at "guessing" vendorId, productId, OS,
etc. thus allowing us to better find the remapping for the controller.
2021-01-18 13:07:37 +01:00
Sergey Minakov d4096285b6 [iOS] Remove plugins from modules. 2021-01-17 14:46:03 +03:00
Rémi Verschelde 7e207cfd48
i18n: Sync translations with Weblate 2021-01-15 16:49:47 +01:00
Rémi Verschelde c47ad12e80
Merge pull request #43557 from naithar/feature/pluggable_app_delegates_3.2
[3.2] [iOS] Pluggable application delegate
2021-01-15 16:14:21 +01:00
Sergey Minakov 64923945b3 [Plugins] Rename 'PluginConfig' struct to platform specific name 2021-01-15 02:12:53 +03:00
Sergey Minakov cb15abda29 iOS Export: support multi-target plugin
Plugins can use 'binary_name.a' or 'binary_name.release.a' and 'binary_name.debug.a' for plugin library.
2021-01-14 15:38:16 +03:00
Sergey Minakov d5047603a3 iOS Export: export modification to support plugins
Added plugin configuration.
Export options now use plugins that could be enabled/disabled.
Plugin changes are observed at runtime.
2021-01-14 15:38:05 +03:00
Sergey Minakov 03cf3d5d4b iOS: change platform code to support plugins 2021-01-14 15:30:09 +03:00
Sergey Minakov 614f701373 iOS Modules: separate main platform code from modules
Moved previously builtin modules 'GameCenter', 'AppStore', 'iCloud' to separate modules to be represented as plugin.
Modified 'ARKit' and 'Camera' to not be builtin into engine and work as plugin.
Changed platform code so it's not affected by the move.
Modified Xcode project file to remove parameters that doesn't make any effect.
Added basic '.gdip' plugin config file.
2021-01-14 15:30:00 +03:00
Rémi Verschelde 49646383f1
Update copyright statements to 2021
Happy new year to the wonderful Godot community!

2020 has been a tough year for most of us personally, but a good year for
Godot development nonetheless with a huge amount of work done towards Godot
4.0 and great improvements backported to the long-lived 3.2 branch.

We've had close to 400 contributors to engine code this year, authoring near
7,000 commit! (And that's only for the `master` branch and for the engine code,
there's a lot more when counting docs, demos and other first-party repos.)

Here's to a great year 2021 for all Godot users 🎆

(cherry picked from commit b5334d14f7)
2021-01-13 16:17:06 +01:00
Rémi Verschelde 188609e5ab
CI: Update to clang-format 11 and apply ternary operator changes
(cherry picked from commit af878716f2)
2021-01-13 16:14:35 +01:00
Fabio Alessandrelli 6988b21d00 [HTML5] Reorganize build script.
Simplify helper functions, fix env/sys_env confusion and depends for
externs and pre-js.
2021-01-10 12:34:03 +01:00
Rémi Verschelde d6fecf7686
Main: Create user data dir in `setup()`
Custom backport of #39563 with preliminary change to make
`OS::ensure_user_data_dir()` public as done in f8a79a9.

Fixes #32488.
2021-01-08 10:24:48 +01:00
Rémi Verschelde 3d88ea8468
Merge pull request #42397 from dsnopek/webxr
Add WebXR support (for Godot 3.2)
2021-01-05 00:13:10 +01:00
David Snopek 22cfa90ef5 Add support for WebXR 2021-01-04 17:01:42 -06:00
Fredia Huya-Kouadio 170752c5a5 Update the logic to sign prebuilt Godot Android apks.
The previously used tool, `jarsigner` has been deprecated in favor of `apksigner` which is bundled with the Android SDK.
The logic is refactored accordingly and a few editor settings have been deprecated in the process as they're no longer necessary.

Note: As a side effect, specifying the Android SDK path is now required. The docs will be updated to reflect that change.
2021-01-01 13:27:27 -08:00
Rémi Verschelde 95b3feb675
Merge pull request #44639 from m4gr3d/export_format_util_method_3_2
[3.2] Hardcode the export format for the editor 'run' feature
2020-12-30 09:12:00 +01:00
Fredia Huya-Kouadio 3ba1a8ccb3 Add utility method to export the project using a preset format and sign parameter. 2020-12-29 09:01:21 -08:00
Fredia Huya-Kouadio c27c436785
Fix invalid invocation of `get_class_loader`.
The call was made on a `Godot` instance instead of an `Activity` instance.

(cherry picked from commit 2d492ff8ba)
2020-12-29 16:02:02 +01:00
Rémi Verschelde 60959b085d
SCons: Add only selected platform's opts to env
Otherwise we can get situations where platform-specific opts with the same name
can override each other depending on the order at which platforms are parsed,
as was the case with `use_static_cpp` in Linux/Windows.

Fixes #44304.

This also has the added benefit that the `scons --help` output will now only
include the options which are relevant for the selected (or detected) platform.

(cherry picked from commit 0f84d8dc49)
2020-12-29 16:02:00 +01:00
Rémi Verschelde 7ef143faaf
Merge pull request #44620 from bruvzg/m1_dragdrop_3
[3.2] Fix file drag-drop on M1 Macs.
2020-12-23 18:24:17 +01:00
bruvzg 36a6a713b4
[3.2] Fix file drag-drop on M1 Macs. 2020-12-23 18:01:02 +02:00
Sergey Minakov 8b6357cf28 iOS: fix keyboard display 2020-12-16 05:05:38 +03:00
Rémi Verschelde fd6b3060c1
Merge pull request #44316 from madmiraal/fix-handles-baseexception-3.2
[3.2] Don't handle BaseException in build scripts
2020-12-12 12:44:17 +01:00
Marcel Admiraal e21adf2bc6 Don't handle BaseException in build scripts 2020-12-12 10:10:23 +00:00
Rémi Verschelde 8bd5fa9556
HTML5: Code style cleanup for export code
(cherry picked from commit 8020515717)
2020-12-10 17:57:13 +01:00
Fabio Alessandrelli 0a67b23913 [HTML5] Fix errors when Mic is not allowed. 2020-12-10 09:27:53 +01:00
Fabio Alessandrelli a7126e7153 [HTML5] Improve platform buildsystem.
Check emcc version requirements when building GDNative.
Add more build options (sanitizers, initial memory).
2020-12-10 09:27:53 +01:00
Fabio Alessandrelli 6936ac9d5d [HTML5] Add logo and favicon to editor html. 2020-12-09 18:09:30 +01:00
Fabio Alessandrelli 299be786a1
Remove unused FileAccessJAndroid.
(cherry picked from commit 09a9712a6a)
2020-12-09 12:00:50 +01:00
Fabio Alessandrelli f73c9e555f
Remove now unused FileAccessBuffered.
(cherry picked from commit 781efc26e0)
2020-12-09 11:36:58 +01:00
Fabio Alessandrelli 87e9fbc8a0
[HTML5] Use regular unix FileAccess implementation.
(cherry picked from commit 1396c74734)
2020-12-09 11:35:21 +01:00
Bastiaan Olij 94fff8abb9
Added driving joystick type to windows joystick handling
(cherry picked from commit cf5737acbe)
2020-12-09 11:22:05 +01:00
Rémi Verschelde b33fd415da
OSX: Remove tmp .app folder instead of moving to trash
Fixes #42232.

And fixes memory leak with use of DirAccess, and harmonize the use of
the sanitized pkg name.

(cherry picked from commits 707a62783b
and 02d228554b)
2020-12-09 11:22:04 +01:00
Lyubomir Vasilev d6a65fb13a
Add 'use_static_cpp' option for MinGW and MSVC builds
(cherry picked from commit e52c9c26fc)
2020-12-09 11:22:04 +01:00
Rémi Verschelde 2beb36fbad
Merge pull request #44170 from Faless/js/3.x_gdnative
[3.2] [HTML5] Optional GDNative Support
2020-12-07 18:15:13 +01:00
Fabio Alessandrelli 79a1418e7d [HTML5] Make GDNative support feature-based.
This is suboptimal as it requires adding an extra flag, but rewriting
how feature tags work is beyond the scope of this work.
2020-12-05 01:14:03 +01:00
Fabio Alessandrelli 2cbfe1afd4 [HTML5] Allow selecting the export type.
Available types:
- Regular
- GDNative (support dynamic linking and thus GDNative WASM files)
- Threads (uses WebAssembly Threads)
2020-12-05 01:00:32 +01:00
Fabio Alessandrelli 4ad95cc039 [HTML5] EditorRunNative works with GDNative.
This "breaks" our loading bar logic (libraries are not counted).
Fixing it is non trivial and probably deserves investigating a different
strategy.
2020-12-05 01:00:29 +01:00
Fabio Alessandrelli 4d1ebaad0f [HTML5] GDNative support via SIDE_MODULE.
Working, with emscripten > 2.0.9
Yes, the unreleased version. 2.0.9 works, but throws and error due to a
bug in emscripten with the thirdparty ENet library.
The issue is fixed upstream so newer releases will work.
2020-12-05 01:00:02 +01:00
Fabio Alessandrelli 8ebb52fad6 [HTML5] Add function signatures to JS libraries. 2020-12-04 23:37:41 +01:00
Rémi Verschelde 185520c5b0
Merge pull request #43907 from alan-w-255/fix_android_wrong_multitouch_pointerid
fix android wrong multi-touch pointerid
2020-12-03 14:49:30 +01:00
Rémi Verschelde 8633cbc825
X11: Include limits.h for LONG_MAX
Fixes #44030.

(cherry picked from commit f1a9de9c59)
2020-12-02 16:00:54 +01:00
Fabio Alessandrelli 0f40391924 [HTML5] Fix broken layout on load in HiDPI screens
This was caused by the devicePixelRatio being applied twice, once by the
HTML code, once by the OS code.
More specifically, OS.get_window_size() would return the canvas element
size, while OS.set_window_size() would set the element size to the
specified value times the devicePixelRatio.
Calling OS.set_window_size(OS.get_window_size()) would reapply the
devicePixelRatio every time.
This commit changes the behaviour so that OS.set_window_size() do not
apply the devicePixelRatio to the canvas element size, by it divides the
CSS size instead.
2020-11-30 11:29:35 +01:00
Fabio Alessandrelli 8d93c723f1 [HTML5] Remove file flags from writeFile in setup.
Flags where deprecated and partly in removed in emscripten 2.0.9.
2020-11-30 11:29:32 +01:00
alan-w-255 cbda02991f fix android wrong multi-touch pointerid 2020-11-27 16:46:21 +08:00
Sergey Minakov 067d015d38
iOS: fix native video
Fixed view not being displayed.
Fixed view orientation change.

(cherry picked from commit 6b2483c331)
2020-11-26 09:38:47 +01:00
Rémi Verschelde 4a1643114e
Export: Reorder options for consistency across platforms
(cherry picked from commit 504efc5f9b)
2020-11-26 09:38:46 +01:00
Rémi Verschelde eafb021015
SCons: Remove unnecessary $LINK overrides
As of SCons 4.0.1, the default value for $LINK is $SMARTLINK, which itself
is a function that will use $CXX as linker for C++:

https://github.com/SCons/scons/blob/4.0.1/SCons/Tool/link.py#L327-L328
https://github.com/SCons/scons/blob/4.0.1/SCons/Tool/link.py#L54-L76

So we don't need to manually specify the same value as $CXX for $LINK.

(cherry picked from commit 2e4bff1cfe)
2020-11-26 09:38:45 +01:00
Rémi Verschelde 797850321b
Merge pull request #42685 from nekomatata/x11-clipboard-fixes-3.2
[3.2] Fix issues with Linux clipboard
2020-11-26 09:34:53 +01:00
Rémi Verschelde 0b38c50311
SCons: Do not define TYPED_METHOD_BIND on Linux/OSX with clang
Port of #43862.
2020-11-25 21:17:48 +01:00
Rémi Verschelde 633c9555dc
Merge pull request #43804 from m4gr3d/update_signing_and_zipalign_logic_3_2
[3.2] Update gradle build files to automatically perform signing and zipalign tasks for custom builds
2020-11-24 08:39:16 +01:00
Rémi Verschelde 7dfd4ced51
Merge pull request #43792 from Faless/js/3.x_lint
[3.2] [HTML5] Linting, fixes.
2020-11-23 14:44:58 +01:00
Fabio Alessandrelli f316a1719d [HTML5] Run eslint --fix.
Should I write a poem about this whole new world? ;)
2020-11-23 13:27:13 +01:00
Fabio Alessandrelli 0813008b8a [HTML5] Enforce JavaScript style with eslint.
Applies to javascript files inside the platform library folder, the
exposed Engine code, and any javascript files in modules.

Files ending with ".externs.js" will be ignored, you can create a
".eslintignore" file to specify extra files to be ignored.
2020-11-23 13:26:19 +01:00
Fredia Huya-Kouadio d13d29240c Update gradle build files to automatically perform signing and zipalign tasks for custom builds. 2020-11-22 17:54:12 -08:00
Fabio Alessandrelli e4cdae3624 [HTML5] Libraries refactor for linting.
Initial work to make liniting easier.

This includes:
- Rename http_request.js to library_godot_http_request.js.
- Rename externs.js to engine.externs.js.
- New library_godot_runtime.js (GodotRuntime) wraps around emscripten
  functions.
- Refactor of XMLHttpRequest handler in engine/preloader.js.
- Few fixes to bugs spotted by early stage linting.
2020-11-21 14:23:32 +01:00
Fredia Huya-Kouadio 16181a38eb
Fix zipalign command name on Windows machines.
(cherry picked from commit c4f2d87747)
2020-11-19 17:15:28 +01:00
Rémi Verschelde 387597a4a4
OSX: Fix linking with osxcross for arm64
For some reason the `-target` option on the `LINKFLAGS` was causing a weird
issue where osxcross' clang wrapper would attempt using the system `/bin/ld`
instead of the osxcross version (which is Apple's `ld64`).

The error message would be:
```
/bin/ld: unrecognized option '-dynamic'
```

Also removed from `CCFLAGS` for consistency, it seems to work fine with only
`-mmacosx-version-min`.

(cherry picked from commit dbbbb53927)
2020-11-19 17:15:27 +01:00
bruvzg bc25b80c0f
[macOS / ARM64] Remove "-msse2" flag from ARM64 release export template build.
(cherry picked from commit 09f301029a)
2020-11-19 17:14:56 +01:00
PouleyKetchoupp 336506a273
OSX: Fix compiling for arm64 with OSXCross
(cherry picked from commit 08b0fd4330)
2020-11-19 17:14:52 +01:00
bruvzg 718ff146e0
Fix focus loss on macOS. 2020-11-19 11:55:25 +02:00
Pedro J. Estébanez 0642f3efeb Ignore query to maximize/minimize window on Windows and X11
This makes these platform behave as MacOS in that regard and also fixes the editor window appearing in some cases even when --no-window has been passed.
2020-11-18 00:33:39 +01:00
Marcel Admiraal e1b72e1943
Add missing javascript semi-colons.
(cherry picked from commit f42284ed07)
2020-11-17 22:25:32 +01:00
Marcus Brummer a822bb9844
Fixed exit code retrieval of spawned processes on Windows
Use GetExitCodeProcess() on Windows to retrieve the exit code of a process in
OS:excute()

(cherry picked from commit f0f4220b05)
2020-11-17 12:07:02 +01:00
Connor Lirot 1e01963d29
Fix for linux joypad D-pad zeroing
Some controllers (notably those made by 8bitdo) do not always emit an event to zero out a D-pad axis before flipping direction. For example, when rolling around aggressively the D-pad of an 8bitdo SN30 Pro/Pro+, the following may be observed:

```
ABS_HAT0X : -1
ABS_HAT0Y : -1
ABS_HAT0Y : 0
ABS_HAT0Y : 1
ABS_HAT0X : 1
```

Notable here is that no event for `ABS_HAT0X: 0` is emitted between the events for `ABS_HAT0X: -1` and `ABS_HAT0X: 1`. Consequently, the game engine believes that both the negative _and_ positive x-axis directions of the D-pad are activated simultaneously (i.e `is_joy_button_pressed()` returns `true` for both `JOY_BUTTON_DPAD_LEFT` and `JOY_BUTTON_DPAD_RIGHT`), which should be impossible.

This issue is _not_ reproducible on all controllers. The Xbox One controller in particular will not exhibit this problem (it always emits zeroing out events for an axis before flipping direction).

The fix is to always zero out the opposite direction on the D-pad axis in question when processing an event with a nonzero value. This unfortunately wastes a small number of CPU cycles on controllers that behave nicely.

**I have verified this issue is also reproducible in the stable 3.2 branch**

(cherry picked from commit dd021099ff)
2020-11-17 12:07:01 +01:00
Vaughan Ling 7a9660e8d2
Change android orientations from sensor to user
# Conflicts:
#	platform/android/java/lib/src/org/godotengine/godot/GodotIO.java

(cherry picked from commit d658063833)
2020-11-17 12:01:59 +01:00
Fredia Huya-Kouadio 566835e181
Update the logic to query for the 'scons' command executable path.
(cherry picked from commit 46cc3233d8)
2020-11-17 12:01:59 +01:00
Marcus Brummer 75f33fddab
Added the .jks file extension as valid preset for Android keystore files
(cherry picked from commit e1b9be4a6b)
2020-11-17 12:01:59 +01:00
Sergey Minakov 4991872305 iOS: Implement pluggable application delegate. 2020-11-15 14:27:07 +03:00
Rémi Verschelde c36a755472
Merge pull request #43022 from Klowner/3.2-android-display-orientation
Implement OS.get_screen_orientation() for Android
2020-11-15 09:39:29 +01:00
Rémi Verschelde b6d76c9d34
Merge pull request #43525 from m4gr3d/address_new_custom_build_logic_issues_3_2
[3.2] Address new custom build logic issues
2020-11-14 22:59:26 +01:00
Fredia Huya-Kouadio 380022637e Add missing zip alignment step for generated apks. 2020-11-14 13:16:56 -08:00
Fredia Huya-Kouadio e87ee41fd4 Fix issue causing `Export all` to fail. 2020-11-14 13:16:56 -08:00
Fredia Huya-Kouadio adf2b36179 Clear unneeded assets when generating an apk expansion.
Clean up export wording to account for the different export formats.
2020-11-14 13:16:08 -08:00
Fredia Huya-Kouadio c9b5e912dd Remove duplicate Android `orientation` settings. 2020-11-13 12:18:37 -08:00
Mark Riedesel 92ff6c5164 Implement OS.get_screen_orientation() for Android 2020-11-13 10:14:06 -05:00
thebestnom 8405f1225e [3.2] Android: Keyboard modifier and arrow key support 2020-11-13 15:10:17 +02:00
Rémi Verschelde adf2dabbde
Merge pull request #43456 from akien-mga/3.2-cherrypicks
Cherry-picks for the 3.2 branch (future 3.2.4) - 7th batch
2020-11-11 22:33:31 +01:00
Rémi Verschelde 941e2f2ff3
Merge pull request #43454 from Faless/js/3.x_audio_worklet
[3.2][HTML5] Port inline JS code to libraries, AudioWorklet support.
2020-11-11 15:31:10 +01:00
unknown 31cdf8d9b4
Use LONG instead of DWORD (unsigned int) when interacting with DIJOFS constants.
(cherry picked from commit 4a6e53b3c9)
2020-11-11 15:30:57 +01:00
Fredia Huya-Kouadio 835d4535b7
Add a separate `nativeSrcsConfigs` module to handle Android Studio constraints for native code editor support.
(cherry picked from commit edf762fba6)
2020-11-11 15:30:56 +01:00
Fredia Huya-Kouadio 3b547457d7
Update the gradle plugins
(cherry picked from commit aff7cf4390)
2020-11-11 15:30:55 +01:00
Ev1lbl0w f279f657a5
Changed path behaviour for Windows
(cherry picked from commit 525a5be01d)
2020-11-11 15:30:55 +01:00
Hugo Locurcio 4907911bf8
Remove `debug_symbols=full` in favor of `debug_symbols=yes`
`debug_symbols=yes` will now behave like `debug_symbols=full` did
before. The difference in compressed file sizes is not that large,
which means there isn't much point in having two different values.

This helps make the buildsystem easier to understand.

(cherry picked from commit ff1f0d2cb5)
2020-11-11 15:12:01 +01:00
Fabio Alessandrelli 6d939b72f0 [HTML5] AudioWorkletAPI implementation.
Rewrote AudioDriverJavaScript to support multiple processor nodes.
The old (and deprecated) ScriptProcessorNode when threads are not
available, and the new AudioWorklet API when threads are enabled.

The new implementation uses two ring buffers and a shared state to
communicated with the AudioWorklet thread.

The audio.worklet.js JavaScript file is always added to the export
template, but only really used (and download) in the thread build.
2020-11-10 11:05:15 +01:00
Fabio Alessandrelli e52ed6d89e [HTML5] Port JavaScript inline code to libraries.
The API is implemented in javascript, and generates C functions that can
be called from godot.
This allows much cleaner code replacing all `EM_ASM` calls in our C++
code with plain C function calls.
This also gets rid of few hacks and comes with few optimizations (e.g.
custom cursor shapes should be much faster now).
2020-11-10 10:56:13 +01:00
Pedro J. Estébanez 3ec62c82a3 Implement no-window mode for X11 and MacOS
Bonus: Homogeinize and improve OS::alert() for no-window mode
2020-11-09 20:56:12 +01:00
Fabio Alessandrelli a7ecb3c048 [HTML5] Update syntax for lto. 2020-11-06 18:23:08 +01:00
Fabio Alessandrelli f39b46f7c1 [HTML5] Fix audio buffer size and latency hint.
The size of the audio buffer was incorrectly doubled when creating the
script processor.
latencyHint is expressed in seconds, not milliseconds.
Additionally, on some browsers it actually affect the performance and
stability of the audio driver.
For this reason it has been completely disabled (interactive) and a not
has been left for future reference.
2020-11-06 15:38:08 +01:00
thebestnom 191c84f952 Android: Mouse Implementation
Implement mouse
Move touch to inputManager
Change to use android/input.h
2020-10-30 15:23:29 +02:00
PouleyKetchoupp 4ccde80d9d
Release .build_version file handle in Android custom build export
(cherry picked from commit b271315bac)
2020-10-28 15:09:13 +01:00
Ev1lbl0w f41cc7d644
Changed shell_open behaviour
(cherry picked from commit 9e57a395cf)
2020-10-28 14:05:41 +01:00
Mark Riedesel 5740bd808a
Fix android apk contents having mtime 1 month in future
minizip documentation describes tm_mon as expecting the number of months
since January - [0, 11], but the month returned by OS.get_date() is in
the range of [1, 12].

(cherry picked from commit 5fe902244a)
2020-10-28 14:05:40 +01:00
Mark Riedesel 2bec10fd1c Implement OS.get_window_safe_area() for Android 2020-10-27 11:52:20 -04:00
bruvzg df6ea27ab3
[3.2] Disable iOS SDK version check on osxcross.
Currently, osxcross `xcrun` supports only macOS SDKs.
2020-10-21 07:56:05 +03:00
Rémi Verschelde 3b4005026d
Merge pull request #42593 from bruvzg/ios_sdk_ver_check
[3.2] Add iOS SDK version check.
2020-10-20 15:12:59 +02:00
Rémi Verschelde 0181819339
Merge pull request #42773 from bruvzg/macos_inertia_32
[macOS, 3.2] Suppress momentum scrolling after key press.
2020-10-20 15:11:02 +02:00
Rémi Verschelde e78fbd94e5
Merge pull request #42852 from naithar/fix/in-app-store
[3.2] [iOS] InAppStore fixes
2020-10-20 15:09:41 +02:00
Rémi Verschelde 04fb41a0f3
Merge pull request #42531 from BastiaanOlij/add_get_native_handle
Add get native handle
2020-10-20 13:27:07 +02:00
Bastiaan Olij 1ea7358405 Add get_native_handle to OS 2020-10-20 20:23:37 +11:00
unknown ae75e7d8f9
Fixed an issue in UWP export caused by duplicate entry for extensions in content types file.
(cherry picked from commit 9cb46ed4e7)
2020-10-19 16:09:59 +02:00
Rémi Verschelde f33ca5444a
SCons: Refactor and cleanup warnings definition
(cherry picked from commits 97f116d36b
and 56f3aba7b2)
2020-10-19 16:09:59 +02:00
Sergey Minakov b07877cd27 iOS: fix in app store
Enforce strong reference for SKRequests and delegate objects for transactions to work correctly
2020-10-16 15:51:12 +03:00
lawnjelly c2290dbedd Unified GLES2 / GLES3 Batching
Batching is mostly separated into a common template which can be used with multiple backends (GLES2 and GLES3 here). Only necessary specifics are in the backend files.

Batching is extended to cover more primitives.
2020-10-16 10:34:47 +01:00
Fabio Alessandrelli a3179aa8fc Disable WebGL2, window maximize in editor builds. 2020-10-14 12:32:35 +02:00
Fabio Alessandrelli 0452c2fced Improve Project Manager video driver selection.
Now suggests the current video driver instead of defaulting to GLES3.
2020-10-14 12:32:35 +02:00
Fabio Alessandrelli 55f04952c5 [HTML5] Add JavaScriptToolsEditorPlugin.
A new editor plugin, specific to HTML5, that provide some extra features
needed to make the editor usable on that platform.

For now, it adds a "Download project sources" option in the "Tool" menu,
so the user can download the work done as a zip file (from the browser
storage).
2020-10-14 11:20:20 +02:00
Fabio Alessandrelli 294e9752bd Add JavaScript editor html file. 2020-10-14 11:20:20 +02:00
Fabio Alessandrelli 1bfc582633 [HTML5] Close IDBFS database on exit.
This should be made available in emscripten in a decent way.
Possibly after unmount, to free the database lock and allow performing
operations on it from javascript after the Emscripten Runtime has
exited.
2020-10-14 11:18:41 +02:00
Fabio Alessandrelli 47e82bcb58 [HTML5] Expose request_quit via Engine class.
So it can be called when closure compiler is enabled.
2020-10-14 11:17:08 +02:00
Fabio Alessandrelli f72bbc4c3b Increase HTML5 THREADPOOL size.
This fixes a "random" deadlock when quitting the editor.
I still haven't figure out the root cause, but having a bigger seems to
greatly mitigate the issue.
The new pool size (pre-allocated threads) is now 8.
2020-10-14 11:17:03 +02:00
bruvzg 6ea9ee563a
[macOS, 3.2] Suppress momentum scrolling after key press or modifier change to prevent unexpected change of action. 2020-10-13 19:05:05 +03:00
PouleyKetchoupp de4a1d09b0 Fix issues with Linux clipboard
Backport for X11 Display Server fixes on 3.2 branch.

1. Implement SAVE_TARGETS mechanism

Allows sending the clipboard content to the clipboard manager on exit to
keep the content when using a clipboard manager that doesn't
automatically makes a backup when copying.

MULTIPLE selection mechanism also had to be implemented, because in this
case, the clipboard manager might request multiple selection targets at
once.

Known use case: Ubuntu with XFCE4

2. Implement INCR mechanism

Allows pasting from x11 clipboard to receive data incrementally, which
is required when handling data size > 256KB.
2020-10-10 10:56:52 +02:00
Rémi Verschelde 4040cd350d
Merge pull request #42582 from naithar/feature/3.2-arc-refactor
[3.2] [iOS] Port 4.0 changes
2020-10-07 21:17:01 +02:00
bruvzg d44bc8d5bc
[3.2] Add iOS SDK version check. 2020-10-06 11:33:52 +03:00
Sergey Minakov 5d1284204d iOS: port ARC support 2020-10-06 00:23:25 +03:00
Sergey Minakov 2bdfec2418 iOS: Refactor platform code
Change project structure to be more like 4.0
Refactor and remove old code as followup after deprecations fix
2020-10-06 00:23:09 +03:00
Fabio Alessandrelli 2d5f9c53b0
[HTML5] Scons now expects "emcc" to be in PATH.
No longer parse emscripten/emsdk config to detect emcc/node paths.
Use WhereIs to find "emcc" and "node", look for "node_modules" in "emcc"
path.

(cherry picked from commit 7998745237)
2020-10-04 20:54:56 +02:00
Fabio Alessandrelli 61d4b8045c [HTML5] Run Audio process in thread when available
This should fix some of the audio stuttering issues when the HTML5
export is compiled with threads support.
The API should be ported to AudioWorklet to (hopefully) be perfect.
That though, cannot be backported to 3.2 due to extra restriction of
AudioWorklet (which only runs in SecureContext, and needs a polyfill for
Safari).
2020-10-02 16:25:19 +02:00
Fabio Alessandrelli a57bd798cd Add extra suffix for HTML5 thread builds. 2020-10-02 16:25:18 +02:00
Fabio Alessandrelli 0ca7bc374e Add COOP/COEP headers to HTML5 "run" server.
This allow the page to be considered a SecureContext if the address is
localhost (127.0.0.1/::1) and let Firefox (and future Chrome versions)
enable extra features needed for the HTML5 threaded export.
2020-10-02 16:25:18 +02:00
Rémi Verschelde 7ef6aa7342
Merge pull request #42266 from Faless/js/3.0_sync_fs_size_handlers
[3.2] [HTML5] Synchronous main, better persistence, handlers fixes, optional full screen.
2020-10-02 16:23:35 +02:00
Rémi Verschelde 014147e511
Merge pull request #40557 from PoqXert/game-center
iOS Game Center improvements
2020-10-02 10:58:14 +02:00
Rémi Verschelde e35687a116
Merge pull request #42478 from bruvzg/macos_dpi_32
[3.2] Fix `get_screen_dpi` on macOS.
2020-10-01 23:03:28 +02:00
bruvzg 610728c9f1
[3.2] Fix `get_screen_dpi` on macOS for non fractional display scales and update documentation. 2020-10-01 22:55:54 +03:00
Rémi Verschelde dbb1df2acc
Merge pull request #42459 from naithar/ios-warnings-3.2
[3.2] [iOS] Fix compilation warnings and deprecated API
2020-10-01 19:12:23 +02:00
Rémi Verschelde 1815a90796
Merge pull request #42466 from nekomatata/x11-events-mutex-leak
[3.2] Fix leak with events mutex in OS_X11
2020-10-01 19:10:30 +02:00
Poq Xert ea5833fc4c iOS GameCenter: Add authenticate method
And no longer connect automatically.
2020-10-02 01:20:11 +10:00
Sergey Minakov 3386fac02c iOS: fix deprecations
Change deprecated method calls to new ones.
Guard iOS version dependant functionality behind availability checks.
2020-10-01 18:09:55 +03:00
PouleyKetchoupp 936c701838 Fix leak with events mutex in x11 Display Server 2020-10-01 16:16:23 +02:00
Rémi Verschelde 4ad74609ce
Merge pull request #40205 from bruvzg/click-through-3
[3.2] Add mouse event pass-through support for window.
2020-10-01 13:58:24 +02:00
Rémi Verschelde 0c3e0ab194
Merge pull request #40994 from qarmin/sanitization32
[3.2] Added Linux sanitizer with xvfb to github workspace
2020-10-01 13:56:09 +02:00
Rémi Verschelde 58f5b25340
Merge pull request #41173 from naithar/fix/iphone-os-values-3.2
[iOS] [3.2] Simplify OS values retrieval
2020-10-01 13:09:36 +02:00
Sergey Minakov 42de81e235 iOS: move touch delay to settings 2020-10-01 12:36:57 +03:00
Rémi Verschelde 904773149d
Merge pull request #42341 from nekomatata/x11-events-thread-3.2
[3.2] Fix issues related to delay when processing events on Linux
2020-09-30 16:39:55 +02:00
Haoyu Qiu 7840a550b5
Hides special folders in FileDialog for macOS
(cherry picked from commit 1998f78679)
2020-09-29 13:57:58 +02:00
Bartłomiej T. Listwon 858bdbacfd
Add all headers to VS Project
(cherry picked from commit 317c2b194d)
2020-09-29 13:57:56 +02:00
Fredia Huya-Kouadio 91a1e4c9ee Fix splash screen loading on Android 2020-09-28 11:24:02 -07:00
Rémi Verschelde 8ca9680b13
Merge pull request #38076 from DrMoriarty/fix_pvrtc
iOS: Fix multiple issues with PVRTC import, disable ETC1
2020-09-28 10:17:22 +02:00
Rémi Verschelde ec01d6f25e
Merge pull request #42328 from bruvzg/3_mac_captured_fix
[macOS, 3.2] Fix mouse position in captured mode.
2020-09-28 10:08:16 +02:00
Rémi Verschelde fc50d5b38c
Merge pull request #42186 from m4gr3d/3.2-android-subview
[3.2] Godot Android Subview Implementation
2020-09-27 20:05:33 +02:00
PouleyKetchoupp f725d9cb73 Fix issues related to delay when processing events on Linux
3.2 backport of PR #41910:
Fix general keyboard input lag on X11 display server
Fix delay to process clipboard content from Godot in other programs
2020-09-26 15:32:40 +02:00
bruvzg df5499fedf
[macOS, 3.2] Fix mouse position in captured mode. 2020-09-25 08:54:30 +03:00
Vasiliy Makarov f388ea00bf iOS: Fix multiple issues with PVRTC import, disable ETC1
Fixes: #28683, #28621, #28596 and maybe others

For iOS we enable pvrtc feature by default for both GLES2/GLES3
Etc1 for iOS doesn't have any sense, so it disabled.
Fixed checks in export editor.
Fixed pvrtc ability detection in GLES2 driver.
Fixed pvrtc encoding procedure.
2020-09-23 11:13:50 +02:00
Fabio Alessandrelli 35fcc1835c JS synchronous start, better persistent FS sync.
The engine now expects to emscripten FS to be setup and sync-ed before
main is called. This is exposed via `Module["initFS"]` which also allows
to setup multiple persistence paths (internal use only for now).

Additionally, FS syncing is done **once** for every loop if at least one
file in a persistent path was open for writing and closed, and if the FS
is not syncing already.

This should potentially fix issues reported by users where "autosave"
would not work on the web (never calling `syncfs` because of too many
writes).
2020-09-19 18:27:21 +02:00
Fabio Alessandrelli e7d00d08f5 Make canvas resize optional in HTML5. 2020-09-19 18:27:21 +02:00
Fabio Alessandrelli 40f73f74ce Better HiDPI support in HTML5. 2020-09-19 18:27:21 +02:00
Fabio Alessandrelli afb81abae5 Window event listener do not use capture. 2020-09-19 18:27:21 +02:00
Fabio Alessandrelli c0e0247f39 Small refactor to JavaScript handlers.
Crated helper class in native/utils.js.
Simplify code in OS/DisplayServer.
2020-09-19 18:27:21 +02:00