Commit Graph

4130 Commits

Author SHA1 Message Date
Aaron Franke e53ae13178
Split up editor export code into multiple files 2022-07-26 08:28:19 -05:00
Rémi Verschelde ba2cffc575
Merge pull request #63096 from aaronfranke/exp-template-names 2022-07-26 10:28:25 +02:00
bruvzg 36ef8f29dc
Implement support for loading system fonts on Linux, macOS / iOS and Windows. 2022-07-26 08:38:05 +03:00
Rémi Verschelde 3e0e84a54c
Merge pull request #63459 from Kev/bigobj-for-msvc-release 2022-07-25 23:08:26 +02:00
Kevin Smith d8900e0020 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.
2022-07-25 20:10:20 +01:00
Rémi Verschelde 90019676b0 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 11:17:40 +02:00
Rémi Verschelde 3084a48ace
Merge pull request #63219 from reduz/implement-vector4-projection 2022-07-25 11:13:27 +02:00
MaxIsJoe f3979527de Fixes `OS.get_unique_id()` string not getting printed properly
Fixes #61023

Changing it back to how it's done on the 3.x branch fixed the text not being written properly.
2022-07-24 11:05:36 +02:00
reduz 455c06ecd4 Implement Vector4, Vector4i, Projection
Implement built-in classes Vector4, Vector4i and Projection.

* Two versions of Vector4 (float and integer).
* A Projection class, which is a 4x4 matrix specialized in projection types.

These types have been requested for a long time, but given they were very corner case they were not added before.
Because in Godot 4, reimplementing parts of the rendering engine is now possible, access to these types (heavily used by the rendering code) becomes a necessity.

**Q**: Why Projection and not Matrix4?
**A**: Godot does not use Matrix2, Matrix3, Matrix4x3, etc. naming convention because, within the engine, these types always have a *purpose*. As such, Godot names them: Transform2D, Transform3D or Basis. In this case, this 4x4 matrix is _always_ used as a _Projection_, hence the naming.
2022-07-23 14:00:01 +02:00
Rémi Verschelde 667cef39b4
Merge pull request #63341 from RandomShaper/fix_uwp_accum_input
Flush buffered input events on UWP
2022-07-23 13:50:00 +02:00
Pedro J. Estébanez b53d032fb8 Flush buffered input events on UWP 2022-07-23 12:06:22 +02:00
Aaron Franke 8b5c744f95
Update export template names for Windows, Mac, and Linux 2022-07-22 18:40:59 -05:00
Rémi Verschelde f37990ed77
Merge pull request #63278 from akien-mga/scons-linux-refactor-linker 2022-07-22 11:40:10 +02:00
Rémi Verschelde ed926c4ec1
Merge pull request #63303 from hansemro/x11-eraser-case-insensitive
[X11] Do case-insensitive search for pen inversion detection
2022-07-22 09:17:04 +02:00
Hansem Ro 0f5436098b [X11] Do case-insensitive search for pen inversion detection 2022-07-21 19:25:22 -07:00
Rémi Verschelde c8479c0d4d 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.

Removes 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.
2022-07-22 01:00:35 +02:00
bruvzg 3833165d85
[Export] Update generated CLI helper script to work on clean macOS Monterey installation. 2022-07-21 13:50:37 +03:00
bruvzg 8823eae328
Rename OSX to macOS and iPhoneOS to iOS. 2022-07-21 09:37:52 +03:00
Riteo a21f8b7c13 Improve `linuxbsd` headless building, cleanup build scripts
Now the `linuxbsd` platform can be built headlessly (e.g. without X11
development libraries).

I also cleaned up some weird (old?) usages of the `env` variable which
seem to make no difference and are used nowhere else.
2022-07-20 19:48:35 +02:00
Riteo f035e7844f Remove `-pipe` from `LINKFLAGS`
For some reason this fixes the CI from going OOM.
2022-07-20 19:04:31 +02:00
bruvzg 680b5f1afb
[Windows] Set fullscreen flags on window creation. 2022-07-19 13:36:39 +03:00
bruvzg 7c005ba723
Improve DisplayServer.window_set_current_screen
Prevent unnecessary fullscreen toggle animation on macOS, when screen is not changed
Fix window position on Linux/X11
2022-07-19 12:26:11 +03:00
pattlebass d57a76c809 HTML5: Make `OS.get_locale()` match other platforms
Fixes #63029.
2022-07-15 22:11:39 +03:00
Marcel Admiraal 6661141c21 Fix incorrect Android scancodes 2022-07-13 16:24:01 +01:00
Rémi Verschelde 19b10e2784
Merge pull request #62824 from MinusKube/haunted-editor-bug
Fix haunted editor bug causing weird issues with mouse behaviour
2022-07-13 14:13:16 +02:00
Rémi Verschelde 9b3972ad48
Merge pull request #62843 from RandomShaper/fix_iphone_input
Flush accumulated input events on iOS
2022-07-11 18:28:36 +02:00
Pedro J. Estébanez 1b98e904d0 Flush accumulated input events on iOS 2022-07-08 21:37:07 +02:00
kobewi d2900429e8 Add static methods for creating Image and ImageTexture 2022-07-08 13:40:47 +02:00
MinusKube 7b05df8029 Move windows display server's 'outside' field to WindowData struct 2022-07-07 21:11:00 +02:00
Rémi Verschelde 1b8711b56c
Merge pull request #62813 from bruvzg/android_fix_zstd_build 2022-07-07 15:16:57 +02:00
bruvzg e873778561 Use clang as assembler to ensure preprocessing is done, and add assembler "target" flag. 2022-07-07 14:15:12 +03:00
bruvzg 238ac2fdd5
[macOS] Improve file association handling, and allow URL schema handling. 2022-07-07 12:11:31 +03:00
bruvzg a194043ea8
Check if GL manager exist to prevent crash when using multithreaded renderer with Vulkan. 2022-07-06 09:56:47 +03:00
Fredia Huya-Kouadio f9c19298ce Add full support for Android scoped storage.
This was done by refactoring directory and file access handling for the Android platform so that any general filesystem access type go through the Android layer.
This allows us to validate whether the access is unrestricted, or whether it falls under scoped storage and thus act appropriately.
2022-07-05 03:00:37 -07:00
Rémi Verschelde 344b42703b
Merge pull request #62212 from hansemro/eraser-detect-4
Add inversion/eraser-end property for tablet pens
2022-07-04 21:48:19 +02:00
Hansem Ro 6dcc9d1131 [macOS, Windows, X11] Add stylus inverted/eraser support to
InputEventMouseMotion event
2022-07-04 10:36:53 -07:00
lawnjelly b221eab426 Variant memory pools
Memory pools via PagedAllocator for Transform2D, Transform3D, Basis and AABB.
2022-07-04 12:01:46 +01:00
Rémi Verschelde e79cb76146
Merge pull request #62611 from akien-mga/android-preset-refactor-custom-build 2022-07-03 18:38:39 +02:00
Rémi Verschelde ef4a5cd10b Android: Refactor Custom Build options in export preset
Instead of reusing the custom_template/ prefix which is actually only
used for the prebuilt APK workflow, we add a new custom_build/ prefix.

This is a slight compat breakage (users will have to redo their config)
but enables us to group the Min SDK and Target SDK options where they make
sense, and avoid reusing the previously hardcoded Target SDK 30 from
Godot 3.4.

Those two options are now strings instead of integers so that we can keep
them empty by default, and show their default value using a placeholder.
So some validation has been added to make sure they are proper ints.
The upper bound on Target SDK was also removed as it's a common use case
to use it to try to target newer released SDKs. But we warn the user that
this wasn't validated by us.

The export info dialog is now exclusive so that when it doesn't auto-close,
i.e. when it errors, you don't close it by mistake by clicking outside.

Fixes #62465.
2022-07-03 17:05:28 +02:00
bruvzg b2462cfd8a
[macOS] Use statically linked MoltenVK by default, automatically detect MoltenVK SDK install (only in the default location). 2022-07-03 17:11:18 +03:00
Rémi Verschelde ec1348a72a
Merge pull request #62618 from Bromeon/bugfix/exit-code
Fix exit code of --help and --version, and test them in CI
2022-07-02 10:25:03 +02:00
Fabio Alessandrelli 04bdd7eb93
Merge pull request #62607 from RPicster/master-default-cursor-fix
Default cursor fix for html5 export
2022-07-02 08:05:52 +02:00
Jan Haller d38d76d039 Fix exit code of --help and --version, and test them in CI
Corrects prior regression which caused ERROR output and exit code of 1.
2022-07-02 01:17:35 +02:00
bruvzg 4cca1352b9
[macOS export] Unref FileAccess to ensure chmod is successful. 2022-07-02 00:34:27 +03:00
Raffaele Picca 7e43fb6ad2 Default cursor fix for html5 export 2022-07-01 20:50:04 +02:00
bruvzg b767d2e0fd
Add arch flag to assembler to fix build on ARM64 macOS / iOS. 2022-07-01 12:44:23 +03:00
Wilson E. Alvarez aadf831a67 Properly check for fullscreen toggle made through the Window Manager
Fixes #40007.

Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2022-06-30 12:14:46 +02:00
Rémi Verschelde 898e09e2e6
Merge pull request #61691 from madmiraal/android-ndk-23
Upgrade Android NDK to r23 LTS
2022-06-26 21:23:23 +02:00
Fredia Huya-Kouadio 6a7471b204
Merge pull request #62289 from madmiraal/fix-61816
Remove broken scroll gesture on Android
2022-06-25 18:48:14 -07:00
Marcel Admiraal 48efd563e4 Upgrade Android NDK to r23 LTS 2022-06-25 14:58:30 +01:00
Gustavo Maciel ec6d5d6cba Update android:targetSdkVersion from 30 to 31
Starting in August 2022, new apps will need to target API level 31 (Android 12) or higher and adjust for behavioral changes.

Read more here: https://developer.android.com/google/play/requirements/target-sdk
2022-06-23 15:17:15 +02:00
Marcel Admiraal 076638f13b Remove broken scroll gesture on Android 2022-06-21 17:14:20 +01:00
Rémi Verschelde a60e2085b6
Merge pull request #62000 from gregcsokas/master 2022-06-17 13:02:19 +02:00
gregcsokas 42e619c01e Adding function key support from F17 to F35
OSX supports everything by default,
Linux is also capable of supporting every function key,
Windows as I know support only up to F24
2022-06-16 19:38:21 +02:00
Marcel Admiraal 806e7d18d1 Ensure joystick has been added or not already removed when processing input 2022-06-16 18:15:25 +01:00
Jiri Suchan 8d94d26caf refactoring: simplify compiler version check 2022-06-14 22:23:20 +07:00
Fabio Alessandrelli 3a2fbd6fae [HTML5] Add GDNative+Threads build. 2022-06-14 14:09:06 +02:00
Fredia Huya-Kouadio 6b9a81900e Migrate the Godot Editor java source file to Kotlin. 2022-06-09 13:26:24 -07:00
bruvzg e00571b194
Add readable export errors. 2022-06-08 17:55:46 +03:00
bruvzg 40b3be7912
Remove mouse events that closed the popup from queue, to fix pop-up reopening. 2022-06-02 08:35:27 +03:00
Rémi Verschelde cd7871867f
Merge pull request #61579 from madmiraal/android-kotlin-java-version
Ensure Android Java and Kotlin compile to the same version
2022-06-01 18:31:09 +02:00
Marcel Admiraal b19bbadcf0 Ensure Android Java and Kotlin compile to the same version 2022-06-01 16:23:44 +01:00
Fredia Huya-Kouadio 6f7ec7f723 Misc editor tweaks and polishes:
- Using a bucketized approach to select the editor scale in order to avoid too high values
- Add default app dimensions: used on Android devices with free floating app windows to set the default app frame
- Add ability to launch the Game window in an adjacent frame when in multi window mode
2022-05-31 23:49:40 -07:00
Rémi Verschelde b777454097
Merge pull request #61573 from madmiraal/android-cleanup
Cleanup Android C++ code
2022-05-31 23:48:16 +02:00
Marcel Admiraal 2afef001e7 Cleanup Android C++ code 2022-05-31 17:11:05 +01:00
Marcel Admiraal d0cb299f04 Only use Android fullscreen theme for splash screen 2022-05-27 16:54:44 +02:00
Rémi Verschelde 6aa7449d60 HTML5: Run `npm audit fix`
And re-add `node_modules` to `.gitignore` which I mistakenly removed
with an earlier cleanup.
2022-05-25 14:56:43 +02:00
Rémi Verschelde 3ff6d794c0 HTML5: Enable mbedTLS module for Crypto object
Increases the size of the wasm by around 3% (~300-350 KiB).

This enables using the Crypto object for hashing, signing and encryption,
and therefore reduces the gap between the features of the HTML5 platform
and other platforms.

Closes https://github.com/godotengine/godot-proposals/issues/3574.
2022-05-25 14:19:49 +02:00
Rémi Verschelde 360119ffbf
Merge pull request #61352 from Faless/ext/linux_export
[Editor] Fix GDExtension GNU/Linux export.
2022-05-25 01:17:59 +02:00
Fabio Alessandrelli 9c2b5ae5ce [Editor] LinuxBSD export reports Linux as OS name.
This is in line with what's reported by the `OS` class on GNU/Linux, and
is required by the extension exporter to identify the correct library.

For BSD, we should either finish splitting the platform (into
platform/bsd) or register a separate exporter with OS name BSD and
proper templates detection.
2022-05-24 12:01:34 +02:00
Rémi Verschelde 3bee0689bc
Merge pull request #61333 from m4gr3d/fix_restart_logic_main 2022-05-23 23:11:53 +02:00
Fredia Huya-Kouadio d38ffda2c3 Fix the logic to restart the Godot application 2022-05-23 13:15:48 -07:00
Rémi Verschelde 9b3dd5e8c5
Merge pull request #61330 from madmiraal/android-duplicate-register
Remove duplicate Android sensor listener registrations
2022-05-23 21:58:50 +02:00
Rémi Verschelde 9923851370 Fix typos with codespell
Using codespell 2.2-dev from current git.
2022-05-23 21:32:19 +02:00
Marcel Admiraal cf0f967e6d Remove duplicate Android sensor listener registrations 2022-05-23 20:33:13 +02:00
reduz 45af29da80 Add a new HashSet template
* Intended to replace RBSet in most cases.
* Optimized for iteration speed
2022-05-20 22:40:38 +02:00
Rémi Verschelde 3aa83a0235
Merge pull request #61020 from timothyqiu/wait-busy 2022-05-19 15:41:41 +02:00
Aaron Record 900c676b02 Use range iterators for RBSet in most cases 2022-05-19 12:09:16 +02:00
Haoyu Qiu fc3b845c07 Add dedicated macros for property name extraction
* Replace case-by-case extraction with PNAME & GNAME
* Fix group handling when group hint begins with property name
* Exclude properties that are PROPERTY_USAGE_NO_EDITOR
* Extract missing ADD_ARRAY*, ADD_SUBGROUP* macros
2022-05-19 14:08:47 +08:00
Rémi Verschelde ccdd85d8e7
Merge pull request #61001 from derammo/derammo_popup_conditional_hide 2022-05-17 12:56:53 +02:00
Rémi Verschelde d6e7dcbea9
Merge pull request #61074 from timoschwarzer/fix-ios-vibration-duration 2022-05-16 12:00:26 +02:00
reduz 746dddc067 Replace most uses of Map by HashMap
* Map is unnecessary and inefficient in almost every case.
* Replaced by the new HashMap.
* Renamed Map to RBMap and Set to RBSet for cases that still make sense
  (order matters) but use is discouraged.

There were very few cases where replacing by HashMap was undesired because
keeping the key order was intended.
I tried to keep those (as RBMap) as much as possible, but might have missed
some. Review appreciated!
2022-05-16 10:37:48 +02:00
Timo Schwarzer 05d524b624
Fix vibration duration on iOS
Fixes #61063
2022-05-16 10:34:49 +02:00
Haoyu Qiu ffd5362187 Swap the meaning of CURSOR_WAIT and CURSOR_BUSY 2022-05-14 10:13:42 +08:00
derammo 47d0dc8a41 popup deferred hide suppressed if reopened
popup no longer tries to close itself a second time
popup no longer closes after having been reopened
fixed bug in RenameDialog not calling base (by inspection)
fixes #59181
fixes #60921
reverts #59287
2022-05-13 09:30:00 -04:00
Rémi Verschelde 349aa9c884
Merge pull request #60894 from derammo/derammo_opengl3_windows 2022-05-13 15:07:13 +02:00
Hugo Locurcio 78b4ec2d4d
Increase compiler optimization when using `target=release` on iOS/Android 2022-05-13 01:12:20 +02:00
Rémi Verschelde ff30a09993
Merge pull request #60643 from clayjohn/GLES3-3D 2022-05-12 21:08:02 +02:00
clayjohn 652adcd5bf Basic 3D rendering 2022-05-12 10:37:27 -07:00
reduz 8b7c7f5a75 Add a new HashMap implementation
Adds a new, cleaned up, HashMap implementation.

* Uses Robin Hood Hashing (https://en.wikipedia.org/wiki/Hash_table#Robin_Hood_hashing).
* Keeps elements in a double linked list for simpler, ordered, iteration.
* Allows keeping iterators for later use in removal (Unlike Map<>, it does not do much
  for performance vs keeping the key, but helps replace old code).
* Uses a more modern C++ iterator API, deprecates the old one.
* Supports custom allocator (in case there is a wish to use a paged one).

This class aims to unify all the associative template usage and replace it by this one:
* Map<> (whereas key order does not matter, which is 99% of cases)
* HashMap<>
* OrderedHashMap<>
* OAHashMap<>
2022-05-12 11:21:29 +02:00
derammo 96c21bc749 opengl3 driver now works on windows including multi window
fixed and simplified gl_manager_windows
swap buffers now called for all windows
fixed missing pixel format setting in additional windows
    this makes them work in OpenGL contexts
changed verbose error printing to write once
    this error message happens very frequently while opengl3 is not finished
removed dead code no longer needed after changes
fixed comments that were misinformation
window messages during window creation now handled
    these were previously discarded
    messages now tunnel the required context
changed failure to create opengl3 window on windows to be more fatal
marked a problem with pen code
conditional compilation of vulkan and opengl3 on windows fixed
windows debug builds now show messages on debug console also
rendering driver selection box now shows only compiled drivers
marked some problematic code
thanks to akien-mga for patiently rewriting my style mistakes
2022-05-11 16:12:40 -04:00
bruvzg d36c5514d3
Fix ZipIO crash when reused (and possible leaks). 2022-05-11 16:08:17 +03:00
Fabio Alessandrelli 9bdb853eec [HTML5] Limit the returned OS cpu count to 2.
Temporarily workaround issues due to godot spawning too many threads.
2022-05-11 00:26:02 +02:00
Fabio Alessandrelli 39d9a5540c [HTML5] Fix JS "tools" editor plugin.
Needed update after file/dir access refactoring.
2022-05-10 23:56:32 +02:00
Fabio Alessandrelli e8110474b6 [HTML5] Add "webgl/webgl2.h" as OpenGL include.
Requires emscripten versions > 2.0.17 .
2022-05-10 23:56:21 +02:00
bruvzg ffe61e0895
[macOS / iOS] Fix text-to-speech build with older macOS / iOS SDK.
Add __has_include check for AVFAudio include.
Add some explicit casts to avoid conflicts.
Change all `include`s to `import`s for consistency.
2022-05-10 21:11:34 +03:00
Haoyu Qiu a71e808112 Try to convert OS::execute() output to Unicode on Windows 2022-05-10 20:54:48 +08:00
bruvzg b268c4b4bc [Windows] Save and re-apply window icon when changing window style. 2022-05-10 11:12:04 +03:00
Rémi Verschelde c366f8d2d4 Crash handler: Use `print_error` to include backtrace in logs 2022-05-05 12:22:56 +02:00
Marcel Admiraal c893302ca1 Read and store joypad events in a separate thread on x11 platform 2022-05-05 07:51:54 +02:00