This is a backport from 4.0 to 3.x that adds 'sort' and 'has' methods
to the following types:
- PoolByteArray
- PoolIntArray
- PoolRealArray
- PoolStringArray
- PoolVector2Array
- PoolVector3Array
- PoolColorArray
For all the types above, the methods 'sort' and 'has' have been
exposed to the GDNative API (v. 1.3)
Since the method 'has' was already implemented in GDScript before,
in this commit it has been only exposed to GDNative API.
The classes documentation is updated.
The method 'sort' uses the exisging class "Sorter".
Pooled arrays in 4.0 are rewritten, that's why this backport is not
completely indentical to the original PR made for 4.0 (see #32144).
Input accumulation was implemented and enabled by default in 3.1, and
I don't recall major complaints around it (or bugs were fixed).
In 3.4, #42220 added input buffering and apparently toggled input
accumulation off by mistake.
This led to multiple bug reports about degraded performance on Windows,
or simply unexpected behavior change (see linked issues in #55037).
Fixes#55037.
This was actually disabled by mistake in 3.4 causing a regression, but since
this issue survived the whole 3.4.x series and it's now very close to 3.5,
it's too late to change it again.
We might consider it for 3.6 after some beta testing.
Fixes#55037.
Recast (the library used for baking) has no concept of a geometry "inside" and this is intentional. ReCast will add navigation mesh to areas as soon as the area inside a source geometry mesh is large enough to fit a navigation mesh polygon with current baking parameters.
(cherry picked from commit 85cdb1144d)
Adds map_force_update() function to NavigationServer. This function immediately flushes the Navigationserver command queue and recalculates all navigationmeshes and region connections for a specific map.
(cherry picked from commit fdea269805)
Added new function that returns all created navigation map RIDs from the NavigationServer. The function returns both 2D and 3D created navigation maps as technically there is no distinction between them.
(cherry picked from commit c0fed1d4e8)
Adds two new properties to NavigationMesh resources to restrict the navmesh baking to an area enclosed by an AABB with volume.
(cherry picked from commit 0c4d99f4fd)
Mark Navigation/Navigation2D nodes as deprecated. They already just redirect calls to the NavigationServer and have no longer a real purpose. In Godot 4.0 both nodes are already removed for good reasons.
The name was confusing as this signal is emitted around the same time as
`tree_exiting` and `NOTIFICATION_EXIT_TREE`, i.e. while the child node is
still in tree.
Fixes#59210.
(cherry picked from commit 3e6de687b8)
Having a mix of settings with and without subcategory makes the 'Editor'
section stand out with a weird UX, as instead of simply being a foldable
section like the others, it also holds its own top-level settings and is
therefore selectable.
This wasn't the case in 3.4, and is fixed in 4.0 by refactoring, so for
3.5 we should preserve the 3.4 UX, even if it's not the best.
When an exported project crashes, the crash handler message
shouldn't reference the Godot issue tracker, as not all crashes
are Godot's fault.
Reporting crashes that only occur on exported projects is still allowed,
but it should not be done by people who aren't working on the project
in question.
(cherry picked from commit c850ccb7c0)
Backports features and bugfixes from current Godot 4.0 to 3.5 and brings functions and codebase of both version largely in sync to make tutorials more compatible and future backports easier.
This reduces stuttering when a material is displayed for the first
time, and prevents stuttering from occurring entirely after the
project is restarted when a similar situation is encountered.
Change "all tweens are removed" to "all tweens are reset". Possibly this snippet was copy-pasted from the "remove" method description and not updated for "reset".
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.
(cherry picked from commit 3ff6d794c0)
Changes NavigationAgent avoidance callback to a toggle that is disabled by default.
Also fixes a few missing descriptions / wrong warnings.
(cherry picked from commit 7f3688603c)
Lowers or removes the slider limits and steps from NavigationMesh resources and changes some default values to better work with realistic unit sizes by default.
(cherry picked from commit cda93057f7)
- Allow OptionButton selection to be set to -1 to signify no selection, both via API and in the editor.
- Reset OptionButton selection to -1 when the selected item has been removed.
- Fully convert PopupMenu to a zero-based ID system, which improves an inconsistency in generated IDs when making new items in the editor.
(cherry picked from commit 3b146c5eaa)
Utility functions for NavigationServer2D/3D to find missing RID information when working with Server API directly. e.g. from map to regions and agents, from agent or region to map, from region to map and agents and so on ....
Requirement to work with NavigationServer API exklusive without SceneTree nodes and when juggling agents and regions between multiple navigation maps.
(cherry picked from commit 371054e3e5)
Exposes get_rid() function for scripting.
Adds configuration warning when obstacle is used with not intended static body parent.
(cherry picked from commit 001d89223f)
Expand on the format of the output array for collide_and_get_contacts and collide_with_motion_and_get_contacts, and describe how the contact point pairs can be used to calculate collision normals and depths.
(cherry picked from commit bdf086c781)
When converting doc xml files to rst, add an indenation level to bullet points in the text description of enum values.
Also add check to avoid out of bounds error in rstize_text.
(cherry picked from commit 38cf07b768)
Exposes the "interpolated" flag on nodes via a property, physics_interpolation_mode.
Mode can be INHERIT, OFF and ON. This makes it easy to turn off interpolation for nodes in the editor, versus via code.
Allow AStar/AStar2D zero point weight.
Limit was set to 1 which seemed like an arbitrary value as lower values down to zero can be useful for common gameplay navigation elements like teleports.
Adds the is_process_running function to the native OS class and exposes it to script.
This is implemented on Windows and Unix platforms. A stub is provided for other platforms that do not support this function.
Documentation is updated to reflect new API function.
(cherry picked from commit f3c1232c59)
Users happening across any of the Container pages may not already know the intent of Containers, or which others are available. This commit adds a link to the existing "GUI containers" page in their tutorials sections.
(cherry picked from commit 3b941ed98c)
This feature makes it possible to workaround problems such as:
- long baking time due to heavy synchronization when parsing geometry
from mesh instances
- crash when freeing `NavigationMeshInstance` while baking
- errors when actively baking node tree is being detached from the
scene tree