Commit Graph

3576 Commits

Author SHA1 Message Date
Rémi Verschelde 1426cd3b3a
One Copyright Update to rule them all
As many open source projects have started doing it, we're removing the
current year from the copyright notice, so that we don't need to bump
it every year.

It seems like only the first year of publication is technically
relevant for copyright notices, and even that seems to be something
that many companies stopped listing altogether (in a version controlled
codebase, the commits are a much better source of date of publication
than a hardcoded copyright statement).

We also now list Godot Engine contributors first as we're collectively
the current maintainers of the project, and we clarify that the
"exclusive" copyright of the co-founders covers the timespan before
opensourcing (their further contributions are included as part of Godot
Engine contributors).

Also fixed "cf." Frenchism - it's meant as "refer to / see".

Backported from #70885.
2023-01-10 15:26:54 +01:00
Fabio Alessandrelli d0ba1517a7 [Web] Expose API to force file system sync. 2023-01-09 21:30:42 +01:00
Fredia Huya-Kouadio 4110d48b63 Add boot splash for the Godot Editor 2022-12-16 09:54:50 -08:00
Rémi Verschelde 6963ba631e
Fix typos with codespell 2022-12-15 12:26:59 +01:00
Dennis Ranke 55441f2301
handle ambiguous input events as touch events
there can be events can have both SOURCE_TOUCHSCREEN and SOURCE_STYLUS. handle them as touch events rather than mouse events.

(cherry picked from commit 408000752c)
2022-12-15 12:18:41 +01:00
Fredia Huya-Kouadio de45636fd3
Upgrade Android gradle plugin to version 7.2.1
(cherry picked from commit 151233b702)
2022-12-12 14:49:23 +01:00
Fabio Alessandrelli eda014197f
[Web] Add the "serve" and "run" scons targets.
You can now run the test HTTP server by calling:

scons p=javascript serve

If you also wish to run the browser, call instead:

scons p=javascript run

The default listen port is 8060, but can be overriden via the env
variable GODOT_WEB_TEST_PORT which must be a valid integer.

(cherry picked from commit a06602363c)
2022-12-12 14:49:22 +01:00
Hugo Locurcio 816db5c215
Replace local web server setup for web editor with a Python-based solution
This makes it easier to set up, as you always have Python installed
when building Godot. On the other hand, you don't always have Node.js
+ npm installed (and you may not want to spend time running `npm install`).

Co-authored-by: Fabio Alessandrelli <fabio.alessandrelli@gmail.com>
(cherry picked from commit 1be1b15a57)
2022-12-12 14:49:22 +01:00
Rémi Verschelde b0b759e6da
SCons: Cleanup `DEBUG`, `_DEBUG` and `NDEBUG` defines
- `_DEBUG` is MSVC specific so it didn't make much sense to define for
  Android and iOS builds.
- iOS was the only platform to define `DEBUG`. We don't use it anywhere
  outside thirdparty code, which we usually don't intend to debug, so it
  seems better to be consistent with other platforms.
- Consistently define `NDEBUG` to disable assert behavior in both `release`
  and `release_debug` targets. This used to be set for `release` for all
  platforms, and `release_debug` for Android and iOS only.
- Due to the above, I removed the only use we made of `assert()` in Godot
  code, which was only implemented for Unix anyway, should have been
  `DEV_ENABLED`, and is in PoolAllocator which we don't actually use.
- The denoise and recast modules keep defining `NDEBUG` even for the `debug`
  target as we don't want OIDN and Embree asserting all over the place.

(cherry picked from commit 26e9145c26)
2022-12-12 14:49:21 +01:00
Hugo Locurcio 06c266f231
Only support XDG directory path configuration on Linux
This also harmonizes the server code to be consistent with Linux desktop
(with warnings printed for relative XDG paths).

Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2022-12-12 11:13:19 +01:00
Pedro J. Estébanez 0873cf0656 Keep a single, portable implementation of `OS::get_processor_count()`
(cherry picked from commit 6bf02c0162)
2022-12-12 14:47:37 +08:00
nyanpasu64 8f5ccfa21f Fix burning CPU with udev disabled on Flatpak
Fixes #67355.

(cherry picked from commit 0cbd1c85a9)
2022-12-12 14:42:23 +08:00
bruvzg 5978268f79 [MSVC] Use symbols from .pdb only, to avoid incorrect names in the backtrace when symbols are missing.
(cherry picked from commit d99c32668a)
2022-12-12 13:54:32 +08:00
Rémi Verschelde b18ef4dc83 SCons: Remove redundant `-fomit-frame-pointer` and `-ftree-vectorize`
- `-fomit-frame-pointer` is included automatically by both GCC and
  Clang in `-O1` and above.
- `-ftree-vectorize` is included automatically by GCC in `-O2` and
  beyond, and seems always enabled by Clang.

Closes #66296. See that issue for a detailed investigation.

(cherry picked from commit c5c3d13dc0)
2022-12-04 20:03:06 +08:00
bruvzg 42e01da3c4
[macOS] Fix export button incorrectly disabled when using login/app password for notarization.
(cherry picked from commit aa117a128e)
2022-11-30 15:59:17 +01:00
Markus Sauermann ccb9ffb6a3
Fix unused exitcode in macos export plugin
Fix that the exitcode is never set.

(cherry picked from commit 567a591f87)
2022-11-30 15:58:29 +01:00
bruvzg 84904da07a
[Export] Use image loader directly to avoid "resource as image file" errors.
(cherry picked from commit 908bef8eee)
2022-11-30 15:56:06 +01:00
Fredia Huya-Kouadio d08e057194
Fix parsing of the `keep_screen_on` display setting
(cherry picked from commit 3c75887d41)
2022-11-30 15:52:10 +01:00
HolonProduction 477d24b6d1
Fix wrong android key mapping.
Fixes the wrong mapping of `Key::HOME`. Androids `KEYCODE_HOME` is in fact the hardware home button the right mapping is `KEYCODE_MOVE_HOME`.

Also adds mappings to keys that were not present before.

(cherry picked from commit a3f0dc5a83)
2022-11-30 15:47:30 +01:00
Riteo d69a9f43ea
Actually set the execinfo flag on non-glibc systems
(cherry picked from commit a3b5353892)
2022-11-30 15:43:02 +01:00
Hugo Locurcio fc4d35432e
Automatically use execinfo for crash handler on *BSD and musl-based Linux
Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
(cherry picked from commit 8e04bffbcf)
2022-11-30 15:43:00 +01:00
bruvzg 10073768cf
[macOS] Fix ⌘ + . + other modifier triggering twice.
(cherry picked from commit bfbbe9c1d0)
2022-11-30 15:40:12 +01:00
bruvzg ab7765997b
[macOS] Update activation hack to work on Ventura.
(cherry picked from commit 153d06d79b)
2022-11-30 15:34:27 +01:00
Abdulrahman Al Zeidi 5ada214c51
Fix static object destructors being called on gpu selection with X11
(cherry picked from commit 5860f81c18)
2022-11-30 15:34:27 +01:00
Pedro J. Estébanez de6b5f992b
Fix newlines not honored in Windows console
This is relevant when building with `windows_subsystem=console`.

(cherry picked from commit e14c5186e2)
2022-11-30 15:34:26 +01:00
Rémi Verschelde 86d5bb7f20
Merge pull request #68858 from bruvzg/win_regen_icon3
[3.x] Windows icon export improvements.
2022-11-28 10:16:26 +01:00
Dan d789ad4b20 fix exporting Android APPLICATION_ATTRIBS (3.X) 2022-11-22 12:24:17 -08:00
bruvzg 44739a121e
[3.x] Windows icon export improvements.
Regenerate Windows icon on export to ensure correct icon size order.
Add support for using PNG/WebP/SVG files as an icon for Windows exports.
Allow using WebP/SVG files as icon for macOS exports.
Add option to select generated icons interpolation, and set default interpolation to Lanczos.
2022-11-20 13:02:27 +02:00
Fredia Huya-Kouadio 5aab84befb Fix 'save & restart' logic for the Android Editor 2022-11-16 03:29:40 -08:00
bruvzg dbb52395bc
[macOS] Disable Dock and Menu in fullscreen mode. 2022-11-14 07:59:29 +02:00
Fredia Huya-Kouadio 5149311316 Add support for pointer capture 2022-11-07 08:38:28 -08:00
Rémi Verschelde 92aedd5063
Merge pull request #68190 from ztc0611/3.x-ios-promotion
[3.x] Add ProMotion/High Refresh Rate Support to iOS Exports
2022-11-03 11:34:22 +01:00
Zach Coleman e538771d4f [3.x] Add ProMotion Support to iOS Exports 2022-11-02 22:14:34 -04:00
Zach Coleman 5e7b0e3a61 [3.x] Add iOS UI Options 2022-11-02 22:13:18 -04:00
Fredia Huya-Kouadio be4b07c3e4 Add `double_tap` attribute to `InputEventScreenTouch`
This provides parity with the `InputEventMouseButton` allowing for proper conversion between the two events.
2022-10-20 11:56:11 -07:00
Fredia Huya-Kouadio 71c76a4ff2 Update the `clean` task configuration
Running `gradlew clean` will now properly delete the generated build artifacts
2022-10-18 20:37:23 -07:00
Jason Knight 6812e66f33 Change auto to default in cursor css settings. 2022-10-07 12:17:15 -06:00
Fredia Huya-Kouadio 6f153593dc
Merge pull request #66945 from m4gr3d/add_mouse_cursor_shape_support_3x
Add cursor shape support for the Android platform
2022-10-05 13:06:58 -07:00
Fredia Huya-Kouadio 46f091a803 Add cursor shape support for the Android platform 2022-10-05 12:08:54 -07:00
Jason Knight 31fe6848e8 Fix null in android keyboard handling. 2022-10-05 11:18:39 -06:00
Rémi Verschelde 6f6c8b114b HTML5: Add missing `OS::get_cursor_shape()` implementation
Fixes #66835.
2022-10-04 12:49:16 +02:00
bruvzg 77fc88e9a6 [Windows, 3.x] Fix WM_CHAR processing code using Unicode char instead of Virtual key. 2022-09-23 20:22:05 +03:00
Rémi Verschelde 8a6763cf74
Merge pull request #66216 from Calinou/windows-enable-ansi-escape-codes-3.x 2022-09-22 09:33:40 +02:00
Hugo Locurcio 257305c58d
Enable ANSI escape code processing on Windows 10 and later
This lets the engine and projects use the same color codes
in the terminal on all platforms.
2022-09-21 17:22:12 +02:00
bruvzg 47d2b4e732
[macOS export, 3.x] Simplify code signing options, add support for rcodesign tool for signing and notarization. 2022-09-21 10:37:25 +03:00
Ted Spikes 4356077153 Check for ios_simulator when building for x86_64
(cherry picked from commit 21f7bd0723)
2022-09-20 10:26:17 +02:00
Rémi Verschelde d5c1baa288 SCons: Refactor handling of `production` flag and per-platform LTO defaults
Fixup to #63288.
See #65583 for the bug report.

Co-authored-by: Cyberrebell <chainsaw75@web.de>
(cherry picked from commit 35a15e6191)
2022-09-20 10:26:17 +02:00
Fredia Huya-Kouadio 1f23bac645 Disable menus and functionality that are not relevant on the Android Editor port 2022-09-13 07:38:07 -07:00
Fredia Huya-Kouadio da332d69c0 Exclude small screens from the set of supported devices. 2022-09-12 08:00:23 -07:00
Fredia Huya-Kouadio f37390cbc5 Update the versioning logic for the Godot Android Editor
This is necessary to separate subsequent uploads to the Google Play store as each upload needs to increment the version code.
2022-09-12 07:59:45 -07:00
Rémi Verschelde 953dea1227
Merge pull request #63309 from akien-mga/3.x-scons-refactor-lto 2022-09-08 11:24:54 +02:00
Rémi Verschelde 05e7275fce
Merge pull request #65365 from akien-mga/3.x-html5-emsdk-3.1.20 2022-09-08 10:11:06 +02:00
Rémi Verschelde bfe60393f5
Merge pull request #65503 from m4gr3d/fix_invalid_project_manager_path_3x 2022-09-08 09:48:43 +02:00
Fredia Huya-Kouadio 4be7c91cd9 Fix issue causing the project manager to crash because of missing path argument
In the process, the initialization logic is updated to show an error message and gracefully close the engine when setup errors occur.
2022-09-07 14:25:22 -07:00
Fredia Huya-Kouadio 63df48a59c Enable long press, pan and scale gestures for the Godot Android Editor
Fix the bug causing the editor to crash when running the project.
2022-09-07 13:29:31 -07:00
Fredia Huya-Kouadio 440fa10246 Cleanup the Android input logic implementation 2022-09-07 13:29:31 -07:00
Rémi Verschelde 5271d69909 HTML5: Fix warning with Emscripten 3.1.20
And use that version for CI.
2022-09-05 15:37:33 +02:00
Rémi Verschelde 570e6c1730 SCons: Refactor LTO options with `lto=<none|thin|full>`
Adds support for LTO on macOS and Android.
Disable LTO by default on iOS even if `production=yes` is set.

Also add `linker` option to `server` platform missed in #63283.

Refactor code handling old arguments to make it simpler (breaks compat,
but is explicit enough about it and scripts are easy to fix).
2022-09-05 14:45:12 +02:00
Rémi Verschelde 0881ca5cca
Merge pull request #64778 from akien-mga/3.x-mono-uwp-unsupported 2022-08-31 21:03:55 +02:00
Fredia Huya-Kouadio 9910d4681d Additional fixes to the Android `get_current_dir()` implementation. 2022-08-30 10:08:30 -07:00
Rémi Verschelde aeb70fc0e2
Merge pull request #65043 from akien-mga/3.x-cherrypicks 2022-08-30 12:51:53 +02:00
bruvzg 3a24839cb2
[3.x, macOS / iOS Export] Fix generation of duplicate locale property list files. 2022-08-30 08:16:49 +03:00
Rémi Verschelde 44af879438 Linux: Fix GNU ld detection for pck_embed linker script
(cherry picked from commit fce3602a1e)
2022-08-29 15:55:45 +02:00
Rémi Verschelde abaa76fcf9 CI: Sync configuration with master branch
Updates various actions to latest versions:

actions/cache@v3
actions/checkout@v3
actions/upload-artifact@v3
actions/setup-dotnet@v2
actions/setup-java@v3
actions/setup-python@v4
mymindstorm/setup-emsdk@v11
2022-08-25 14:11:54 +02:00
Rémi Verschelde 59402ff8ad
Merge pull request #64631 from nathanfranke/3-ios-opaque
(3.x) iOS: Force app store icon to be opaque, use proper errors, fix memory leak
2022-08-25 08:43:14 +02:00
Rémi Verschelde 8388ea1d6b
Merge pull request #64839 from akien-mga/3.x-zstd-1.5.2
zstd: Update to upstream version 1.5.2
2022-08-25 00:51:28 +02:00
bruvzg c4885c8be8 Use clang as assembler to ensure preprocessing is done, and add assembler "target" flag.
(cherry picked from commit e873778561)
2022-08-24 18:26:29 +02:00
bruvzg b7c9eb1a3c Add arch flag to assembler to fix build on ARM64 macOS / iOS.
(cherry picked from commit b767d2e0fd)
2022-08-24 18:26:28 +02:00
Jamie Pate 562d7c616d Improve performance of screen_get_dpi() in Javascript
Replace a bisect with a single multiplication when calling
screen_get_dpi() in Javascript

Tested the value of
window.matchMedia(`(resolution:${(window.devicePixelRatio*96).toFixed(100)}dpi)`).matches
which is true except for values that cause a lot of rounding errors
(e.g. dpr : 0.3  => resolution: 28.799999999999997dpi)

Even in these cases the value matches the result of the previous
`findDPI()` method.

See also:

6cff589b5b (r81273660)
(cherry picked from commit c2e3971013)
2022-08-24 17:16:33 +02:00
Pedro J. Estébanez 0876491983 Clean iOS platform config of long gone macro
(cherry picked from commit 8c2a577350)
2022-08-24 17:13:21 +02:00
Rémi Verschelde ceef056146 Mono: Show custom error explaining that UWP is not supported
Fixes #64490.
2022-08-23 13:21:10 +02:00
Fredia Huya-Kouadio b5e1096c61 Fix issue with `get_current_dir()` returning the wrong path on Android 2022-08-19 20:32:55 -07:00
Nathan Franke da3aecff01
3.x: ios: force app store icon to be opaque, use proper errors, fix memory leak 2022-08-19 13:18:01 -05:00
Fredia Huya-Kouadio 989d5990ad
Merge pull request #64420 from m4gr3d/investigate_read_write_access_loss_3x
[3.x] Fix issue preventing the Android Editor from displaying the project content
2022-08-15 13:19:01 -07:00
Fredia Huya-Kouadio 3ac6b6a596 Disable threads used to check on plugins to load
The functionality is unavailable on Android (requires export capability) and unnecessarily consumes resources
2022-08-15 02:30:08 -07:00
Fredia Huya-Kouadio 30479543b0 Fix issue preventing the Android Editor from displaying the project content
The issue was causing by a bug within the logic for `FileAccessFilesystemJAndroid#eof_reached()` causing that value to remain false after the eof was reached.
This in turn caused an infinite loop in the file scanner preventing the project's content from showing up.
2022-08-15 02:21:34 -07:00
Fredia Huya-Kouadio ef44e63f22 Fix GodotTTS native initialization 2022-08-14 22:01:31 -07:00
Fredia Huya-Kouadio d2213f76a9 Refactor the export checking logic to improve separation of concerns 2022-08-14 08:47:09 -07:00
Sergey Minakov e8035ffe84 [iOS] Extend iOS plugins to support Swift runtime 2022-08-09 20:19:12 +03:00
Rémi Verschelde 6eee83579a
Merge pull request #64101 from timothyqiu/subsecond 2022-08-08 16:31:49 +02:00
Rémi Verschelde 8cc8127bb1
Merge pull request #62886 from madmiraal/fix-59931-3.x 2022-08-08 15:54:39 +02:00
Rémi Verschelde 7dc8ec0c61
Merge pull request #63643 from aaronfranke/3.x-mouse-mode-ch 2022-08-08 14:36:45 +02:00
Haoyu Qiu 1be078ebcb Fix Time.get_unix_time_from_system() not including msecs 2022-08-08 20:31:51 +08:00
bruvzg 8147f04db6
[Linux] Disable speech-dispatcher, pulseaudio and udev wrapper builds, when library is not found. 2022-08-06 11:54:20 +03:00
Rémi Verschelde 0bed7ea63f
Merge pull request #61316 from bruvzg/tts_3x
[3.x] Backport text-to-speech support.
2022-08-05 23:45:51 +02:00
Rémi Verschelde 26762a71b6
Merge pull request #58537 from winterpixelgames/feature/virtual-keyboard-types-3.x 2022-08-05 19:37:13 +02:00
bruvzg e0101e511c Improve some export error messages.
(cherry picked from commit ea00cf7270)
2022-08-01 10:37:04 +02:00
Rémi Verschelde 751b16a285 File: Re-add support to skip CR (`\r`) in `File::get_as_text`
This was removed in #63481, and we confirmed that it's better like this,
but we add back the possibility to strip CR as an option, to optionally
restore the previous behavior.

For performance this is done directly in `String::parse_utf8`.

Also fixes Android `FileAccess::get_line()` as this one _should_ strip CR.

Supersedes #63717.

(cherry picked from commit 1418f97c70)
2022-08-01 00:40:55 +02:00
Rémi Verschelde 10e8a25ce7 SCons: Fix X11 `use_lld` fallback not being applied 2022-07-31 13:49:12 +02:00
Aaron Franke 0d6e2d1090
Add MOUSE_MODE_CONFINED_HIDDEN to MouseMode enum 2022-07-29 13:46:04 -05:00
pattlebass fb7ecc748f [3.x] HTML5: Add support for `Input.vibrate_handheld()` 2022-07-28 13:20:05 +03:00
Rémi Verschelde 6c8d9b8401
Merge pull request #63480 from m4gr3d/fix_remaining_scoped_storage_regressions_3x
[3.x] Address remaining scoped storage regressions
2022-07-26 18:15:14 +02:00
Fredia Huya-Kouadio fc2c202312 Address remaining scoped storage regressions
- Accelerate common path used to check the storage scope for a given path
- Update the logic for the `get_as_text()` method - previous logic loads the content of a text file one byte at a time
2022-07-26 07:42:49 -07:00
Kevin Smith 01cfcab5c6 Use bigobj for release MSVC builds
Previously it was used only on debug builds, but recent
additions to variant_call.cpp have made that unit too
large even in release_debug.

It was originally set to debug only because using it
breaks mingw, so this only reinstates it for MSVC where
it shouldn't have any drawbacks (famous last words).

Test-Information:
Builds for me with
scons -j 40 platform=windows target=release_debug
and my game then runs from it.

(cherry picked from commit d8900e0020)
2022-07-26 11:01:55 +02:00
Rémi Verschelde 818f1eed31 Code quality: Fix header guards consistency
Adds `header_guards.sh` bash script, used in CI to validate future
changes. Can be run locally to fix invalid header guards.
2022-07-25 14:53:37 +02:00
Pedro J. Estébanez a0448f1d5e Flush buffered input events on UWP
(cherry picked from commit b53d032fb8)
2022-07-25 11:44:36 +02:00
Rémi Verschelde 364071c2c4
Merge pull request #63283 from akien-mga/3.x-scons-linux-refactor-linker 2022-07-22 11:40:29 +02:00
Hansem Ro a36902f2c1 [3.x, X11] Do case-insensitive search for pen inversion detection 2022-07-21 19:25:39 -07:00
Rémi Verschelde 5bb3063eec SCons: Refactor Linux linker options with `linker=<bfd|gold|lld|mold>`
The new option is `linker` and lets the user specify the argument to
the`-fuse_ld=` linker flag directly. The supported options are:

- `default`: No change, typically uses GNU ld (bfd) unless the user or
  distro picked a different default `/usr/bin/ld`.
- `bfd`: GNU ld from binutils
- `gold`: GNU gold from binutils
- `lld`: lld from LLVM
- `mold`: mold, an extremely fast modern linker, not (yet) intended for
  use in production but great for development speed. Provided by distro
  `mold` package or needs to be compiled from source and installed to
  `/usr` otherwise.

Deprecates the `use_lld=yes` option, and make lld actually usable with
GCC too.

Not all the above are compatible or recommend for LTO, we recommend
using GNU ld with GCC LTO, or lld with LLVM ThinLTO.

(cherry picked from commit 534f85add1daec0669a1f18edd2cc456f9a296ef)
2022-07-22 01:03:31 +02:00
bruvzg 108dcf3bf0
Improve OS.set_current_screen
Fix moving fullscreen windows on macOS and Windows
Fix window position on Linux/X11
2022-07-19 12:23:52 +03:00