Merge pull request #105765 from smix8/navlink_iteration_id

Add function to get navigation link iteration id from NavigationServer
This commit is contained in:
Thaddeus Crews 2025-05-06 08:38:00 -05:00
commit c4de8ef825
No known key found for this signature in database
GPG key ID: 8C6E5FEB5FC03CCC
16 changed files with 54 additions and 0 deletions

View file

@ -613,6 +613,13 @@ RID GodotNavigationServer3D::link_create() {
return rid;
}
uint32_t GodotNavigationServer3D::link_get_iteration_id(RID p_link) const {
NavLink3D *link = link_owner.get_or_null(p_link);
ERR_FAIL_NULL_V(link, 0);
return link->get_iteration_id();
}
COMMAND_2(link_set_map, RID, p_link, RID, p_map) {
NavLink3D *link = link_owner.get_or_null(p_link);
ERR_FAIL_NULL(link);

View file

@ -185,6 +185,7 @@ public:
virtual AABB region_get_bounds(RID p_region) const override;
virtual RID link_create() override;
virtual uint32_t link_get_iteration_id(RID p_link) const override;
COMMAND_2(link_set_map, RID, p_link, RID, p_map);
virtual RID link_get_map(RID p_link) const override;
COMMAND_2(link_set_enabled, RID, p_link, bool, p_enabled);

View file

@ -141,6 +141,10 @@ bool NavLink3D::is_dirty() const {
}
void NavLink3D::sync() {
if (link_dirty) {
iteration_id = iteration_id % UINT32_MAX + 1;
}
link_dirty = false;
}

View file

@ -57,10 +57,14 @@ class NavLink3D : public NavBase3D {
SelfList<NavLink3D> sync_dirty_request_list_element;
uint32_t iteration_id = 0;
public:
NavLink3D();
~NavLink3D();
uint32_t get_iteration_id() const { return iteration_id; }
void set_map(NavMap3D *p_map);
NavMap3D *get_map() const {
return map;