Nav3D keeps a single global navigation octree (the obstacle storage) that holds the navigation graph of all obstacles in the scene. It is used during pathfinding.
All operations with obstacles (adding or removing) are placed in an execution queue and performed sequentially on a background thread.
Each operation is built off the live octree and published in a single atomic swap, so an in-progress pathfinding query never observes a half-updated graph.
Obstacle processing means collecting the obstacle geometry, clustering nearby triangles, building the passability (navigation) graph for the affected region of the octree, and publishing it into the global octree.