-
-
Notifications
You must be signed in to change notification settings - Fork 21.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Move navigation mesh baking to NavigationServer #79643
Conversation
EDIT |
d83dd69
to
c8ed3be
Compare
ebecc01
to
17f4528
Compare
Made the node parsers more readable by splitting them into their own functions. Now the Editor NavigationMeshEditor (should be renamed NavigationRegion3DEditor because that is what it is) uses the same function as the NavigationRegion3D for consistent bake behavior. Changed that the NavigationRegion3D did entire NavigationMesh resource duplicates for each bake. This not only drained performance on large meshes but also made the bake behavior different in the Editor as compared to baking at runtime. For the future duplicating the resource all the time would also make the resource RID change / invalid all the time as soon as instances get added so it needs to change anyway at some point. |
ed05ae7
to
83fc909
Compare
Added a fix for the CSGShape3D collision and changed some functions due to changes in a subsequent pr. |
fa3f409
to
65f4684
Compare
Moves navigation mesh baking to NavigationServer.
Thanks! |
Moves navigation mesh baking to NavigationServer.
NavigationMesh
parsing and baking fromNavigationMeshGenerator
toNavigationServer3D
.NavigationMeshGenerator
singleton.Fixes #79843.
Requires #79157 to be merged first as a substitute for
NavigationMeshGenerator.clear()
.The other public functions from the NavigationMeshGenerator can already be found on the NavigationServer3D since Godot 4.1 and #77412.
Updating the NavigationMeshGenerator for further developments is not feasible as the NavigationServer needs to be in full control of the navigation mesh baking process going forward. E.g. for internal threading support or the change to a navmesh instance system as part of the server, or better agent sizes support. The old NavigationMeshGenerator also had nothing but problems from init chain to extendibility and required workarounds and extra functions like #79137.