summaryrefslogtreecommitdiff
path: root/modules/navigation
AgeCommit message (Collapse)Author
2022-10-13Optimize Convex CollisionJuan Linietsky
Implements the Gauss Mapping optimization to SAT convex collision test. * Described [here](https://ubm-twvideo01.s3.amazonaws.com/o1/vault/gdc2013/slides/822403Gregorius_Dirk_TheSeparatingAxisTest.pdf) by Dirk Gregorius. * Requires adding of face information to edges in MeshData * Took the chance to convert MeshData to LocalVector for performance.
2022-10-02Fix crash in navigation 3d when target is not reachableSean
The code that resets variables to retry navigation to the closest possible poly was not resetting 1 variable, which caused it to exceed the vector bounds
2022-09-30Merge pull request #66242 from akien-mga/scons-unify-tools-targetRémi Verschelde
2022-09-28Fix heap-use-after-free in `NavMap::get_path()`Haoyu Qiu
2022-09-26SCons: Unify tools/target build type configurationRémi Verschelde
Implements https://github.com/godotengine/godot-proposals/issues/3371. New `target` presets ==================== The `tools` option is removed and `target` changes to use three new presets, which match the builds users are familiar with. These targets control the default optimization level and enable editor-specific and debugging code: - `editor`: Replaces `tools=yes target=release_debug`. * Defines: `TOOLS_ENABLED`, `DEBUG_ENABLED`, `-O2`/`/O2` - `template_debug`: Replaces `tools=no target=release_debug`. * Defines: `DEBUG_ENABLED`, `-O2`/`/O2` - `template_release`: Replaces `tools=no target=release`. * Defines: `-O3`/`/O2` New `dev_build` option ====================== The previous `target=debug` is now replaced by a separate `dev_build=yes` option, which can be used in combination with either of the three targets, and changes the following: - `dev_build`: Defines `DEV_ENABLED`, disables optimization (`-O0`/`/0d`), enables generating debug symbols, does not define `NDEBUG` so `assert()` works in thirdparty libraries, adds a `.dev` suffix to the binary name. Note: Unlike previously, `dev_build` defaults to off so that users who compile Godot from source get an optimized and small build by default. Engine contributors should now set `dev_build=yes` in their build scripts or IDE configuration manually. Changed binary names ==================== The name of generated binaries and object files are changed too, to follow this format: `godot.<platform>.<target>[.dev][.double].<arch>[.<extra_suffix>][.<ext>]` For example: - `godot.linuxbsd.editor.dev.arm64` - `godot.windows.template_release.double.x86_64.mono.exe` Be sure to update your links/scripts/IDE config accordingly. More flexible `optimize` and `debug_symbols` options ==================================================== The optimization level and whether to generate debug symbols can be further specified with the `optimize` and `debug_symbols` options. So the default values listed above for the various `target` and `dev_build` combinations are indicative and can be replaced when compiling, e.g.: `scons p=linuxbsd target=template_debug dev_build=yes optimize=debug` will make a "debug" export template with dev-only code enabled, `-Og` optimization level for GCC/Clang, and debug symbols. Perfect for debugging complex crashes at runtime in an exported project.
2022-09-21Merge pull request #62429 from smix8/navigation_path_query_4.xRémi Verschelde
Add NavigationPathQuery objects and NavigationServer query_path()
2022-09-20Add NavigationPathQuerysmix8
Adds NavigationPathQueryParameters objects that can be used with NavigationServer.query_path() to query a customized navigation path.
2022-09-14Exclude disabled CollisionShapes from Navigationmesh bakingsmix8
Excludes disabled CollisionShapes from the geometry parsing for the NavigationMesh baking.
2022-09-07Rename EditorInterface.get_editor_main_control to get_editor_main_screenYuri Sizov
2022-09-04Replace AABB has_no_volume with has_volumeAaron Franke
Also replace has_no_surface with has_surface
2022-09-01Merge pull request #63479 from DarkKilauea/nav-linkRémi Verschelde
2022-08-26Added node for Navigation linksJosh Jones
2022-08-27Rename `hint_tooltip` to `tooltip_text` & setgetMicky
`hint_tooltip` -> `tooltip_text` `set_tooltip` -> `set_tooltip_text` `_get_tooltip` -> `get_tooltip_text` Updates documentation, too.
2022-08-25Merge pull request #64354 from Mickeon/rename-navigation-distanceRémi Verschelde
2022-08-23Replace Array return types with TypedArray 2kobewi
2022-08-13Rename Navigation's `neighbor_dist` to `neightbor_distance`Micky
NavigationAgent2D/3D.`neighbor_dist` -> `neighbor_distance` (also affects setters and getters) NavigationServer2D/3D.`agent_set_neighbor_dist()` -> `agent_set_neighbor_distance()` Also changes their parameters' names. Doesn't affect "Agent.neighborDist_" in Agent.h
2022-08-05Add NavigationMesh baking for HeightMapShapesmix8
Adds HeightMapShape for StaticColliders and GridMap to the NavigationMeshGenerator for baking NavigationMesh.
2022-07-28Replace Navigation std::vector use with LocalVectorsmix8
Replace Navigation std::vector use with LocalVector.
2022-07-25Remove ThreadWorkPool, replace by WorkerThreadPoolJuan Linietsky
The former needs to be allocated once per usage. The later is shared for all threads, which is more efficient. It can also be better debugged.
2022-06-24Merge pull request #62300 from smix8/navigation_map_force_update_4.xRémi Verschelde
2022-06-23Add NavigationServer.region_owns_point() helper functionsmix8
Adds a helper function to check if a world space position is currently owned by a navigation region.
2022-06-23Add NavigationServer map_force_update() functionsmix8
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.
2022-06-23Merge pull request #62312 from smix8/navigation_get_maps_4.xRémi Verschelde
2022-06-23Merge pull request #62293 from smix8/navigation_disable_editorprogress_bake_4.xRémi Verschelde
2022-06-23Implement NavigationMesh bake areasmix8
Adds two new properties to NavigationMesh resources to restrict the navmesh baking to an area enclosed by an AABB with volume.
2022-06-22Add Navigation function to get all navigation mapssmix8
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.
2022-06-22Disable thread-unsafe EditorProgress for navmesh bakingsmix8
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.
2022-06-16Print NavMap error only once for invalid NavMesh.K. S. Ernest (iFire) Lee
2022-06-15Streamline Navigation layer function names.smix8
Streamline Navigation layer function names.
2022-06-14Fix crash of navigation agents callback when object is invalidsmix8
Fix crash of navigation agents callback when object is invalid.
2022-06-08Merge pull request #61682 from smix8/navigation_bake_config_precision_4.xRémi Verschelde
2022-06-08Merge pull request #61739 from smix8/navigation_region_cost_4.xRémi Verschelde
2022-06-06Add NavigationRegion costs for pathfindingsmix8
Add NavigationRegion costs for pathfinding.
2022-06-04Add warnings when NavigationMesh bake settings result in precision losssmix8
Add warnings when NavigationMesh bake settings result in precision loss.
2022-06-03Match NavMap and ProjectSettings with NavigationMesh defaultssmix8
Match NavMap and ProjectSettings with NavigationMesh defaults since the NavMap edge merging requires a matching cell_size with the NavigationMesh to create connections without issues.
2022-05-27Fix MultiMeshInstance crash in navmesh baking when MultiMesh Resource is emptysmix8
Fix MultiMeshInstance crash in navmesh baking when MultiMesh Resource is empty
2022-05-19Merge pull request #61128 from smix8/navigation_agent_process_mode_4.xRémi Verschelde
2022-05-18rvo2: Sync with upstream commit bfc0486Rémi Verschelde
https://github.com/snape/RVO2-3D/commit/bfc048670a4e85066e86a1f923d8ea92e3add3b2
2022-05-17Make Navigation Agents and Obstacles respect parent process modesmix8
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.
2022-05-16Merge pull request #61061 from smix8/navigation_mesh_sample_distance_range_4.xRémi Verschelde
2022-05-16Clamp NavigationMesh sample_distance above zerosmix8
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.
2022-05-16Merge pull request #60958 from smix8/navigation_server_rid_utility_4.xRémi Verschelde
2022-05-16Replace most uses of Map by HashMapreduz
* 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-12Add NavigationServer2D/3D API functions to find missing RID infosmix8
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.
2022-05-11Add Warning to NavigationMesh bake when source geometry is suspiciously bigsmix8
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.
2022-05-04Refactor module initializationreduz
* Changed to use the same stages as extensions. * Makes the initialization more coherent, helping solve problems due to lack of stages. * Makes it easier to port between module and extension. * removed the DRIVER initialization level (no longer needed).
2022-05-02Use CollisionObject3D API when baking the navmesh with static colliders, ↵trollodel
instead of collecting CollisionShape3D nodes
2022-04-27Merge pull request #59979 from bruvzg/cpp_check2Rémi Verschelde
2022-04-26Create NavMap thread pool only when it's used, to prevent creating excessive ↵bruvzg
amount of running threads.
2022-04-26Merge pull request #60359 from adamscott/nav-map-thread-work-poolRémi Verschelde