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).
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)
Disables navmesh baking EditorProgress for now until fixed as EditorProgress is not thread-safe and uses hacks and Main::iteration() for steps which can result in random crashes when baking navmesh.
(cherry picked from commit 24bb0af4a9)
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)
Implement a special case for allowing "pass" keyword in one-liner class
declaration, to be consistent with Python style.
```
class TestClass: pass
```
This commit fixes#56703
The define is **not used by godot**, but in GDNative libraries.
I'm not sure it should be defined there in the first place, though we
shouldn't change that (for compatibility).
This commit changes the platform detection order to detect mingw
compiling for windows (which defines `__GNUC__`).
This commit also wraps the definition around a guard to let libraries
override it with a build-time define.
* GDScriptLanguage::complete_code already adds parentheses to function calls, and does this a lot smarter than the language server right now.
* Instead of the previous naive approach we now reuse the same logic as the internal editor.
* For this to have any effect we also have to send the `insertText` field already during the completionRequest and not only during resolve.
(cherry picked from commit bbb07ff8cb)
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.
The class PoolStringArray in GDScript has `join` method, and it even has documentation.
However, the corresponding definition of this method in GDNative headers were missing.
In this commit, the missing GDNative definition of `join` method has been added.
A new CORE API version 1.3 has been added with the new metod `join`.
Temporarily removes agent from navigation map when parent node cannot process due to SceneTree pause and process_mode property. Normal process_mode does not work as other agents would still avoid the paused agents because they were still active on the navigation map and the rvo world. Also fixes potential crash when region_get_map or agent_get_map is called while no map is set.
(cherry picked from commit 6b51ab66d8)
* Replace case-by-case extraction with PNAME & GNAME
* Fix group handling when group hint begins with property name
* Exclude properties that are PROPERTY_USAGE_NOEDITOR
While default ReCast library has support for 0.0 'sample_distance' the Godot implementation does not an crashes.
Previously Godot would set all sample_distance values below 0.9 to 0 which causes the crashes.
This limits the sample_distance range selection to 0.1 - 16.0 and also clamps sample_distance that are below 0.1 before ReCast receives them.
(cherry picked from commit e33fa9d833)
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)
Rewrites the definition of how the function works.
Reworks the style of the examples and adds a negative range example.
Changes the while loop to a range loop in the array backwards example.
(cherry picked from commit b2841ce194)
Adds Warning when users try to bake a NavigationMesh with suspiciously big source geometry and small cellsizes as this baking process will likely fail or result in a NavigationMesh that will create serious pathfinding performance issues.
(cherry picked from commit 79511af7c9)
Gridmaps did not previously show at all when portals were active, due to the instances being created defaulting to static mode, and not being converted during the room conversion stage.
This PR sets gridmap instances to global mode, which enables them to show up when portals are active (using frustum culling only, no occlusion).
When double-clicking on a function name the graph will now correctly jump to the function relative to the zoom ratio.
(cherry picked from commit e8a326a08f)
- improved mesh data calculation from standalone static colliders so that no
VisualServer calls are performed - and thus no VS mutexes need to
be locked in case of on-thread baking
- improved the same for GridMap's static colliders
- Add support for explicit values in properties using `PROPERTY_HINT_FLAGS`
that works the same way it does for enums.
- Fix enums and flags in VisualScriptEditor (it wasn't considering the
explicit value).
- Use `PROPERTY_HINT_FLAGS` for C# enums with the FlagsAttribute instead
of `PROPERTY_HINT_ENUM`.
This makes it easier to spot syntax errors when editing the
class reference. The schema is referenced locally so validation
can still work offline.
Each class XML's schema conformance is also checked on GitHub Actions.
It was due to main_shape_changed being called two times for each
added body. The first time it disables ccd, which sets the internal ccd
threshold to be 10000. The second time, it enables ccd again because
the internal threshold is > 0.
Bodies are now consistently set with a ccd threshold of 0 when ccd is
disabled.
This was causing crashing asserts in Bullet when adding bodies in some
scenarios, in btVector3::normalize():
btAssert(!fuzzyZero());
These crashes will still happen with ccd enabled.
(cherry picked from commit faca8b77aa)
This ensures the project setting never disappears from the editor,
even if the current physics engine is GodotPhysics.
This also adds documentation for the Smooth Trimesh Collision
project setting.
This behavior is inconsistent with non tools builds and can create
issues. Instead, a warning is emitted if there's a type mismatch. If the
type can't be converted, an error is shown instead.
For the editor it gives a converted value to avoid issues with the
property editor, which expects the correct type.
Instead of fitting all atlas slices into a single image, which meant there
was a hard limit on the size, BakedLightmap will now save as many images
as needed to fit all the slices generated by the lightmapper.
Using codespell 2.2-dev from current git.
Added `misc/scripts/codespell.sh` to make it easier to run it once in a
while and update the skip and ignore lists.
(cherry picked from commit 1bdb82c64e)
Hostname is now resolved during poll in WebSocketClient (wslay) to avoid
blocking during connect.
An attempt is still made to find the hostname in the resolver cache.
(cherry picked from commit 1ec96bc206)
This lets us have its definition in `core/version.h` and avoid
rebuilding a handful of files every time the commit hash changes.
(cherry picked from commit 90162851a7)
fixes#57231, fixes#57421
Within the context of parsing navigation geometry, this commit:
- added missing transform of `MultiMeshInstance`
- changed all transforms to global ones so that they don't need to be
calculated by hand
By default, when installing from Android App Bundles the native
libraries are not extracted. They are loaded directly from the APK.
See: https://stackoverflow.com/a/56551499
Passing only the file name to dlopen, without the location, makes it
search the native library in all locations, including inside the apk.
A common source of errors is to call functions (such as round()) expecting them to work in place, but them actually being designed only to return the processed value. Not using the return value in this case in indicative of a bug, and can be flagged as a warning by using the [[nodiscard]] attribute.