Commit Graph

1250 Commits

Author SHA1 Message Date
Rémi Verschelde 70dcfdab1f
Merge pull request #76446 from reduz/add-gdextension-api-compatibility
Add a backwards-compatibility system for GDExtension
2023-05-15 13:43:46 +02:00
Juan Linietsky d8078d3f4c Add a backwards-compatibility system for GDExtension method
This adds a way to ensure that methods that were modified in the Godot API will continue working in older builds of GDExtension even if the new signature is different.

```C++
// New version (changed)
ClassDB::bind_method(D_METHOD("add_sphere","radius","position"),&MyShapes::add_sphere);
// Compatibility version (still available to extensions).
ClassDB::bind_compatibility_method(D_METHOD("add_sphere","radius"),&MyShapes::_compat_add_sphere);
```

**Q**: If I add an extra argument and provide a default value (hence can still be called the same), do I still have to provide the compatibility version?
**A**: Yes, you must still provide a compatibility method. Most language bindings use the raw method pointer to do the call and process the default parameters in the binding language, hence if the actual method signature changes it will no longer work.

**Q**: If I removed a method, can I still bind a compatibility version even though the main method no longer exists?
**A**: Yes, for methods that were removed or renamed, compatibility versions can still be provided.

**Q**: Would it be possible to automate checking that methods were removed by mistake?
**A**: Yes, as part of a future PR, the idea is to add a a command line option to Godot that can be run like : `$ godot --test-api-compatibility older_api_dump.json`, which will also be integrated to the CI runs.
2023-05-15 12:05:40 +02:00
Pedro J. Estébanez 9077bb9232 Fix multiple issues in WorkerThreadPool
- Fix project settings being ignored.
- Made usages of `native_thread_allocator` thread-safe.
- Remove redundant thread-safety from `low_priority_threads_used`, `exit_threads`.
- Fix deadlock due to unintended extra lock of `task_mutex`.
2023-05-11 16:10:09 +02:00
Pedro J. Estébanez 8983b20ccd Avoid interaction issues between resource loading threads 2023-05-10 18:53:41 +02:00
Rémi Verschelde 5271186f2f
Merge pull request #75901 from reduz/refactor-node-processing
Refactor Node Processing to allow Scene Multithreading
2023-05-10 12:46:44 +02:00
smix8 a6ac305f96 Rework Navigation Avoidance
Rework Navigation Avoidance.
2023-05-10 05:01:58 +02:00
Rémi Verschelde 6bca6beea3
Merge pull request #76878 from RedworkDE/tests-fix-errors
Fix various errors when running the unit tests
2023-05-09 19:28:54 +02:00
Rémi Verschelde 10ed1d87df
Merge pull request #76490 from dsnopek/dump-gdscript-docs
Dump API docs from inline GDScript comments using --doctool --gdscript-docs PATH
2023-05-09 19:28:30 +02:00
Juan Linietsky 98c655ec8d Refactor Node Processing
* Node processing works on the concept of process groups.
* A node group can be inherited, run on main thread, or a sub-thread.
* Groups can be ordered.
* Process priority is now present for physics.

This is the first steps towards implementing https://github.com/godotengine/godot-proposals/issues/6424.
No threading or thread guards exist yet in most of the scene code other than Node. That will have to be added later.
2023-05-09 19:17:51 +02:00
RedworkDE 8e7afec479 Fix various errors when running the unit tests
Co-authored-by: bruvzg <7645683+bruvzg@users.noreply.github.com>
2023-05-09 18:40:56 +02:00
Rémi Verschelde 1a987eb9ba
Merge pull request #76624 from myaaaaaaaaa/movie-stat
Print CPU and GPU usage statistics after Movie Maker is finished
2023-05-09 10:45:35 +02:00
myaaaaaaaaa c55892cc5c Print CPU and GPU usage statistics after Movie Maker is finished 2023-05-08 12:02:52 -04:00
David Snopek a64137d5dd Dump API docs from inline GDScript comments using --doctool --gdscript-docs PATH 2023-05-08 11:00:29 -05:00
Juan Linietsky 273a6eeb66 Redo how the remote filesystem works
Instead of reading files over the network, the new version uses a local file cache and only updates files when it changes.

The original remote filesystem was created 14 years ago, when ethernet was faster than hard drives or even flash. Also, mobile devices have a very small amount of storage.
Nowadays, this is no longer the case so the approach is changed to using a persistent cache in the target device.

Co-authored-by: m4gr3d
2023-05-08 11:57:54 +02:00
Rémi Verschelde 67ccb5a739
Merge pull request #73617 from myaaaaaaaaa/quit-after
Add `--quit-after <number-of-iterations>`
2023-04-26 11:35:52 +02:00
myaaaaaaaaa 03dafc7bc6 Add --quit-after <number-of-iterations> 2023-04-25 13:46:32 -04:00
Juan Linietsky a37c30dfc9 Fix thread IDs.
On Linux, thread IDs were not properly assigned with the current approach.
The line:
`std::thread new_thread(&Thread::callback, _thread_id_hash(thread.get_id()), p_settings, p_callback, p_user);`
does not work because the thread ID is not assigned until the thread starts.

This PR changes the behavior to use manually generated thread IDs. Additionally, if a thread is (or may have been created) outside Godot, the method `Thread::attach_external_thread` was added.
2023-04-24 15:13:58 +02:00
bruvzg 520a8d8ed2
Add project manager / editor initial screen settings, implement DisplayServer.get_keyboard_focus_screen method. 2023-04-19 08:54:53 +03:00
Pedro J. Estébanez f5602869da Cache classes editor help 2023-04-13 12:16:47 +02:00
Ron B. Yeh c8cbc67156 Rename `iconpath => icon_path` & `hasicon => has_icon`. 2023-04-04 17:05:37 -07:00
Yuri Sizov 3596443de1
Merge pull request #74727 from AThousandShips/project_settings
Exposing more project settings for documentation
2023-03-15 15:59:10 +01:00
Ninni Pipping bd30847e59 Exposing more project settings for documentation 2023-03-15 14:25:40 +01:00
Yuri Sizov c981a305a5
Merge pull request #73144 from chutchinson/bug/openxr-init-alert-dialog
Replaced OpenXR operating system alert dialog with a warning log message
2023-03-15 14:07:05 +01:00
Yuri Sizov 8402927d3f Prevent crashing on startup if project has scripted theme types
Also avoid order of operation conflicts by moving C# binding generation hook to main.cpp
2023-03-08 11:17:21 +01:00
Rémi Verschelde 0a9deaa440
Warn users when using non existing --export flag, replaced by --export-release
See #73782.
2023-02-22 22:20:57 +01:00
Hugo Locurcio aa386472e1
Mark Application Icon and V-Sync Mode project settings as basic
These settings are likely to be changed at some point in most projects.
2023-02-19 01:47:21 +01:00
Travis Veralrud 10be2c343f
iOS: Fix memory leak on touch input
Replace incomplete iOS gesture with touch implementation.

Fixes #66422.
2023-02-15 09:45:38 +01:00
Chris Hutchinson cb8e919243 Replaced operating system alert dialog with a warning log message,
toggled by a project setting.
Fixes #73141
2023-02-13 18:42:43 -05:00
Rémi Verschelde cb2e73d578
Merge pull request #73033 from akien-mga/gdscript-fix-gd4-renames-build
Clean up ProjectConverter3To4 architecture, move renames map to separate file
2023-02-11 22:05:38 +01:00
Rémi Verschelde e19e6b09b9
Clean up ProjectConverter3To4 architecture, move renames map to separate file
This allows properly limiting what features depend on the RegEx module
(doing the actual conversion) and what features only require the renames
data (GDScript suggestions).

Also better excludes the conversion command line options when actually
disabling deprecated code.

Fixes #73029.
2023-02-10 14:35:22 +01:00
Josh Jones f978d74fd0 Allow compiling out the navigation module 2023-02-09 23:04:16 -08:00
Rémi Verschelde c197b398c3
Fix build with `deprecated=no` not exclude ProjectConverter3To4 options
Fixes #72520.
2023-02-01 22:29:51 +01:00
Rémi Verschelde 1dfd236f15
Merge pull request #70377 from dsnopek/server-export-mk2
Add "dedicated server" export mode which can strip unneeded visual resources
2023-01-23 22:13:28 +01:00
David Snopek 74458b6e9b Add "dedicated server" export mode which can strip unneeded visual resources 2023-01-23 13:24:54 -06:00
bruvzg 15dafc49d3
[TextServer] Fix ICU data loading and exporting with `internationalization/locale/include_text_server_data` setting. 2023-01-23 21:13:32 +02:00
Hugo Locurcio 33e9dff3de
Mark touch emulation project settings as basic
These settings are likely to be toggled often during development,
so they should be as accessible as possible.
2023-01-23 10:07:47 +01:00
Rémi Verschelde cd031fd31a
Merge pull request #71663 from bruvzg/init_pos_x
Reorganize main and sub-window initial position properties.
2023-01-22 11:25:58 +01:00
Rémi Verschelde abad6ea55c
Merge pull request #68002 from dogboydog/csharp_build_exit_code
Exit editor with non-zero return code if --build-solutions fails
2023-01-21 11:31:58 +01:00
Rémi Verschelde f461a005bd
doc: Define dummy Mono settings to keep them in doctool
Revival of #54840.
2023-01-20 13:13:38 +01:00
bruvzg aade5abd4f
Reorganize main and sub-window initial position properties. 2023-01-19 13:44:06 +02:00
Rémi Verschelde cd0a9ccdfd
Merge pull request #71515 from akien-mga/disable-mangohud-editor
Force disable Vulkan overlays in the editor and project manager
2023-01-19 10:10:17 +01:00
bruvzg cb11bc9d6d [Windows] Fix main window project icon not set when using editor executable. 2023-01-19 09:50:01 +02:00
Rémi Verschelde 12817543a9
Force disable Vulkan overlays in the editor and project manager
MangoHud would be shown on every popup in multi-window mode, and seemed
to cause rendering issues for various users.

There are also issues with RTSS, and VkBasalt also doesn't seem
particularly good to use in the editor.

All these stay available to enable when running the project itself,
including running from the editor (so running the editor after e.g.
`export MANGOHUD=1` in the environment will ignore it for the editor,
but use it when playing the project).

Fixes #57403.
Fixes #57937.
2023-01-18 08:58:06 +01:00
Mikael Hermansson d10cd99613 Make physics servers `end_sync` on exit 2023-01-17 14:11:37 +01:00
Pawel Lampe dec0a3ed99 Fix 'Navigation Process' monitor initialization 2023-01-13 23:47:31 +01:00
Juan Linietsky 6f0e210093 Refactor ProjectSetting overrides
* Overrides no longer happen for set/get.
* They must be checked with a new function: `ProjectSettings::get_setting_with_override()`.
* GLOBAL_DEF/GLOBAL_GET updated to use this

This change solves many problems:
* General confusion about getting the actual or overriden setting.
* Feature tags available after settings are loaded were being ignored, they are now considered.
* Hacks required for the Project Settings editor to work.

Fixes #64100. Fixes #64014. Fixes #61908.
2023-01-13 15:13:56 +01:00
smix8 be9224eaa8 Fix duplicate NavigationServer process
NavigationServer process was called twice each frame
Also adds 3 missing MONITOR_TYPE entries.
2023-01-13 09:38:32 +01:00
Pedro J. Estébanez d0e37cd04c Add framework for avoidance of color flash in new windows 2023-01-12 21:42:51 +01:00
Rémi Verschelde a5dedfe260
Merge pull request #70731 from smix8/navigationserver_performance_monitor_4.x
Add NavigationServer Performance Monitor
2023-01-12 10:36:18 +01:00
Rémi Verschelde dce8cdbca8
Merge pull request #70863 from bruvzg/win_init_min
Set main window min. size via Window object instead of DisplayServer to preserve it during window updates.
2023-01-09 23:08:52 +01:00
smix8 9802914f97 Add NavigationServer Performance Monitor
Adds Performance Monitor for NavigationServer3D.
2023-01-08 22:58:21 +01:00
Josh Jones a0715b30f9 Rework const on NavigationServer methods
`const` is used on all methods, even when they cause modification of the server.  This reworks the methods of the server to only use `const` on method that don't change the state of the server.
2023-01-07 17:29:00 -08:00
bruvzg 2718a7b7d3
Add support for the custom initial screen for the main window, fix primary screen detection. 2023-01-07 11:14:35 +02:00
Rémi Verschelde 163f6f5fe8
Merge pull request #68429 from KoBeWi/PropertySettings
Add PropertyInfo overload for GLOBAL_DEF
2023-01-06 22:59:29 +01:00
Rémi Verschelde d95794ec8a
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".
2023-01-05 13:25:55 +01:00
bruvzg 06551dfa3a
Set main window min. size via Window object instead of DisplayServer to preserve it during window updates. 2023-01-03 09:25:45 +02:00
kleonc db48df3e6e Ensure MainLoop and its custom script is set right after it's resolved 2022-12-31 18:22:43 +01:00
Fredia Huya-Kouadio da8b468074 Add boot splash for the Godot Android Editor 2022-12-16 10:49:28 -08:00
Rémi Verschelde de5aaf1d13
CI: Fix dumping GDExtension interface and API for godot-cpp
Follow-up to https://github.com/godotengine/godot-cpp/pull/960.

Fix exit code for --dump-extension-api and --dump-gdextension-interface.

Removed the planned API validation step as we still didn't implement
anything, and maintaining a stub isn't useful.
2022-12-14 16:42:14 +01:00
Rémi Verschelde f1edd03d4c
Merge pull request #69718 from groud/finally_rename_gdnative_to_gdextension
Rename all gdnative occurences to gdextension
2022-12-12 11:43:59 +01:00
Gilles Roudière be1c9d677d Rename all gdnative occurences to gdextension
Non-exhaustive list of case-sensitive renames:

GDExtension -> GDNative
GDNATIVE -> GDEXTENSION
gdextension -> gdnative
ExtensionExtension ->Extension (for where there was GDNativeExtension)
EXTENSION_EXTENSION ->EXTENSION (for where there was GDNATIVE_EXTENSION)
gdnlib -> gdextension
gdn_interface -> gde_interface
gdni -> gde_interface
2022-12-12 11:04:57 +01:00
kobewi 7c6b659bd7 Add PropertyInfo overload for GLOBAL_DEF 2022-12-11 21:36:48 +01:00
Adam Scott eb901a50f9 Move navigation server finalize before physics server 2022-12-08 12:23:42 -05:00
Adam Scott 4a16b8630e Fix `ResourceLoader::thread_load_tasks` crash 2022-12-07 16:59:10 -05:00
Rémi Verschelde a565ddcd09
Merge pull request #69654 from BastiaanOlij/openxr_submit_depth_optional
Make submitting depth buffer in OpenXR optional
2022-12-07 13:25:42 +01:00
Markus Sauermann e18107a57c Fix Determining Window for Touchscreen
DisplayServer::screen_is_touchscreen will likely never utilize its
parameter p_screen.
This PR replaces this function by DisplayServer::is_touchscreen_available()
with the same functionality.
This solves the problem, that a SubViewport was used for determining
the screen, which resulted in error messages.
2022-12-07 09:54:29 +01:00
Bastiaan Olij 484cd90d29 Make submitting depth buffer in OpenXR optional 2022-12-06 22:37:33 +11:00
Rémi Verschelde 55da3c1631
Merge pull request #68660 from Calinou/improve-cli-help
Improve command line help to fit on narrower displays
2022-12-05 00:07:00 +01:00
Hugo Locurcio e6d8357685
Improve command line help to fit on narrower displays
- Update shell completions to reference recently added CLI arguments.
2022-12-04 19:36:28 +01:00
bruvzg ecec415988
Use system fonts as fallback and improve system font handling.
Add support for font weight and stretch selection when using system fonts.
Add function to get system fallback font from a font name, style, text, and language code.
Implement system font support for Android.
Use system fonts as a last resort fallback.
2022-12-04 18:44:20 +02:00
clayjohn 9141984e7e Enable GLES3 on Android
Add necessary build flags and switch from using a
GLES2 context to a GLES3 one.

This also enables building for OpenXR

Co-authored-by: m4gr3d <fhuyakou@gmail.com>
Co-authored-by: dsnopek <dsnopek@gmail.com>
2022-11-29 14:18:24 -08:00
Rémi Verschelde c392093668
Merge pull request #69272 from rune-scape/rune-avoid-global-base
Avoid using `get_global_class_native_base`
2022-11-28 11:02:43 +01:00
Rémi Verschelde 5eeb6e5906
Merge pull request #68532 from Calinou/cmdline-user-args-add-alternative-separator
Allow `++` as an alternative separator to `--` for user CLI arguments
2022-11-28 08:40:14 +01:00
rune-scape 847c9bd248 GDScript: Avoid using `get_global_class_native_base` 2022-11-27 03:55:53 -05:00
Rémi Verschelde c7ceb94e37
Merge pull request #69079 from adamscott/fix-singleton-scene-cyclic-load
Fix singleton scene cyclic loading
2022-11-25 19:29:57 +01:00
Adam Scott 69bb7e5b11 Fix singleton scene cyclic loading 2022-11-25 12:43:55 -05:00
Fabio Alessandrelli aa80cfac97 [Editor] Add button to keep the debug server open.
The setting is stored in the project editor metadata, and the server is
automatically started/stopped when the option change (only stopped if no
session is currently active).

The CLI option `--debug-server` now also forces the server to stay open
(without saving the state, unlike the menu option).

This commit also removes the "Keep debugger open" option in the script
editor "debug" menu. That option was really confusing, it used to hide
the bottom panel if and only if the debugger pane was selected, so if
you had your output log open instead (default when pressing play) it
would effectively do nothing. Having an option to save a click in such
a very specific case seems very overkill.
2022-11-25 11:02:55 +01:00
Rémi Verschelde a66fc4cf7e
Merge pull request #60686 from trollodel/move_editor_registration
Move editor class and plugin registrations to a dedicated file
2022-11-18 23:07:48 +01:00
trollodel 75177455d9 Move editor class and plugin registrations to a dedicated file 2022-11-18 08:02:08 +01:00
dzil123 772d11d340 Main::setup2 move print engine version to top 2022-11-16 07:05:00 -08:00
Rémi Verschelde 94e9860b82
Merge pull request #65836 from Calinou/add-max-physics-steps-per-frame-setting
Implement adjusting the maximum number of physics steps per rendered frame
2022-11-15 16:24:56 +01:00
Hugo Locurcio 914d3e1b1d
Allow `++` as an alternative separator to `--` for user CLI arguments
This is required when using `startx` to start a Godot project, as
`--` is used by `startx` for its own arguments (and there is no way
to escape it).
2022-11-11 23:23:58 +01:00
trollodel ba9e619b51 Use forward-declarations in EditorPlugin where possible 2022-11-11 20:25:51 +01:00
kobewi d9f066d5fa Remove duplicate project settings definitions 2022-11-08 01:29:39 +01:00
Rémi Verschelde e5950c5c1c
Merge pull request #60273 from Calinou/cli-export-release-rename
Rename `--export` command line argument to `--export-release`
2022-11-02 22:36:40 +01:00
Hugo Locurcio 6b0f7e9da9
Rename `--export` command line argument to `--export-release`
This makes the action of exporting to release mode more explicit.
2022-11-02 19:42:46 +01:00
Rémi Verschelde f7c611ab71
Style: Misc docs and comment style and language fixes
- Removed empty paragraphs in XML.
- Consistently use bold style for "Example:", on a new line.
- Fix usage of `[code]` when hyperlinks could be used (`[member]`, `[constant]`).
- Fix invalid usage of backticks for inline code in BBCode.
- Fix some American/British English spelling inconsistencies.
- Other minor fixes spotted along the way, including typo fixes with codespell.
- Don't specify `@GlobalScope` for `enum` and `constant`.
2022-11-02 19:01:18 +01:00
Rémi Verschelde 093dea21e0
Merge pull request #67593 from clayjohn/GLES3-pm
Default to Opengl3 driver when using the project manager
2022-11-02 17:12:47 +01:00
Rémi Verschelde 2bd9a6fe8d
Merge pull request #68044 from ztc0611/ios-promotion
Add ProMotion/High Refresh Rate Support to iOS Exports
2022-10-31 23:03:30 +01:00
Zach Coleman 601c42be66 Add ProMotion Support to iOS Exports 2022-10-31 09:33:39 -04:00
Rémi Verschelde 9188bc7341
Merge pull request #67879 from bruvzg/fix_no_vlk
Fix build with Vulkan disabled and no Vulkan headers installed.
2022-10-31 14:29:05 +01:00
Rémi Verschelde 5947f22be9
Merge pull request #67578 from KoBeWi/GEDITOR
Unify usage of GLOBAL/EDITOR_GET
2022-10-31 13:15:58 +01:00
Rémi Verschelde 6946bc56ef
Merge pull request #67309 from groud/implement_gdnative_interface_h_dump
Implement a way to dump the gdnative_interface.h file from the executable
2022-10-31 11:54:38 +01:00
dogboydog 16b35b59d1 set exit code EXIT_FAILURE when --build-solutions fails 2022-10-29 00:37:47 -04:00
bruvzg 4dd8f68120
Fix build with Vulkan disabled and no Vulkan headers installed. 2022-10-26 08:55:05 +03:00
Wei Guo d7e39e313b Make window creation with custom position do not flash 2022-10-24 13:50:25 +08:00
clayjohn 150d3656db Default to Opengl3 driver when using the project manager
This only applies when starting the project manager without command line args
2022-10-18 10:42:54 -07:00
kobewi e48c5daddf Unify usage of GLOBAL/EDITOR_GET 2022-10-18 19:01:48 +02:00
Rémi Verschelde 235c5c60f8 Merge pull request #67322 from ztc0611/add-ios-ui-options
Add iOS UI Options
2022-10-17 17:30:55 +02:00
kobewi 072f6feaba Make some Image methods static 2022-10-14 14:34:15 +02:00