From 8b18898609882e410eed3c4550a95aec680482dc Mon Sep 17 00:00:00 2001 From: Relintai Date: Fri, 9 Jun 2023 22:03:42 +0200 Subject: [PATCH] Backported from godot4: Rework const on NavigationServer methods `const` is used on all methods, even when they cause modification of the server. This reworks the methods of the server to only use `const` on method that don't change the state of the server. - DarkKilauea https://github.com/godotengine/godot/commit/a0715b30f94430078422ff05d81b9cfa85ddb4ce --- doc/classes/Navigation2DServer.xml | 70 ++++----- doc/classes/NavigationServer.xml | 74 +++++----- editor/editor_node.cpp | 20 +-- main/main.cpp | 4 +- .../pandemonium_navigation_2d_server.cpp | 98 +++++++------ .../pandemonium_navigation_2d_server.h | 72 +++++----- .../pandemonium_navigation_server.cpp | 133 ++++++++---------- .../pandemonium_navigation_server.h | 28 ++-- .../dummy_navigation_2d_server.cpp | 4 +- .../dummy_navigation_2d_server.h | 72 +++++----- .../dummy_navigation_server.cpp | 2 +- .../dummy_navigation_server.h | 76 +++++----- scene/2d/navigation_agent_2d.cpp | 4 +- scene/2d/navigation_polygon_instance.cpp | 10 +- scene/3d/navigation_agent.cpp | 8 +- scene/3d/navigation_link_3d.cpp | 8 +- scene/3d/navigation_mesh_instance.cpp | 28 ++-- scene/resources/navigation_mesh.cpp | 4 +- scene/resources/world_2d.cpp | 2 +- scene/resources/world_3d.cpp | 2 +- servers/navigation_2d_server.cpp | 30 ++-- servers/navigation_2d_server.h | 78 +++++----- servers/navigation_server.cpp | 6 +- servers/navigation_server.h | 82 +++++------ servers/register_server_types.cpp | 4 +- 25 files changed, 445 insertions(+), 474 deletions(-) diff --git a/doc/classes/Navigation2DServer.xml b/doc/classes/Navigation2DServer.xml index 07401b1a9..837fcf24d 100644 --- a/doc/classes/Navigation2DServer.xml +++ b/doc/classes/Navigation2DServer.xml @@ -17,7 +17,7 @@ https://godotengine.org/asset-library/asset/117 - + Creates the agent. @@ -37,7 +37,7 @@ Returns [code]true[/code] if the map got changed the previous frame. - + @@ -48,7 +48,7 @@ [b]Note:[/b] Created callbacks are always processed independently of the SceneTree state as long as the agent is on a navigation map and not freed. To disable the dispatch of a callback from an agent use [method agent_set_callback] again with a [code]0[/code] ObjectID as the [code]object_id[/code]. - + @@ -56,7 +56,7 @@ Puts the agent in the map. - + @@ -64,7 +64,7 @@ Sets the maximum number of other agents the agent takes into account in the navigation. The larger this number, the longer the running time of the simulation. If the number is too low, the simulation will not be safe. - + @@ -72,7 +72,7 @@ Sets the maximum speed of the agent. Must be positive. - + @@ -80,7 +80,7 @@ Sets the maximum distance to other agents this agent takes into account in the navigation. The larger this number, the longer the running time of the simulation. If the number is too low, the simulation will not be safe. - + @@ -88,7 +88,7 @@ Sets the position of the agent in world space. - + @@ -96,7 +96,7 @@ Sets the radius of the agent. - + @@ -104,7 +104,7 @@ Sets the new target velocity. - + @@ -112,7 +112,7 @@ The minimal amount of time for which the agent's velocities that are computed by the simulation are safe with respect to other agents. The larger this number, the sooner this agent will respond to the presence of other agents, but the less freedom this agent has in choosing its velocities. Must be positive. - + @@ -120,7 +120,7 @@ Sets the current velocity of the agent. - + @@ -139,7 +139,7 @@ Returns all created navigation map [RID]s on the NavigationServer. This returns both 2D and 3D created navigation maps as there is technically no distinction between them. - + Create a new link between two positions on a map. @@ -201,7 +201,7 @@ Returns whether this [code]link[/code] can be travelled in both directions. - + @@ -209,7 +209,7 @@ Sets whether this [code]link[/code] can be travelled in both directions. - + @@ -217,7 +217,7 @@ Sets the exit position for the [code]link[/code]. - + @@ -225,7 +225,7 @@ Sets the [code]enter_cost[/code] for this [code]link[/code]. - + @@ -233,7 +233,7 @@ Sets the navigation map [RID] for the link. - + @@ -241,7 +241,7 @@ Set the links's navigation layers. This allows selecting links from a path request (when using [method NavigationServer2D.map_get_path]). - + @@ -249,7 +249,7 @@ Set the [code]ObjectID[/code] of the object which manages this link. - + @@ -257,7 +257,7 @@ Sets the entry position for this [code]link[/code]. - + @@ -265,7 +265,7 @@ Sets the [code]travel_cost[/code] for this [code]link[/code]. - + Create a new map. @@ -371,7 +371,7 @@ Returns [code]true[/code] if the map is active. - + @@ -379,7 +379,7 @@ Sets the map active. - + @@ -387,7 +387,7 @@ Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/b] Currently not implemented. - + @@ -395,7 +395,7 @@ Set the map cell size used to weld the navigation mesh polygons. - + @@ -411,7 +411,7 @@ Queries a path in a given navigation map. Start and target position and other parameters are defined through [NavigationPathQueryParameters2D]. Updates the provided [NavigationPathQueryResult2D] result object with the path among other results requested by the query. - + @@ -427,7 +427,7 @@ Set the navigation [param map] edge connection use. If [param enabled] the navigation map allows navigation regions to use edge connections to connect with other navigation regions within proximity of the navigation map edge connection margin. - + Creates a new region. @@ -508,7 +508,7 @@ [b]Note:[/b] If navigation meshes from different navigation regions overlap (which should be avoided in general) the result might not be what is expected. - + @@ -516,7 +516,7 @@ Sets the [code]enter_cost[/code] for this [code]region[/code]. - + @@ -524,7 +524,7 @@ Sets the map for the region. - + @@ -532,7 +532,7 @@ Set the region's navigation layers. This allows selecting regions from a path request (when using [method Navigation2DServer.map_get_path]). - + @@ -540,7 +540,7 @@ Sets the navigation mesh for the region. - + @@ -548,7 +548,7 @@ Set the [code]ObjectID[/code] of the object which manages this region. - + @@ -556,7 +556,7 @@ Sets the global transformation for the region. - + diff --git a/doc/classes/NavigationServer.xml b/doc/classes/NavigationServer.xml index 389326c82..f3270a379 100644 --- a/doc/classes/NavigationServer.xml +++ b/doc/classes/NavigationServer.xml @@ -17,7 +17,7 @@ https://godotengine.org/asset-library/asset/124 - + Creates the agent. @@ -37,7 +37,7 @@ Returns [code]true[/code] if the map got changed the previous frame. - + @@ -48,7 +48,7 @@ [b]Note:[/b] Created callbacks are always processed independently of the SceneTree state as long as the agent is on a navigation map and not freed. To disable the dispatch of a callback from an agent use [method agent_set_callback] again with a [code]0[/code] ObjectID as the [code]object_id[/code]. - + @@ -56,7 +56,7 @@ Puts the agent in the map. - + @@ -64,7 +64,7 @@ Sets the maximum number of other agents the agent takes into account in the navigation. The larger this number, the longer the running time of the simulation. If the number is too low, the simulation will not be safe. - + @@ -72,7 +72,7 @@ Sets the maximum speed of the agent. Must be positive. - + @@ -80,7 +80,7 @@ Sets the maximum distance to other agents this agent takes into account in the navigation. The larger this number, the longer the running time of the simulation. If the number is too low, the simulation will not be safe. - + @@ -88,7 +88,7 @@ Sets the position of the agent in world space. - + @@ -96,7 +96,7 @@ Sets the radius of the agent. - + @@ -104,7 +104,7 @@ Sets the new target velocity. - + @@ -112,7 +112,7 @@ The minimal amount of time for which the agent's velocities that are computed by the simulation are safe with respect to other agents. The larger this number, the sooner this agent will respond to the presence of other agents, but the less freedom this agent has in choosing its velocities. Must be positive. - + @@ -120,7 +120,7 @@ Sets the current velocity of the agent. - + @@ -147,7 +147,7 @@ Returns information about the current state of the NavigationServer. See [enum ProcessInfo] for a list of available states. - + Create a new link between two positions on a map. @@ -209,7 +209,7 @@ Returns whether this [code]link[/code] can be travelled in both directions. - + @@ -217,7 +217,7 @@ Sets whether this [code]link[/code] can be travelled in both directions. - + @@ -225,7 +225,7 @@ Sets the exit position for the [code]link[/code]. - + @@ -233,7 +233,7 @@ Sets the [code]enter_cost[/code] for this [code]link[/code]. - + @@ -241,7 +241,7 @@ Sets the navigation map [RID] for the link. - + @@ -249,7 +249,7 @@ Set the links's navigation layers. This allows selecting links from a path request (when using [method NavigationServer3D.map_get_path]). - + @@ -257,7 +257,7 @@ Set the [code]ObjectID[/code] of the object which manages this link. - + @@ -265,7 +265,7 @@ Sets the entry position for this [code]link[/code]. - + @@ -273,7 +273,7 @@ Sets the [code]travel_cost[/code] for this [code]link[/code]. - + Create a new map. @@ -404,7 +404,7 @@ Returns [code]true[/code] if the map is active. - + @@ -412,7 +412,7 @@ Sets the map active. - + @@ -420,7 +420,7 @@ Set the map cell height used to weld the navigation mesh polygons. - + @@ -428,7 +428,7 @@ Set the map cell size used to weld the navigation mesh polygons. - + @@ -436,7 +436,7 @@ Set the map edge connection margin used to weld the compatible region edges. - + @@ -444,7 +444,7 @@ Set the map's link connection radius used to connect links to navigation polygons. - + @@ -477,7 +477,7 @@ Queries a path in a given navigation map. Start and target position and other parameters are defined through [NavigationPathQueryParameters3D]. Updates the provided [NavigationPathQueryResult3D] result object with the path among other results requested by the query. - + Creates a new region. @@ -558,7 +558,7 @@ [b]Note:[/b] If navigation meshes from different navigation regions overlap (which should be avoided in general) the result might not be what is expected. - + @@ -566,7 +566,7 @@ Sets the [code]enter_cost[/code] for this [code]region[/code]. - + @@ -574,7 +574,7 @@ Sets the map for the region. - + @@ -582,7 +582,7 @@ Set the region's navigation layers. This allows selecting regions from a path request (when using [method NavigationServer.map_get_path]). - + @@ -590,7 +590,7 @@ Sets the navigation mesh for the region. - + @@ -598,7 +598,7 @@ Set the [code]ObjectID[/code] of the object which manages this region. - + @@ -606,7 +606,7 @@ Sets the global transformation for the region. - + @@ -622,7 +622,7 @@ If [param enabled] the navigation [param region] will use edge connections to connect with other navigation regions within proximity of the navigation map edge connection margin. - + diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 8fa02dbd6..d8b6439be 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -5667,16 +5667,16 @@ void EditorNode::_project_settings_changed() { tree->set_debug_collision_contact_color(GLOBAL_GET("debug/shapes/collision/contact_color")); #ifdef DEBUG_ENABLED - NavigationServer::get_singleton_mut()->set_debug_navigation_edge_connection_color(GLOBAL_GET("debug/shapes/navigation/edge_connection_color")); - NavigationServer::get_singleton_mut()->set_debug_navigation_geometry_edge_color(GLOBAL_GET("debug/shapes/navigation/geometry_edge_color")); - NavigationServer::get_singleton_mut()->set_debug_navigation_geometry_face_color(GLOBAL_GET("debug/shapes/navigation/geometry_face_color")); - NavigationServer::get_singleton_mut()->set_debug_navigation_geometry_edge_disabled_color(GLOBAL_GET("debug/shapes/navigation/geometry_edge_disabled_color")); - NavigationServer::get_singleton_mut()->set_debug_navigation_geometry_face_disabled_color(GLOBAL_GET("debug/shapes/navigation/geometry_face_disabled_color")); - NavigationServer::get_singleton_mut()->set_debug_navigation_enable_edge_connections(GLOBAL_GET("debug/shapes/navigation/enable_edge_connections")); - NavigationServer::get_singleton_mut()->set_debug_navigation_enable_edge_connections_xray(GLOBAL_GET("debug/shapes/navigation/enable_edge_connections_xray")); - NavigationServer::get_singleton_mut()->set_debug_navigation_enable_edge_lines(GLOBAL_GET("debug/shapes/navigation/enable_edge_lines")); - NavigationServer::get_singleton_mut()->set_debug_navigation_enable_edge_lines_xray(GLOBAL_GET("debug/shapes/navigation/enable_edge_lines_xray")); - NavigationServer::get_singleton_mut()->set_debug_navigation_enable_geometry_face_random_color(GLOBAL_GET("debug/shapes/navigation/enable_geometry_face_random_color")); + NavigationServer::get_singleton()->set_debug_navigation_edge_connection_color(GLOBAL_GET("debug/shapes/navigation/edge_connection_color")); + NavigationServer::get_singleton()->set_debug_navigation_geometry_edge_color(GLOBAL_GET("debug/shapes/navigation/geometry_edge_color")); + NavigationServer::get_singleton()->set_debug_navigation_geometry_face_color(GLOBAL_GET("debug/shapes/navigation/geometry_face_color")); + NavigationServer::get_singleton()->set_debug_navigation_geometry_edge_disabled_color(GLOBAL_GET("debug/shapes/navigation/geometry_edge_disabled_color")); + NavigationServer::get_singleton()->set_debug_navigation_geometry_face_disabled_color(GLOBAL_GET("debug/shapes/navigation/geometry_face_disabled_color")); + NavigationServer::get_singleton()->set_debug_navigation_enable_edge_connections(GLOBAL_GET("debug/shapes/navigation/enable_edge_connections")); + NavigationServer::get_singleton()->set_debug_navigation_enable_edge_connections_xray(GLOBAL_GET("debug/shapes/navigation/enable_edge_connections_xray")); + NavigationServer::get_singleton()->set_debug_navigation_enable_edge_lines(GLOBAL_GET("debug/shapes/navigation/enable_edge_lines")); + NavigationServer::get_singleton()->set_debug_navigation_enable_edge_lines_xray(GLOBAL_GET("debug/shapes/navigation/enable_edge_lines_xray")); + NavigationServer::get_singleton()->set_debug_navigation_enable_geometry_face_random_color(GLOBAL_GET("debug/shapes/navigation/enable_geometry_face_random_color")); #endif // DEBUG_ENABLED _update_title(); diff --git a/main/main.cpp b/main/main.cpp index 51a43a20f..67d1060ac 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -1929,7 +1929,7 @@ bool Main::start() { if (debug_navigation) { sml->set_debug_navigation_hint(true); NavigationServer::get_singleton()->set_active(true); - NavigationServer::get_singleton_mut()->set_debug_enabled(true); + NavigationServer::get_singleton()->set_debug_enabled(true); } #endif @@ -2360,7 +2360,7 @@ bool Main::iteration() { break; } - NavigationServer::get_singleton_mut()->process(frame_slice * time_scale); + NavigationServer::get_singleton()->process(frame_slice * time_scale); message_queue->flush(); PhysicsServer::get_singleton()->step(frame_slice * time_scale); diff --git a/modules/navigation/pandemonium_navigation_2d_server.cpp b/modules/navigation/pandemonium_navigation_2d_server.cpp index 4eaeedf0b..1d629c520 100644 --- a/modules/navigation/pandemonium_navigation_2d_server.cpp +++ b/modules/navigation/pandemonium_navigation_2d_server.cpp @@ -35,15 +35,20 @@ #include "scene/resources/navigation_mesh.h" #include "servers/navigation_server.h" +#define FORWARD_0(FUNC_NAME) \ + PandemoniumNavigation2DServer::FUNC_NAME() { \ + return NavigationServer::get_singleton()->FUNC_NAME(); \ + } + #define FORWARD_0_C(FUNC_NAME) \ PandemoniumNavigation2DServer::FUNC_NAME() \ const { \ return NavigationServer::get_singleton()->FUNC_NAME(); \ } -#define FORWARD_1(FUNC_NAME, T_0, D_0, CONV_0) \ - PandemoniumNavigation2DServer::FUNC_NAME(T_0 D_0) { \ - return NavigationServer::get_singleton_mut()->FUNC_NAME(CONV_0(D_0)); \ +#define FORWARD_1(FUNC_NAME, T_0, D_0, CONV_0) \ + PandemoniumNavigation2DServer::FUNC_NAME(T_0 D_0) { \ + return NavigationServer::get_singleton()->FUNC_NAME(CONV_0(D_0)); \ } #define FORWARD_1_C(FUNC_NAME, T_0, D_0, CONV_0) \ @@ -58,9 +63,9 @@ return CONV_R(NavigationServer::get_singleton()->FUNC_NAME(CONV_0(D_0))); \ } -#define FORWARD_2(FUNC_NAME, T_0, D_0, T_1, D_1, CONV_0, CONV_1) \ - PandemoniumNavigation2DServer::FUNC_NAME(T_0 D_0, T_1 D_1) { \ - return NavigationServer::get_singleton_mut()->FUNC_NAME(CONV_0(D_0), CONV_1(D_1)); \ +#define FORWARD_2(FUNC_NAME, T_0, D_0, T_1, D_1, CONV_0, CONV_1) \ + PandemoniumNavigation2DServer::FUNC_NAME(T_0 D_0, T_1 D_1) { \ + return NavigationServer::get_singleton()->FUNC_NAME(CONV_0(D_0), CONV_1(D_1)); \ } #define FORWARD_2_C(FUNC_NAME, T_0, D_0, T_1, D_1, CONV_0, CONV_1) \ @@ -87,6 +92,11 @@ return NavigationServer::get_singleton()->FUNC_NAME(CONV_0(D_0), CONV_1(D_1), CONV_2(D_2)); \ } +#define FORWARD_4(FUNC_NAME, T_0, D_0, T_1, D_1, T_2, D_2, T_3, D_3, CONV_0, CONV_1, CONV_2, CONV_3) \ + PandemoniumNavigation2DServer::FUNC_NAME(T_0 D_0, T_1 D_1, T_2 D_2, T_3 D_3) { \ + return NavigationServer::get_singleton()->FUNC_NAME(CONV_0(D_0), CONV_1(D_1), CONV_2(D_2), CONV_3(D_3)); \ + } + #define FORWARD_4_R_C(CONV_R, FUNC_NAME, T_0, D_0, T_1, D_1, T_2, D_2, T_3, D_3, CONV_0, CONV_1, CONV_2, CONV_3) \ PandemoniumNavigation2DServer::FUNC_NAME(T_0 D_0, T_1 D_1, T_2 D_2, T_3 D_3) \ const { \ @@ -197,7 +207,7 @@ void PandemoniumNavigation2DServer::_bind_methods() { PandemoniumNavigation2DServer::PandemoniumNavigation2DServer() { ERR_FAIL_COND_MSG(!NavigationServer::get_singleton(), "The NavigationServer singleton should be initialized before the PandemoniumNavigation2DServer one."); - NavigationServer::get_singleton_mut()->connect("map_changed", this, "_emit_map_changed"); + NavigationServer::get_singleton()->connect("map_changed", this, "_emit_map_changed"); } PandemoniumNavigation2DServer::~PandemoniumNavigation2DServer() { @@ -215,29 +225,29 @@ RID FORWARD_1_C(region_get_map, RID, p_region, rid_to_rid); RID FORWARD_1_C(agent_get_map, RID, p_agent, rid_to_rid); -RID FORWARD_0_C(map_create); +RID FORWARD_0(map_create); -void FORWARD_2_C(map_set_active, RID, p_map, bool, p_active, rid_to_rid, bool_to_bool); +void FORWARD_2(map_set_active, RID, p_map, bool, p_active, rid_to_rid, bool_to_bool); bool FORWARD_1_C(map_is_active, RID, p_map, rid_to_rid); void PandemoniumNavigation2DServer::map_force_update(RID p_map) { - NavigationServer::get_singleton_mut()->map_force_update(p_map); + NavigationServer::get_singleton()->map_force_update(p_map); } -void FORWARD_2_C(map_set_cell_size, RID, p_map, real_t, p_cell_size, rid_to_rid, real_to_real); +void FORWARD_2(map_set_cell_size, RID, p_map, real_t, p_cell_size, rid_to_rid, real_to_real); real_t FORWARD_1_C(map_get_cell_size, RID, p_map, rid_to_rid); void FORWARD_2(map_set_use_edge_connections, RID, p_map, bool, p_enabled, rid_to_rid, bool_to_bool); bool FORWARD_1_C(map_get_use_edge_connections, RID, p_map, rid_to_rid); -void FORWARD_2_C(map_set_cell_height, RID, p_map, real_t, p_cell_height, rid_to_rid, real_to_real); +void FORWARD_2(map_set_cell_height, RID, p_map, real_t, p_cell_height, rid_to_rid, real_to_real); real_t FORWARD_1_C(map_get_cell_height, RID, p_map, rid_to_rid); -void FORWARD_2_C(map_set_edge_connection_margin, RID, p_map, real_t, p_connection_margin, rid_to_rid, real_to_real); +void FORWARD_2(map_set_edge_connection_margin, RID, p_map, real_t, p_connection_margin, rid_to_rid, real_to_real); real_t FORWARD_1_C(map_get_edge_connection_margin, RID, p_map, rid_to_rid); -void FORWARD_2_C(map_set_link_connection_radius, RID, p_map, real_t, p_connection_radius, rid_to_rid, real_to_real); +void FORWARD_2(map_set_link_connection_radius, RID, p_map, real_t, p_connection_radius, rid_to_rid, real_to_real); real_t FORWARD_1_C(map_get_link_connection_radius, RID, p_map, rid_to_rid); Vector FORWARD_5_R_C(vector_v3_to_v2, map_get_path, RID, p_map, Vector2, p_origin, Vector2, p_destination, bool, p_optimize, uint32_t, p_navigation_layers, rid_to_rid, v2_to_v3, v2_to_v3, bool_to_bool, uint32_to_uint32); @@ -245,25 +255,25 @@ Vector FORWARD_5_R_C(vector_v3_to_v2, map_get_path, RID, p_map, Vector2 Vector2 FORWARD_2_R_C(v3_to_v2, map_get_closest_point, RID, p_map, const Vector2 &, p_point, rid_to_rid, v2_to_v3); RID FORWARD_2_C(map_get_closest_point_owner, RID, p_map, const Vector2 &, p_point, rid_to_rid, v2_to_v3); -RID FORWARD_0_C(region_create); +RID FORWARD_0(region_create); void FORWARD_2(region_set_use_edge_connections, RID, p_region, bool, p_enabled, rid_to_rid, bool_to_bool); bool FORWARD_1_C(region_get_use_edge_connections, RID, p_region, rid_to_rid); -void FORWARD_2_C(region_set_enter_cost, RID, p_region, real_t, p_enter_cost, rid_to_rid, real_to_real); +void FORWARD_2(region_set_enter_cost, RID, p_region, real_t, p_enter_cost, rid_to_rid, real_to_real); real_t FORWARD_1_C(region_get_enter_cost, RID, p_region, rid_to_rid); -void FORWARD_2_C(region_set_travel_cost, RID, p_region, real_t, p_travel_cost, rid_to_rid, real_to_real); +void FORWARD_2(region_set_travel_cost, RID, p_region, real_t, p_travel_cost, rid_to_rid, real_to_real); real_t FORWARD_1_C(region_get_travel_cost, RID, p_region, rid_to_rid); -void FORWARD_2_C(region_set_owner_id, RID, p_region, ObjectID, p_owner_id, rid_to_rid, id_to_id); +void FORWARD_2(region_set_owner_id, RID, p_region, ObjectID, p_owner_id, rid_to_rid, id_to_id); ObjectID FORWARD_1_C(region_get_owner_id, RID, p_region, rid_to_rid); bool FORWARD_2_C(region_owns_point, RID, p_region, const Vector2 &, p_point, rid_to_rid, v2_to_v3); -void FORWARD_2_C(region_set_map, RID, p_region, RID, p_map, rid_to_rid, rid_to_rid); -void FORWARD_2_C(region_set_navigation_layers, RID, p_region, uint32_t, p_navigation_layers, rid_to_rid, uint32_to_uint32); +void FORWARD_2(region_set_map, RID, p_region, RID, p_map, rid_to_rid, rid_to_rid); +void FORWARD_2(region_set_navigation_layers, RID, p_region, uint32_t, p_navigation_layers, rid_to_rid, uint32_to_uint32); uint32_t FORWARD_1_C(region_get_navigation_layers, RID, p_region, rid_to_rid); -void FORWARD_2_C(region_set_transform, RID, p_region, Transform2D, p_transform, rid_to_rid, trf2_to_trf3); +void FORWARD_2(region_set_transform, RID, p_region, Transform2D, p_transform, rid_to_rid, trf2_to_trf3); -void PandemoniumNavigation2DServer::region_set_navpoly(RID p_region, Ref p_nav_mesh) const { +void PandemoniumNavigation2DServer::region_set_navpoly(RID p_region, Ref p_nav_mesh) { NavigationServer::get_singleton()->region_set_navmesh(p_region, poly_to_mesh(p_nav_mesh)); } @@ -271,56 +281,56 @@ int FORWARD_1_C(region_get_connections_count, RID, p_region, rid_to_rid); Vector2 FORWARD_2_R_C(v3_to_v2, region_get_connection_pathway_start, RID, p_region, int, p_connection_id, rid_to_rid, int_to_int); Vector2 FORWARD_2_R_C(v3_to_v2, region_get_connection_pathway_end, RID, p_region, int, p_connection_id, rid_to_rid, int_to_int); -RID FORWARD_0_C(link_create); +RID FORWARD_0(link_create); -void FORWARD_2_C(link_set_map, RID, p_link, RID, p_map, rid_to_rid, rid_to_rid); +void FORWARD_2(link_set_map, RID, p_link, RID, p_map, rid_to_rid, rid_to_rid); RID FORWARD_1_C(link_get_map, RID, p_link, rid_to_rid); -void FORWARD_2_C(link_set_bidirectional, RID, p_link, bool, p_bidirectional, rid_to_rid, bool_to_bool); +void FORWARD_2(link_set_bidirectional, RID, p_link, bool, p_bidirectional, rid_to_rid, bool_to_bool); bool FORWARD_1_C(link_is_bidirectional, RID, p_link, rid_to_rid); -void FORWARD_2_C(link_set_navigation_layers, RID, p_link, uint32_t, p_navigation_layers, rid_to_rid, uint32_to_uint32); +void FORWARD_2(link_set_navigation_layers, RID, p_link, uint32_t, p_navigation_layers, rid_to_rid, uint32_to_uint32); uint32_t FORWARD_1_C(link_get_navigation_layers, RID, p_link, rid_to_rid); -void FORWARD_2_C(link_set_start_position, RID, p_link, Vector2, p_position, rid_to_rid, v2_to_v3); +void FORWARD_2(link_set_start_position, RID, p_link, Vector2, p_position, rid_to_rid, v2_to_v3); Vector2 FORWARD_1_R_C(v3_to_v2, link_get_start_position, RID, p_link, rid_to_rid); -void FORWARD_2_C(link_set_end_position, RID, p_link, Vector2, p_position, rid_to_rid, v2_to_v3); +void FORWARD_2(link_set_end_position, RID, p_link, Vector2, p_position, rid_to_rid, v2_to_v3); Vector2 FORWARD_1_R_C(v3_to_v2, link_get_end_position, RID, p_link, rid_to_rid); -void FORWARD_2_C(link_set_enter_cost, RID, p_link, real_t, p_enter_cost, rid_to_rid, real_to_real); +void FORWARD_2(link_set_enter_cost, RID, p_link, real_t, p_enter_cost, rid_to_rid, real_to_real); real_t FORWARD_1_C(link_get_enter_cost, RID, p_link, rid_to_rid); -void FORWARD_2_C(link_set_travel_cost, RID, p_link, real_t, p_travel_cost, rid_to_rid, real_to_real); +void FORWARD_2(link_set_travel_cost, RID, p_link, real_t, p_travel_cost, rid_to_rid, real_to_real); real_t FORWARD_1_C(link_get_travel_cost, RID, p_link, rid_to_rid); -void FORWARD_2_C(link_set_owner_id, RID, p_link, ObjectID, p_owner_id, rid_to_rid, id_to_id); +void FORWARD_2(link_set_owner_id, RID, p_link, ObjectID, p_owner_id, rid_to_rid, id_to_id); ObjectID FORWARD_1_C(link_get_owner_id, RID, p_link, rid_to_rid); -RID PandemoniumNavigation2DServer::agent_create() const { +RID PandemoniumNavigation2DServer::agent_create() { RID agent = NavigationServer::get_singleton()->agent_create(); NavigationServer::get_singleton()->agent_set_ignore_y(agent, true); return agent; } -void FORWARD_2_C(agent_set_map, RID, p_agent, RID, p_map, rid_to_rid, rid_to_rid); +void FORWARD_2(agent_set_map, RID, p_agent, RID, p_map, rid_to_rid, rid_to_rid); -void FORWARD_2_C(agent_set_neighbor_dist, RID, p_agent, real_t, p_dist, rid_to_rid, real_to_real); +void FORWARD_2(agent_set_neighbor_dist, RID, p_agent, real_t, p_dist, rid_to_rid, real_to_real); -void FORWARD_2_C(agent_set_max_neighbors, RID, p_agent, int, p_count, rid_to_rid, int_to_int); +void FORWARD_2(agent_set_max_neighbors, RID, p_agent, int, p_count, rid_to_rid, int_to_int); -void FORWARD_2_C(agent_set_time_horizon, RID, p_agent, real_t, p_time, rid_to_rid, real_to_real); +void FORWARD_2(agent_set_time_horizon, RID, p_agent, real_t, p_time, rid_to_rid, real_to_real); -void FORWARD_2_C(agent_set_radius, RID, p_agent, real_t, p_radius, rid_to_rid, real_to_real); +void FORWARD_2(agent_set_radius, RID, p_agent, real_t, p_radius, rid_to_rid, real_to_real); -void FORWARD_2_C(agent_set_max_speed, RID, p_agent, real_t, p_max_speed, rid_to_rid, real_to_real); +void FORWARD_2(agent_set_max_speed, RID, p_agent, real_t, p_max_speed, rid_to_rid, real_to_real); -void FORWARD_2_C(agent_set_velocity, RID, p_agent, Vector2, p_velocity, rid_to_rid, v2_to_v3); +void FORWARD_2(agent_set_velocity, RID, p_agent, Vector2, p_velocity, rid_to_rid, v2_to_v3); -void FORWARD_2_C(agent_set_target_velocity, RID, p_agent, Vector2, p_velocity, rid_to_rid, v2_to_v3); +void FORWARD_2(agent_set_target_velocity, RID, p_agent, Vector2, p_velocity, rid_to_rid, v2_to_v3); -void FORWARD_2_C(agent_set_position, RID, p_agent, Vector2, p_position, rid_to_rid, v2_to_v3); +void FORWARD_2(agent_set_position, RID, p_agent, Vector2, p_position, rid_to_rid, v2_to_v3); -void FORWARD_2_C(agent_set_ignore_y, RID, p_agent, bool, p_ignore, rid_to_rid, bool_to_bool); +void FORWARD_2(agent_set_ignore_y, RID, p_agent, bool, p_ignore, rid_to_rid, bool_to_bool); bool FORWARD_1_C(agent_is_map_changed, RID, p_agent, rid_to_rid); -void FORWARD_4_C(agent_set_callback, RID, p_agent, ObjectID, p_object_id, StringName, p_method, Variant, p_udata, rid_to_rid, id_to_id, sn_to_sn, var_to_var); +void FORWARD_4(agent_set_callback, RID, p_agent, ObjectID, p_object_id, StringName, p_method, Variant, p_udata, rid_to_rid, id_to_id, sn_to_sn, var_to_var); -void FORWARD_1_C(free, RID, p_object, rid_to_rid); +void FORWARD_1(free, RID, p_object, rid_to_rid); NavigationUtilities::PathQueryResult2D PandemoniumNavigation2DServer::_query_path(const NavigationUtilities::PathQueryParameters2D &p_parameters) const { NavigationUtilities::PathQueryParameters params; diff --git a/modules/navigation/pandemonium_navigation_2d_server.h b/modules/navigation/pandemonium_navigation_2d_server.h index 05f56f13b..f14e0708c 100644 --- a/modules/navigation/pandemonium_navigation_2d_server.h +++ b/modules/navigation/pandemonium_navigation_2d_server.h @@ -49,16 +49,16 @@ public: virtual Array get_maps() const; /// Create a new map. - virtual RID map_create() const; + virtual RID map_create(); /// Set map active. - virtual void map_set_active(RID p_map, bool p_active) const; + virtual void map_set_active(RID p_map, bool p_active); /// Returns true if the map is active. virtual bool map_is_active(RID p_map) const; /// Set the map cell size used to weld the navigation mesh polygons. - virtual void map_set_cell_size(RID p_map, real_t p_cell_size) const; + virtual void map_set_cell_size(RID p_map, real_t p_cell_size); /// Returns the map cell size. virtual real_t map_get_cell_size(RID p_map) const; @@ -67,17 +67,17 @@ public: virtual bool map_get_use_edge_connections(RID p_map) const; /// Set the map cell height used to weld the navigation mesh polygons. - virtual void map_set_cell_height(RID p_map, real_t p_cell_height) const; + virtual void map_set_cell_height(RID p_map, real_t p_cell_height); virtual real_t map_get_cell_height(RID p_map) const; /// Set the map edge connection margin used to weld the compatible region edges. - virtual void map_set_edge_connection_margin(RID p_map, real_t p_connection_margin) const; + virtual void map_set_edge_connection_margin(RID p_map, real_t p_connection_margin); /// Returns the edge connection margin of this map. virtual real_t map_get_edge_connection_margin(RID p_map) const; /// Set the map link connection radius used to attach links to the nav mesh. - virtual void map_set_link_connection_radius(RID p_map, real_t p_connection_radius) const; + virtual void map_set_link_connection_radius(RID p_map, real_t p_connection_radius); /// Returns the link connection radius of this map. virtual real_t map_get_link_connection_radius(RID p_map) const; @@ -95,38 +95,38 @@ public: virtual void map_force_update(RID p_map); /// Creates a new region. - virtual RID region_create() const; + virtual RID region_create(); virtual void region_set_use_edge_connections(RID p_region, bool p_enabled); virtual bool region_get_use_edge_connections(RID p_region) const; /// Set the enter_cost of a region - virtual void region_set_enter_cost(RID p_region, real_t p_enter_cost) const; + virtual void region_set_enter_cost(RID p_region, real_t p_enter_cost); virtual real_t region_get_enter_cost(RID p_region) const; /// Set the travel_cost of a region - virtual void region_set_travel_cost(RID p_region, real_t p_travel_cost) const; + virtual void region_set_travel_cost(RID p_region, real_t p_travel_cost); virtual real_t region_get_travel_cost(RID p_region) const; /// Set the node which manages this region. - virtual void region_set_owner_id(RID p_region, ObjectID p_owner_id) const; + virtual void region_set_owner_id(RID p_region, ObjectID p_owner_id); virtual ObjectID region_get_owner_id(RID p_region) const; virtual bool region_owns_point(RID p_region, const Vector2 &p_point) const; /// Set the map of this region. - virtual void region_set_map(RID p_region, RID p_map) const; + virtual void region_set_map(RID p_region, RID p_map); virtual RID region_get_map(RID p_region) const; /// Set the region's layers - virtual void region_set_navigation_layers(RID p_region, uint32_t p_navigation_layers) const; + virtual void region_set_navigation_layers(RID p_region, uint32_t p_navigation_layers); virtual uint32_t region_get_navigation_layers(RID p_region) const; /// Set the global transformation of this region. - virtual void region_set_transform(RID p_region, Transform2D p_transform) const; + virtual void region_set_transform(RID p_region, Transform2D p_transform); /// Set the navigation poly of this region. - virtual void region_set_navpoly(RID p_region, Ref p_nav_mesh) const; + virtual void region_set_navpoly(RID p_region, Ref p_nav_mesh); /// Get a list of a region's connection to other regions. virtual int region_get_connections_count(RID p_region) const; @@ -134,45 +134,45 @@ public: virtual Vector2 region_get_connection_pathway_end(RID p_region, int p_connection_id) const; /// Creates a new link between positions in the nav map. - virtual RID link_create() const; + virtual RID link_create(); /// Set the map of this link. - virtual void link_set_map(RID p_link, RID p_map) const; + virtual void link_set_map(RID p_link, RID p_map); virtual RID link_get_map(RID p_link) const; /// Set whether this link travels in both directions. - virtual void link_set_bidirectional(RID p_link, bool p_bidirectional) const; + virtual void link_set_bidirectional(RID p_link, bool p_bidirectional); virtual bool link_is_bidirectional(RID p_link) const; /// Set the link's layers. - virtual void link_set_navigation_layers(RID p_link, uint32_t p_navigation_layers) const; + virtual void link_set_navigation_layers(RID p_link, uint32_t p_navigation_layers); virtual uint32_t link_get_navigation_layers(RID p_link) const; /// Set the start position of the link. - virtual void link_set_start_position(RID p_link, Vector2 p_position) const; + virtual void link_set_start_position(RID p_link, Vector2 p_position); virtual Vector2 link_get_start_position(RID p_link) const; /// Set the end position of the link. - virtual void link_set_end_position(RID p_link, Vector2 p_position) const; + virtual void link_set_end_position(RID p_link, Vector2 p_position); virtual Vector2 link_get_end_position(RID p_link) const; /// Set the enter cost of the link. - virtual void link_set_enter_cost(RID p_link, real_t p_enter_cost) const; + virtual void link_set_enter_cost(RID p_link, real_t p_enter_cost); virtual real_t link_get_enter_cost(RID p_link) const; /// Set the travel cost of the link. - virtual void link_set_travel_cost(RID p_link, real_t p_travel_cost) const; + virtual void link_set_travel_cost(RID p_link, real_t p_travel_cost); virtual real_t link_get_travel_cost(RID p_link) const; /// Set the node which manages this link. - virtual void link_set_owner_id(RID p_link, ObjectID p_owner_id) const; + virtual void link_set_owner_id(RID p_link, ObjectID p_owner_id); virtual ObjectID link_get_owner_id(RID p_link) const; /// Creates the agent. - virtual RID agent_create() const; + virtual RID agent_create(); /// Put the agent in the map. - virtual void agent_set_map(RID p_agent, RID p_map) const; + virtual void agent_set_map(RID p_agent, RID p_map); virtual RID agent_get_map(RID p_agent) const; /// The maximum distance (center point to @@ -182,7 +182,7 @@ public: /// time of the simulation. If the number is too /// low, the simulation will not be safe. /// Must be non-negative. - virtual void agent_set_neighbor_dist(RID p_agent, real_t p_dist) const; + virtual void agent_set_neighbor_dist(RID p_agent, real_t p_dist); /// The maximum number of other agents this /// agent takes into account in the navigation. @@ -190,7 +190,7 @@ public: /// running time of the simulation. If the /// number is too low, the simulation will not /// be safe. - virtual void agent_set_max_neighbors(RID p_agent, int p_count) const; + virtual void agent_set_max_neighbors(RID p_agent, int p_count); /// The minimal amount of time for which this /// agent's velocities that are computed by the @@ -200,36 +200,36 @@ public: /// other agents, but the less freedom this /// agent has in choosing its velocities. /// Must be positive. - virtual void agent_set_time_horizon(RID p_agent, real_t p_time) const; + virtual void agent_set_time_horizon(RID p_agent, real_t p_time); /// The radius of this agent. /// Must be non-negative. - virtual void agent_set_radius(RID p_agent, real_t p_radius) const; + virtual void agent_set_radius(RID p_agent, real_t p_radius); /// The maximum speed of this agent. /// Must be non-negative. - virtual void agent_set_max_speed(RID p_agent, real_t p_max_speed) const; + virtual void agent_set_max_speed(RID p_agent, real_t p_max_speed); /// Current velocity of the agent - virtual void agent_set_velocity(RID p_agent, Vector2 p_velocity) const; + virtual void agent_set_velocity(RID p_agent, Vector2 p_velocity); /// The new target velocity. - virtual void agent_set_target_velocity(RID p_agent, Vector2 p_velocity) const; + virtual void agent_set_target_velocity(RID p_agent, Vector2 p_velocity); /// Position of the agent in world space. - virtual void agent_set_position(RID p_agent, Vector2 p_position) const; + virtual void agent_set_position(RID p_agent, Vector2 p_position); /// Agent ignore the Y axis and avoid collisions by moving only on the horizontal plane - virtual void agent_set_ignore_y(RID p_agent, bool p_ignore) const; + virtual void agent_set_ignore_y(RID p_agent, bool p_ignore); /// Returns true if the map got changed the previous frame. virtual bool agent_is_map_changed(RID p_agent) const; /// Callback called at the end of the RVO process - virtual void agent_set_callback(RID p_agent, ObjectID p_object_id, StringName p_method, Variant p_udata = Variant()) const; + virtual void agent_set_callback(RID p_agent, ObjectID p_object_id, StringName p_method, Variant p_udata = Variant()); /// Destroy the `RID` - virtual void free(RID p_object) const; + virtual void free(RID p_object); virtual NavigationUtilities::PathQueryResult2D _query_path(const NavigationUtilities::PathQueryParameters2D &p_parameters) const; diff --git a/modules/navigation/pandemonium_navigation_server.cpp b/modules/navigation/pandemonium_navigation_server.cpp index f568a77d8..8990d3fb0 100644 --- a/modules/navigation/pandemonium_navigation_server.cpp +++ b/modules/navigation/pandemonium_navigation_server.cpp @@ -54,86 +54,63 @@ using namespace NavigationUtilities; server->MERGE(_cmd_, F_NAME)(d_0); \ } \ }; \ - void PandemoniumNavigationServer::F_NAME(T_0 D_0) const { \ + void PandemoniumNavigationServer::F_NAME(T_0 D_0) { \ auto cmd = memnew(MERGE(F_NAME, _command)( \ D_0)); \ add_command(cmd); \ } \ void PandemoniumNavigationServer::MERGE(_cmd_, F_NAME)(T_0 D_0) -#define COMMAND_2(F_NAME, T_0, D_0, T_1, D_1) \ - struct MERGE(F_NAME, _command) : public SetCommand { \ - T_0 d_0; \ - T_1 d_1; \ - MERGE(F_NAME, _command) \ - ( \ - T_0 p_d_0, \ - T_1 p_d_1) : \ - d_0(p_d_0), \ - d_1(p_d_1) {} \ - virtual void exec(PandemoniumNavigationServer *server) { \ - server->MERGE(_cmd_, F_NAME)(d_0, d_1); \ - } \ - }; \ - void PandemoniumNavigationServer::F_NAME(T_0 D_0, T_1 D_1) const { \ - auto cmd = memnew(MERGE(F_NAME, _command)( \ - D_0, \ - D_1)); \ - add_command(cmd); \ - } \ - void PandemoniumNavigationServer::MERGE(_cmd_, F_NAME)(T_0 D_0, T_1 D_1) - -#define COMMAND_2N(F_NAME, T_0, D_0, T_1, D_1) \ - struct MERGE(F_NAME, _command) : public SetCommand { \ - T_0 d_0; \ - T_1 d_1; \ - MERGE(F_NAME, _command) \ - ( \ - T_0 p_d_0, \ - T_1 p_d_1) : \ - d_0(p_d_0), \ - d_1(p_d_1) {} \ - virtual void exec(PandemoniumNavigationServer *server) { \ - server->MERGE(_cmd_, F_NAME)(d_0, d_1); \ - } \ - }; \ +#define COMMAND_2(F_NAME, T_0, D_0, T_1, D_1) \ + struct MERGE(F_NAME, _command) : public SetCommand { \ + T_0 d_0; \ + T_1 d_1; \ + MERGE(F_NAME, _command) \ + ( \ + T_0 p_d_0, \ + T_1 p_d_1) : \ + d_0(p_d_0), \ + d_1(p_d_1) {} \ + virtual void exec(PandemoniumNavigationServer *server) { \ + server->MERGE(_cmd_, F_NAME)(d_0, d_1); \ + } \ + }; \ void PandemoniumNavigationServer::F_NAME(T_0 D_0, T_1 D_1) { \ - auto cmd = memnew(MERGE(F_NAME, _command)( \ - D_0, \ - D_1)); \ - add_command(cmd); \ - } \ + auto cmd = memnew(MERGE(F_NAME, _command)( \ + D_0, \ + D_1)); \ + add_command(cmd); \ + } \ void PandemoniumNavigationServer::MERGE(_cmd_, F_NAME)(T_0 D_0, T_1 D_1) - -#define COMMAND_4(F_NAME, T_0, D_0, T_1, D_1, T_2, D_2, T_3, D_3) \ - struct MERGE(F_NAME, _command) : public SetCommand { \ - T_0 d_0; \ - T_1 d_1; \ - T_2 d_2; \ - T_3 d_3; \ - MERGE(F_NAME, _command) \ - ( \ - T_0 p_d_0, \ - T_1 p_d_1, \ - T_2 p_d_2, \ - T_3 p_d_3) : \ - d_0(p_d_0), \ - d_1(p_d_1), \ - d_2(p_d_2), \ - d_3(p_d_3) {} \ - virtual void exec(PandemoniumNavigationServer *server) { \ - server->MERGE(_cmd_, F_NAME)(d_0, d_1, d_2, d_3); \ - } \ - }; \ - void PandemoniumNavigationServer::F_NAME(T_0 D_0, T_1 D_1, T_2 D_2, T_3 D_3) const { \ - auto cmd = memnew(MERGE(F_NAME, _command)( \ - D_0, \ - D_1, \ - D_2, \ - D_3)); \ - add_command(cmd); \ - } \ +#define COMMAND_4(F_NAME, T_0, D_0, T_1, D_1, T_2, D_2, T_3, D_3) \ + struct MERGE(F_NAME, _command) : public SetCommand { \ + T_0 d_0; \ + T_1 d_1; \ + T_2 d_2; \ + T_3 d_3; \ + MERGE(F_NAME, _command) \ + ( \ + T_0 p_d_0, \ + T_1 p_d_1, \ + T_2 p_d_2, \ + T_3 p_d_3) : \ + d_0(p_d_0), \ + d_1(p_d_1), \ + d_2(p_d_2), \ + d_3(p_d_3) {} \ + virtual void exec(PandemoniumNavigationServer *server) { \ + server->MERGE(_cmd_, F_NAME)(d_0, d_1, d_2, d_3); \ + } \ + }; \ + void PandemoniumNavigationServer::F_NAME(T_0 D_0, T_1 D_1, T_2 D_2, T_3 D_3) { \ + auto cmd = memnew(MERGE(F_NAME, _command)( \ + D_0, \ + D_1, \ + D_2, \ + D_3)); \ + add_command(cmd); \ + } \ void PandemoniumNavigationServer::MERGE(_cmd_, F_NAME)(T_0 D_0, T_1 D_1, T_2 D_2, T_3 D_3) PandemoniumNavigationServer::PandemoniumNavigationServer() { @@ -164,7 +141,7 @@ Array PandemoniumNavigationServer::get_maps() const { return all_map_rids; } -RID PandemoniumNavigationServer::map_create() const { +RID PandemoniumNavigationServer::map_create() { PandemoniumNavigationServer *mut_this = const_cast(this); MutexLock lock(mut_this->operations_mutex); NavMap *space = memnew(NavMap); @@ -239,7 +216,7 @@ real_t PandemoniumNavigationServer::map_get_cell_height(RID p_map) const { return map->get_cell_height(); } -COMMAND_2N(map_set_use_edge_connections, RID, p_map, bool, p_enabled) { +COMMAND_2(map_set_use_edge_connections, RID, p_map, bool, p_enabled) { NavMap *map = map_owner.getornull(p_map); ERR_FAIL_COND(map == nullptr); @@ -381,7 +358,7 @@ RID PandemoniumNavigationServer::agent_get_map(RID p_agent) const { return RID(); } -RID PandemoniumNavigationServer::region_create() const { +RID PandemoniumNavigationServer::region_create() { PandemoniumNavigationServer *mut_this = const_cast(this); MutexLock lock(mut_this->operations_mutex); NavRegion *reg = memnew(NavRegion); @@ -390,7 +367,7 @@ RID PandemoniumNavigationServer::region_create() const { return rid; } -COMMAND_2N(region_set_use_edge_connections, RID, p_region, bool, p_enabled) { +COMMAND_2(region_set_use_edge_connections, RID, p_region, bool, p_enabled) { NavRegion *region = region_owner.getornull(p_region); ERR_FAIL_COND(region == nullptr); @@ -529,7 +506,7 @@ Vector3 PandemoniumNavigationServer::region_get_connection_pathway_end(RID p_reg return region->get_connection_pathway_end(p_connection_id); } -RID PandemoniumNavigationServer::link_create() const { +RID PandemoniumNavigationServer::link_create() { PandemoniumNavigationServer *mut_this = const_cast(this); MutexLock lock(mut_this->operations_mutex); NavLink *link = memnew(NavLink); @@ -668,7 +645,7 @@ ObjectID PandemoniumNavigationServer::link_get_owner_id(RID p_link) const { return link->get_owner_id(); } -RID PandemoniumNavigationServer::agent_create() const { +RID PandemoniumNavigationServer::agent_create() { PandemoniumNavigationServer *mut_this = const_cast(this); MutexLock lock(mut_this->operations_mutex); RvoAgent *agent = memnew(RvoAgent()); @@ -865,7 +842,7 @@ COMMAND_1(free, RID, p_object) { } } -void PandemoniumNavigationServer::set_active(bool p_active) const { +void PandemoniumNavigationServer::set_active(bool p_active) { PandemoniumNavigationServer *mut_this = const_cast(this); MutexLock lock(mut_this->operations_mutex); mut_this->active = p_active; diff --git a/modules/navigation/pandemonium_navigation_server.h b/modules/navigation/pandemonium_navigation_server.h index b0b6f9b9a..087625436 100644 --- a/modules/navigation/pandemonium_navigation_server.h +++ b/modules/navigation/pandemonium_navigation_server.h @@ -44,20 +44,16 @@ #define MERGE_INTERNAL(A, B) A##B #define MERGE(A, B) MERGE_INTERNAL(A, B) -#define COMMAND_1(F_NAME, T_0, D_0) \ - virtual void F_NAME(T_0 D_0) const; \ +#define COMMAND_1(F_NAME, T_0, D_0) \ + virtual void F_NAME(T_0 D_0); \ void MERGE(_cmd_, F_NAME)(T_0 D_0) -#define COMMAND_2(F_NAME, T_0, D_0, T_1, D_1) \ - virtual void F_NAME(T_0 D_0, T_1 D_1) const; \ - void MERGE(_cmd_, F_NAME)(T_0 D_0, T_1 D_1) - -#define COMMAND_2N(F_NAME, T_0, D_0, T_1, D_1) \ - virtual void F_NAME(T_0 D_0, T_1 D_1); \ +#define COMMAND_2(F_NAME, T_0, D_0, T_1, D_1) \ + virtual void F_NAME(T_0 D_0, T_1 D_1); \ void MERGE(_cmd_, F_NAME)(T_0 D_0, T_1 D_1) #define COMMAND_4_DEF(F_NAME, T_0, D_0, T_1, D_1, T_2, D_2, T_3, D_3, D_3_DEF) \ - virtual void F_NAME(T_0 D_0, T_1 D_1, T_2 D_2, T_3 D_3 = D_3_DEF) const; \ + virtual void F_NAME(T_0 D_0, T_1 D_1, T_2 D_2, T_3 D_3 = D_3_DEF); \ void MERGE(_cmd_, F_NAME)(T_0 D_0, T_1 D_1, T_2 D_2, T_3 D_3) class PandemoniumNavigationServer; @@ -101,7 +97,7 @@ public: virtual Array get_maps() const; - virtual RID map_create() const; + virtual RID map_create(); COMMAND_2(map_set_active, RID, p_map, bool, p_active); virtual bool map_is_active(RID p_map) const; @@ -114,7 +110,7 @@ public: COMMAND_2(map_set_cell_height, RID, p_map, real_t, p_cell_height); virtual real_t map_get_cell_height(RID p_map) const; - COMMAND_2N(map_set_use_edge_connections, RID, p_map, bool, p_enabled); + COMMAND_2(map_set_use_edge_connections, RID, p_map, bool, p_enabled); virtual bool map_get_use_edge_connections(RID p_map) const; COMMAND_2(map_set_edge_connection_margin, RID, p_map, real_t, p_connection_margin); @@ -136,9 +132,9 @@ public: virtual void map_force_update(RID p_map); - virtual RID region_create() const; + virtual RID region_create(); - COMMAND_2N(region_set_use_edge_connections, RID, p_region, bool, p_enabled); + COMMAND_2(region_set_use_edge_connections, RID, p_region, bool, p_enabled); virtual bool region_get_use_edge_connections(RID p_region) const; COMMAND_2(region_set_enter_cost, RID, p_region, real_t, p_enter_cost); @@ -161,7 +157,7 @@ public: virtual Vector3 region_get_connection_pathway_start(RID p_region, int p_connection_id) const; virtual Vector3 region_get_connection_pathway_end(RID p_region, int p_connection_id) const; - virtual RID link_create() const; + virtual RID link_create(); COMMAND_2(link_set_map, RID, p_link, RID, p_map); virtual RID link_get_map(RID p_link) const; COMMAND_2(link_set_bidirectional, RID, p_link, bool, p_bidirectional); @@ -179,7 +175,7 @@ public: COMMAND_2(link_set_owner_id, RID, p_link, ObjectID, p_owner_id); virtual ObjectID link_get_owner_id(RID p_link) const; - virtual RID agent_create() const; + virtual RID agent_create(); COMMAND_2(agent_set_map, RID, p_agent, RID, p_map); virtual RID agent_get_map(RID p_agent) const; COMMAND_2(agent_set_neighbor_dist, RID, p_agent, real_t, p_dist); @@ -196,7 +192,7 @@ public: COMMAND_1(free, RID, p_object); - virtual void set_active(bool p_active) const; + virtual void set_active(bool p_active); void flush_queries(); virtual void process(real_t p_delta_time); diff --git a/modules/navigation_dummy/dummy_navigation_2d_server.cpp b/modules/navigation_dummy/dummy_navigation_2d_server.cpp index d60f790c7..0315a22aa 100644 --- a/modules/navigation_dummy/dummy_navigation_2d_server.cpp +++ b/modules/navigation_dummy/dummy_navigation_2d_server.cpp @@ -32,11 +32,11 @@ #include "scene/resources/navigation_polygon.h" -void DummyNavigation2DServer::region_set_navpoly(RID p_region, Ref p_nav_mesh) const { +void DummyNavigation2DServer::region_set_navpoly(RID p_region, Ref p_nav_mesh) { } NavigationUtilities::PathQueryResult2D DummyNavigation2DServer::_query_path(const NavigationUtilities::PathQueryParameters2D &p_parameters) const { - return NavigationUtilities::PathQueryResult2D(); + return NavigationUtilities::PathQueryResult2D(); } DummyNavigation2DServer::DummyNavigation2DServer() { diff --git a/modules/navigation_dummy/dummy_navigation_2d_server.h b/modules/navigation_dummy/dummy_navigation_2d_server.h index 51ffa2588..ea8b822b5 100644 --- a/modules/navigation_dummy/dummy_navigation_2d_server.h +++ b/modules/navigation_dummy/dummy_navigation_2d_server.h @@ -11,19 +11,19 @@ class DummyNavigation2DServer : public Navigation2DServer { public: virtual Array get_maps() const { return Array(); } - virtual RID map_create() const { return RID(); } - virtual void map_set_active(RID p_map, bool p_active) const {} + virtual RID map_create() { return RID(); } + virtual void map_set_active(RID p_map, bool p_active) {} virtual bool map_is_active(RID p_map) const { return false; } - virtual void map_set_cell_size(RID p_map, real_t p_cell_size) const {} + virtual void map_set_cell_size(RID p_map, real_t p_cell_size) {} virtual real_t map_get_cell_size(RID p_map) const { return 0; } - virtual void map_set_cell_height(RID p_map, real_t p_cell_height) const {} + virtual void map_set_cell_height(RID p_map, real_t p_cell_height) {} virtual real_t map_get_cell_height(RID p_map) const { return 0; } void map_set_use_edge_connections(RID p_map, bool p_enabled) {} bool map_get_use_edge_connections(RID p_map) const { return false; } - virtual void map_set_edge_connection_margin(RID p_map, real_t p_connection_margin) const {} + virtual void map_set_edge_connection_margin(RID p_map, real_t p_connection_margin) {} virtual real_t map_get_edge_connection_margin(RID p_map) const { return 0; } - virtual void map_set_link_connection_radius(RID p_map, real_t p_connection_radius) const {} + virtual void map_set_link_connection_radius(RID p_map, real_t p_connection_radius) {} virtual real_t map_get_link_connection_radius(RID p_map) const { return 0; } virtual Vector map_get_path(RID p_map, Vector2 p_origin, Vector2 p_destination, bool p_optimize, uint32_t p_navigation_layers = 1) const { return Vector(); } @@ -35,60 +35,60 @@ public: virtual Array map_get_agents(RID p_map) const { return Array(); } virtual void map_force_update(RID p_map) {} - virtual RID region_create() const { return RID(); } + virtual RID region_create() { return RID(); } void region_set_use_edge_connections(RID p_region, bool p_enabled) {} bool region_get_use_edge_connections(RID p_region) const { return false; } - virtual void region_set_enter_cost(RID p_region, real_t p_enter_cost) const {} + virtual void region_set_enter_cost(RID p_region, real_t p_enter_cost) {} virtual real_t region_get_enter_cost(RID p_region) const { return 0; } - virtual void region_set_travel_cost(RID p_region, real_t p_travel_cost) const {} + virtual void region_set_travel_cost(RID p_region, real_t p_travel_cost) {} virtual real_t region_get_travel_cost(RID p_region) const { return 0; } - virtual void region_set_owner_id(RID p_region, ObjectID p_owner_id) const {} + virtual void region_set_owner_id(RID p_region, ObjectID p_owner_id) {} virtual ObjectID region_get_owner_id(RID p_region) const { return 0; } virtual bool region_owns_point(RID p_region, const Vector2 &p_point) const { return false; } - virtual void region_set_map(RID p_region, RID p_map) const {} + virtual void region_set_map(RID p_region, RID p_map) {} virtual RID region_get_map(RID p_region) const { return RID(); } - virtual void region_set_navigation_layers(RID p_region, uint32_t p_navigation_layers) const {} + virtual void region_set_navigation_layers(RID p_region, uint32_t p_navigation_layers) {} virtual uint32_t region_get_navigation_layers(RID p_region) const { return 0; } - virtual void region_set_transform(RID p_region, Transform2D p_transform) const {} - virtual void region_set_navpoly(RID p_region, Ref p_nav_mesh) const; + virtual void region_set_transform(RID p_region, Transform2D p_transform) {} + virtual void region_set_navpoly(RID p_region, Ref p_nav_mesh); virtual int region_get_connections_count(RID p_region) const { return 0; } virtual Vector2 region_get_connection_pathway_start(RID p_region, int p_connection_id) const { return Vector2(); } virtual Vector2 region_get_connection_pathway_end(RID p_region, int p_connection_id) const { return Vector2(); } - virtual RID link_create() const { return RID(); } - virtual void link_set_map(RID p_link, RID p_map) const {} + virtual RID link_create() { return RID(); } + virtual void link_set_map(RID p_link, RID p_map) {} virtual RID link_get_map(RID p_link) const { return RID(); } - virtual void link_set_bidirectional(RID p_link, bool p_bidirectional) const {} + virtual void link_set_bidirectional(RID p_link, bool p_bidirectional) {} virtual bool link_is_bidirectional(RID p_link) const { return false; } - virtual void link_set_navigation_layers(RID p_link, uint32_t p_navigation_layers) const {} + virtual void link_set_navigation_layers(RID p_link, uint32_t p_navigation_layers) {} virtual uint32_t link_get_navigation_layers(RID p_link) const { return 0; } - virtual void link_set_start_position(RID p_link, Vector2 p_position) const {} + virtual void link_set_start_position(RID p_link, Vector2 p_position) {} virtual Vector2 link_get_start_position(RID p_link) const { return Vector2(); } - virtual void link_set_end_position(RID p_link, Vector2 p_position) const {} + virtual void link_set_end_position(RID p_link, Vector2 p_position) {} virtual Vector2 link_get_end_position(RID p_link) const { return Vector2(); } - virtual void link_set_enter_cost(RID p_link, real_t p_enter_cost) const {} + virtual void link_set_enter_cost(RID p_link, real_t p_enter_cost) {} virtual real_t link_get_enter_cost(RID p_link) const { return 0; } - virtual void link_set_travel_cost(RID p_link, real_t p_travel_cost) const {} + virtual void link_set_travel_cost(RID p_link, real_t p_travel_cost) {} virtual real_t link_get_travel_cost(RID p_link) const { return 0; } - virtual void link_set_owner_id(RID p_link, ObjectID p_owner_id) const {} + virtual void link_set_owner_id(RID p_link, ObjectID p_owner_id) {} virtual ObjectID link_get_owner_id(RID p_link) const { return 0; } - virtual RID agent_create() const { return RID(); } - virtual void agent_set_map(RID p_agent, RID p_map) const {} + virtual RID agent_create() { return RID(); } + virtual void agent_set_map(RID p_agent, RID p_map) {} virtual RID agent_get_map(RID p_agent) const { return RID(); } - virtual void agent_set_neighbor_dist(RID p_agent, real_t p_dist) const {} - virtual void agent_set_max_neighbors(RID p_agent, int p_count) const {} - virtual void agent_set_time_horizon(RID p_agent, real_t p_time) const {} - virtual void agent_set_radius(RID p_agent, real_t p_radius) const {} - virtual void agent_set_max_speed(RID p_agent, real_t p_max_speed) const {} - virtual void agent_set_velocity(RID p_agent, Vector2 p_velocity) const {} - virtual void agent_set_target_velocity(RID p_agent, Vector2 p_velocity) const {} - virtual void agent_set_position(RID p_agent, Vector2 p_position) const {} - virtual void agent_set_ignore_y(RID p_agent, bool p_ignore) const {} + virtual void agent_set_neighbor_dist(RID p_agent, real_t p_dist) {} + virtual void agent_set_max_neighbors(RID p_agent, int p_count) {} + virtual void agent_set_time_horizon(RID p_agent, real_t p_time) {} + virtual void agent_set_radius(RID p_agent, real_t p_radius) {} + virtual void agent_set_max_speed(RID p_agent, real_t p_max_speed) {} + virtual void agent_set_velocity(RID p_agent, Vector2 p_velocity) {} + virtual void agent_set_target_velocity(RID p_agent, Vector2 p_velocity) {} + virtual void agent_set_position(RID p_agent, Vector2 p_position) {} + virtual void agent_set_ignore_y(RID p_agent, bool p_ignore) {} virtual bool agent_is_map_changed(RID p_agent) const { return false; } - virtual void agent_set_callback(RID p_agent, ObjectID p_object_id, StringName p_method, Variant p_udata = Variant()) const {} + virtual void agent_set_callback(RID p_agent, ObjectID p_object_id, StringName p_method, Variant p_udata = Variant()) {} - virtual void free(RID p_object) const {} + virtual void free(RID p_object) {} virtual NavigationUtilities::PathQueryResult2D _query_path(const NavigationUtilities::PathQueryParameters2D &p_parameters) const; diff --git a/modules/navigation_dummy/dummy_navigation_server.cpp b/modules/navigation_dummy/dummy_navigation_server.cpp index ab91dab90..50a4cb9bf 100644 --- a/modules/navigation_dummy/dummy_navigation_server.cpp +++ b/modules/navigation_dummy/dummy_navigation_server.cpp @@ -3,7 +3,7 @@ #include "scene/resources/navigation_mesh.h" -void DummyNavigationServer::region_set_navmesh(RID p_region, Ref p_nav_mesh) const { +void DummyNavigationServer::region_set_navmesh(RID p_region, Ref p_nav_mesh) { } NavigationUtilities::PathQueryResult DummyNavigationServer::_query_path(const NavigationUtilities::PathQueryParameters &p_parameters) const { diff --git a/modules/navigation_dummy/dummy_navigation_server.h b/modules/navigation_dummy/dummy_navigation_server.h index 4b54053da..20cf29315 100644 --- a/modules/navigation_dummy/dummy_navigation_server.h +++ b/modules/navigation_dummy/dummy_navigation_server.h @@ -10,20 +10,20 @@ class DummyNavigationServer : public NavigationServer { public: virtual Array get_maps() const { return Array(); } - virtual RID map_create() const { return RID(); } - virtual void map_set_active(RID p_map, bool p_active) const {} + virtual RID map_create() { return RID(); } + virtual void map_set_active(RID p_map, bool p_active) {} virtual bool map_is_active(RID p_map) const { return false; } - virtual void map_set_up(RID p_map, Vector3 p_up) const {} + virtual void map_set_up(RID p_map, Vector3 p_up) {} virtual Vector3 map_get_up(RID p_map) const { return Vector3(); } - virtual void map_set_cell_size(RID p_map, real_t p_cell_size) const {} + virtual void map_set_cell_size(RID p_map, real_t p_cell_size) {} virtual real_t map_get_cell_size(RID p_map) const { return 0; } - virtual void map_set_cell_height(RID p_map, real_t p_cell_height) const {} + virtual void map_set_cell_height(RID p_map, real_t p_cell_height) {} virtual real_t map_get_cell_height(RID p_map) const { return 0; } void map_set_use_edge_connections(RID p_map, bool p_enabled) {} bool map_get_use_edge_connections(RID p_map) const { return false; } - virtual void map_set_edge_connection_margin(RID p_map, real_t p_connection_margin) const {} + virtual void map_set_edge_connection_margin(RID p_map, real_t p_connection_margin) {} virtual real_t map_get_edge_connection_margin(RID p_map) const { return 0; } - virtual void map_set_link_connection_radius(RID p_map, real_t p_connection_radius) const {} + virtual void map_set_link_connection_radius(RID p_map, real_t p_connection_radius) {} virtual real_t map_get_link_connection_radius(RID p_map) const { return 0; } virtual Vector map_get_path(RID p_map, Vector3 p_origin, Vector3 p_destination, bool p_optimize, uint32_t p_navigation_layers = 1) const { return Vector(); } @@ -37,62 +37,62 @@ public: virtual Array map_get_agents(RID p_map) const { return Array(); } virtual void map_force_update(RID p_map) {} - virtual RID region_create() const { return RID(); } + virtual RID region_create() { return RID(); } void region_set_use_edge_connections(RID p_region, bool p_enabled) {} bool region_get_use_edge_connections(RID p_region) const { return false; } - virtual void region_set_enter_cost(RID p_region, real_t p_enter_cost) const {} + virtual void region_set_enter_cost(RID p_region, real_t p_enter_cost) {} virtual real_t region_get_enter_cost(RID p_region) const { return 0; } - virtual void region_set_travel_cost(RID p_region, real_t p_travel_cost) const {} + virtual void region_set_travel_cost(RID p_region, real_t p_travel_cost) {} virtual real_t region_get_travel_cost(RID p_region) const { return 0; } - virtual void region_set_owner_id(RID p_region, ObjectID p_owner_id) const {} + virtual void region_set_owner_id(RID p_region, ObjectID p_owner_id) {} virtual ObjectID region_get_owner_id(RID p_region) const { return 0; } virtual bool region_owns_point(RID p_region, const Vector3 &p_point) const { return false; } - virtual void region_set_map(RID p_region, RID p_map) const {} + virtual void region_set_map(RID p_region, RID p_map) {} virtual RID region_get_map(RID p_region) const { return RID(); } - virtual void region_set_navigation_layers(RID p_region, uint32_t p_navigation_layers) const {} + virtual void region_set_navigation_layers(RID p_region, uint32_t p_navigation_layers) {} virtual uint32_t region_get_navigation_layers(RID p_region) const { return 0; } - virtual void region_set_transform(RID p_region, Transform p_transform) const {} - virtual void region_set_navmesh(RID p_region, Ref p_nav_mesh) const; + virtual void region_set_transform(RID p_region, Transform p_transform) {} + virtual void region_set_navmesh(RID p_region, Ref p_nav_mesh); virtual int region_get_connections_count(RID p_region) const { return 0; } virtual Vector3 region_get_connection_pathway_start(RID p_region, int p_connection_id) const { return Vector3(); } virtual Vector3 region_get_connection_pathway_end(RID p_region, int p_connection_id) const { return Vector3(); } - virtual RID link_create() const { return RID(); } - virtual void link_set_map(RID p_link, RID p_map) const {} + virtual RID link_create() { return RID(); } + virtual void link_set_map(RID p_link, RID p_map) {} virtual RID link_get_map(RID p_link) const { return RID(); } - virtual void link_set_bidirectional(RID p_link, bool p_bidirectional) const {} + virtual void link_set_bidirectional(RID p_link, bool p_bidirectional) {} virtual bool link_is_bidirectional(RID p_link) const { return false; } - virtual void link_set_navigation_layers(RID p_link, uint32_t p_navigation_layers) const {} + virtual void link_set_navigation_layers(RID p_link, uint32_t p_navigation_layers) {} virtual uint32_t link_get_navigation_layers(RID p_link) const { return 0; } - virtual void link_set_start_position(RID p_link, Vector3 p_position) const {} + virtual void link_set_start_position(RID p_link, Vector3 p_position) {} virtual Vector3 link_get_start_position(RID p_link) const { return Vector3(); } - virtual void link_set_end_position(RID p_link, Vector3 p_position) const {} + virtual void link_set_end_position(RID p_link, Vector3 p_position) {} virtual Vector3 link_get_end_position(RID p_link) const { return Vector3(); } - virtual void link_set_enter_cost(RID p_link, real_t p_enter_cost) const {} + virtual void link_set_enter_cost(RID p_link, real_t p_enter_cost) {} virtual real_t link_get_enter_cost(RID p_link) const { return 0; } - virtual void link_set_travel_cost(RID p_link, real_t p_travel_cost) const {} + virtual void link_set_travel_cost(RID p_link, real_t p_travel_cost) {} virtual real_t link_get_travel_cost(RID p_link) const { return 0; } - virtual void link_set_owner_id(RID p_link, ObjectID p_owner_id) const {} + virtual void link_set_owner_id(RID p_link, ObjectID p_owner_id) {} virtual ObjectID link_get_owner_id(RID p_link) const { return 0; } - virtual RID agent_create() const { return RID(); } - virtual void agent_set_map(RID p_agent, RID p_map) const {} + virtual RID agent_create() { return RID(); } + virtual void agent_set_map(RID p_agent, RID p_map) {} virtual RID agent_get_map(RID p_agent) const { return RID(); } - virtual void agent_set_neighbor_dist(RID p_agent, real_t p_dist) const {} - virtual void agent_set_max_neighbors(RID p_agent, int p_count) const {} - virtual void agent_set_time_horizon(RID p_agent, real_t p_time) const {} - virtual void agent_set_radius(RID p_agent, real_t p_radius) const {} - virtual void agent_set_max_speed(RID p_agent, real_t p_max_speed) const {} - virtual void agent_set_velocity(RID p_agent, Vector3 p_velocity) const {} - virtual void agent_set_target_velocity(RID p_agent, Vector3 p_velocity) const {} - virtual void agent_set_position(RID p_agent, Vector3 p_position) const {} - virtual void agent_set_ignore_y(RID p_agent, bool p_ignore) const {} + virtual void agent_set_neighbor_dist(RID p_agent, real_t p_dist) {} + virtual void agent_set_max_neighbors(RID p_agent, int p_count) {} + virtual void agent_set_time_horizon(RID p_agent, real_t p_time) {} + virtual void agent_set_radius(RID p_agent, real_t p_radius) {} + virtual void agent_set_max_speed(RID p_agent, real_t p_max_speed) {} + virtual void agent_set_velocity(RID p_agent, Vector3 p_velocity) {} + virtual void agent_set_target_velocity(RID p_agent, Vector3 p_velocity) {} + virtual void agent_set_position(RID p_agent, Vector3 p_position) {} + virtual void agent_set_ignore_y(RID p_agent, bool p_ignore) {} virtual bool agent_is_map_changed(RID p_agent) const { return false; } - virtual void agent_set_callback(RID p_agent, ObjectID p_object_id, StringName p_method, Variant p_udata = Variant()) const {} + virtual void agent_set_callback(RID p_agent, ObjectID p_object_id, StringName p_method, Variant p_udata = Variant()) {} - virtual void free(RID p_object) const {}; + virtual void free(RID p_object){}; - virtual void set_active(bool p_active) const {}; + virtual void set_active(bool p_active){}; virtual void process(real_t delta_time){}; diff --git a/scene/2d/navigation_agent_2d.cpp b/scene/2d/navigation_agent_2d.cpp index 4b5543cef..d34e298c5 100644 --- a/scene/2d/navigation_agent_2d.cpp +++ b/scene/2d/navigation_agent_2d.cpp @@ -277,7 +277,7 @@ NavigationAgent2D::NavigationAgent2D() { debug_use_custom = false; debug_path_custom_color = Color(1.0, 1.0, 1.0, 1.0); - Navigation2DServer::get_singleton_mut()->connect("navigation_debug_changed", this, "_navigation_debug_changed"); + Navigation2DServer::get_singleton()->connect("navigation_debug_changed", this, "_navigation_debug_changed"); #endif // DEBUG_ENABLED } @@ -286,7 +286,7 @@ NavigationAgent2D::~NavigationAgent2D() { agent = RID(); // Pointless #ifdef DEBUG_ENABLED - Navigation2DServer::get_singleton_mut()->disconnect("navigation_debug_changed", this, "_navigation_debug_changed"); + Navigation2DServer::get_singleton()->disconnect("navigation_debug_changed", this, "_navigation_debug_changed"); ERR_FAIL_NULL(RenderingServer::get_singleton()); if (debug_path_instance.is_valid()) { diff --git a/scene/2d/navigation_polygon_instance.cpp b/scene/2d/navigation_polygon_instance.cpp index a5001cbf3..bc55d7263 100644 --- a/scene/2d/navigation_polygon_instance.cpp +++ b/scene/2d/navigation_polygon_instance.cpp @@ -88,7 +88,7 @@ void NavigationPolygonInstance::set_use_edge_connections(bool p_enabled) { use_edge_connections = p_enabled; - Navigation2DServer::get_singleton_mut()->region_set_use_edge_connections(region, use_edge_connections); + Navigation2DServer::get_singleton()->region_set_use_edge_connections(region, use_edge_connections); } bool NavigationPolygonInstance::get_use_edge_connections() const { @@ -418,8 +418,8 @@ NavigationPolygonInstance::NavigationPolygonInstance() { Navigation2DServer::get_singleton()->region_set_travel_cost(region, get_travel_cost()); #ifdef DEBUG_ENABLED - Navigation2DServer::get_singleton_mut()->connect("map_changed", this, "_navigation_map_changed"); - NavigationServer::get_singleton_mut()->connect("navigation_debug_changed", this, "_navigation_debug_changed"); + Navigation2DServer::get_singleton()->connect("map_changed", this, "_navigation_map_changed"); + NavigationServer::get_singleton()->connect("navigation_debug_changed", this, "_navigation_debug_changed"); #endif // DEBUG_ENABLED } @@ -429,8 +429,8 @@ NavigationPolygonInstance::~NavigationPolygonInstance() { Navigation2DServer::get_singleton()->free(region); #ifdef DEBUG_ENABLED - Navigation2DServer::get_singleton_mut()->disconnect("map_changed", this, "_navigation_map_changed"); - NavigationServer::get_singleton_mut()->disconnect("navigation_debug_changed", this, "_navigation_debug_changed"); + Navigation2DServer::get_singleton()->disconnect("map_changed", this, "_navigation_map_changed"); + NavigationServer::get_singleton()->disconnect("navigation_debug_changed", this, "_navigation_debug_changed"); #endif // DEBUG_ENABLED } diff --git a/scene/3d/navigation_agent.cpp b/scene/3d/navigation_agent.cpp index 998a47f06..2d2d7fc9d 100644 --- a/scene/3d/navigation_agent.cpp +++ b/scene/3d/navigation_agent.cpp @@ -282,7 +282,7 @@ NavigationAgent::NavigationAgent() { debug_use_custom = false; debug_path_custom_color = Color(1.0, 1.0, 1.0, 1.0); - NavigationServer::get_singleton_mut()->connect("navigation_debug_changed", this, "_navigation_debug_changed"); + NavigationServer::get_singleton()->connect("navigation_debug_changed", this, "_navigation_debug_changed"); #endif // DEBUG_ENABLED } @@ -292,7 +292,7 @@ NavigationAgent::~NavigationAgent() { agent = RID(); // Pointless #ifdef DEBUG_ENABLED - NavigationServer::get_singleton_mut()->disconnect("navigation_debug_changed", this, "_navigation_debug_changed"); + NavigationServer::get_singleton()->disconnect("navigation_debug_changed", this, "_navigation_debug_changed"); ERR_FAIL_NULL(RenderingServer::get_singleton()); if (debug_path_instance.is_valid()) { @@ -797,7 +797,7 @@ void NavigationAgent::_update_debug_path() { debug_path_mesh->add_surface_from_arrays(Mesh::PRIMITIVE_LINES, debug_path_lines_mesh_array); - Ref debug_agent_path_line_material = NavigationServer::get_singleton_mut()->get_debug_navigation_agent_path_line_material(); + Ref debug_agent_path_line_material = NavigationServer::get_singleton()->get_debug_navigation_agent_path_line_material(); if (debug_use_custom) { if (!debug_agent_path_line_custom_material.is_valid()) { debug_agent_path_line_custom_material = debug_agent_path_line_material->duplicate(); @@ -820,7 +820,7 @@ void NavigationAgent::_update_debug_path() { debug_path_mesh->add_surface_from_arrays(Mesh::PRIMITIVE_POINTS, debug_path_points_mesh_array); - Ref debug_agent_path_point_material = NavigationServer::get_singleton_mut()->get_debug_navigation_agent_path_point_material(); + Ref debug_agent_path_point_material = NavigationServer::get_singleton()->get_debug_navigation_agent_path_point_material(); if (debug_use_custom) { if (!debug_agent_path_point_custom_material.is_valid()) { debug_agent_path_point_custom_material = debug_agent_path_point_material->duplicate(); diff --git a/scene/3d/navigation_link_3d.cpp b/scene/3d/navigation_link_3d.cpp index 11773f192..ebd41a85a 100644 --- a/scene/3d/navigation_link_3d.cpp +++ b/scene/3d/navigation_link_3d.cpp @@ -136,8 +136,8 @@ void NavigationLink3D::_update_debug_mesh() { RS::get_singleton()->instance_set_scenario(debug_instance, get_world_3d()->get_scenario()); RS::get_singleton()->instance_set_visible(debug_instance, is_visible_in_tree()); - Ref link_material = NavigationServer::get_singleton_mut()->get_debug_navigation_link_connections_material(); - Ref disabled_link_material = NavigationServer::get_singleton_mut()->get_debug_navigation_link_connections_disabled_material(); + Ref link_material = NavigationServer::get_singleton()->get_debug_navigation_link_connections_material(); + Ref disabled_link_material = NavigationServer::get_singleton()->get_debug_navigation_link_connections_disabled_material(); if (enabled) { RS::get_singleton()->instance_set_surface_material(debug_instance, 0, link_material->get_rid()); @@ -281,10 +281,10 @@ void NavigationLink3D::set_enabled(bool p_enabled) { #ifdef DEBUG_ENABLED if (debug_instance.is_valid() && debug_mesh.is_valid()) { if (enabled) { - Ref link_material = NavigationServer::get_singleton_mut()->get_debug_navigation_link_connections_material(); + Ref link_material = NavigationServer::get_singleton()->get_debug_navigation_link_connections_material(); RS::get_singleton()->instance_set_surface_material(debug_instance, 0, link_material->get_rid()); } else { - Ref disabled_link_material = NavigationServer::get_singleton_mut()->get_debug_navigation_link_connections_disabled_material(); + Ref disabled_link_material = NavigationServer::get_singleton()->get_debug_navigation_link_connections_disabled_material(); RS::get_singleton()->instance_set_surface_material(debug_instance, 0, disabled_link_material->get_rid()); } } diff --git a/scene/3d/navigation_mesh_instance.cpp b/scene/3d/navigation_mesh_instance.cpp index 09fc74e39..ba8891c72 100644 --- a/scene/3d/navigation_mesh_instance.cpp +++ b/scene/3d/navigation_mesh_instance.cpp @@ -70,10 +70,10 @@ void NavigationMeshInstance::set_enabled(bool p_enabled) { if (!is_enabled()) { if (debug_mesh.is_valid()) { if (debug_mesh->get_surface_count() > 0) { - RS::get_singleton()->instance_set_surface_material(debug_instance, 0, NavigationServer::get_singleton_mut()->get_debug_navigation_geometry_face_disabled_material()->get_rid()); + RS::get_singleton()->instance_set_surface_material(debug_instance, 0, NavigationServer::get_singleton()->get_debug_navigation_geometry_face_disabled_material()->get_rid()); } if (debug_mesh->get_surface_count() > 1) { - RS::get_singleton()->instance_set_surface_material(debug_instance, 1, NavigationServer::get_singleton_mut()->get_debug_navigation_geometry_edge_disabled_material()->get_rid()); + RS::get_singleton()->instance_set_surface_material(debug_instance, 1, NavigationServer::get_singleton()->get_debug_navigation_geometry_edge_disabled_material()->get_rid()); } } } else { @@ -103,7 +103,7 @@ void NavigationMeshInstance::set_use_edge_connections(bool p_enabled) { use_edge_connections = p_enabled; - NavigationServer::get_singleton_mut()->region_set_use_edge_connections(region, use_edge_connections); + NavigationServer::get_singleton()->region_set_use_edge_connections(region, use_edge_connections); } bool NavigationMeshInstance::get_use_edge_connections() const { @@ -429,9 +429,9 @@ NavigationMeshInstance::NavigationMeshInstance() { enabled = true; #ifdef DEBUG_ENABLED - NavigationServer::get_singleton_mut()->connect("map_changed", this, "_navigation_map_changed"); - NavigationServer::get_singleton_mut()->connect("navigation_debug_changed", this, "_update_debug_mesh"); - NavigationServer::get_singleton_mut()->connect("navigation_debug_changed", this, "_update_debug_edge_connections_mesh"); + NavigationServer::get_singleton()->connect("map_changed", this, "_navigation_map_changed"); + NavigationServer::get_singleton()->connect("navigation_debug_changed", this, "_update_debug_mesh"); + NavigationServer::get_singleton()->connect("navigation_debug_changed", this, "_update_debug_edge_connections_mesh"); #endif // DEBUG_ENABLED } @@ -444,9 +444,9 @@ NavigationMeshInstance::~NavigationMeshInstance() { NavigationServer::get_singleton()->free(region); #ifdef DEBUG_ENABLED - NavigationServer::get_singleton_mut()->disconnect("map_changed", this, "_navigation_map_changed"); - NavigationServer::get_singleton_mut()->disconnect("navigation_debug_changed", this, "_update_debug_mesh"); - NavigationServer::get_singleton_mut()->disconnect("navigation_debug_changed", this, "_update_debug_edge_connections_mesh"); + NavigationServer::get_singleton()->disconnect("map_changed", this, "_navigation_map_changed"); + NavigationServer::get_singleton()->disconnect("navigation_debug_changed", this, "_update_debug_mesh"); + NavigationServer::get_singleton()->disconnect("navigation_debug_changed", this, "_update_debug_edge_connections_mesh"); ERR_FAIL_NULL(RenderingServer::get_singleton()); @@ -582,7 +582,7 @@ void NavigationMeshInstance::_update_debug_mesh() { } } - Ref face_material = NavigationServer::get_singleton_mut()->get_debug_navigation_geometry_face_material(); + Ref face_material = NavigationServer::get_singleton()->get_debug_navigation_geometry_face_material(); Array face_mesh_array; face_mesh_array.resize(Mesh::ARRAY_MAX); @@ -594,7 +594,7 @@ void NavigationMeshInstance::_update_debug_mesh() { debug_mesh->surface_set_material(0, face_material); if (enabled_edge_lines) { - Ref line_material = NavigationServer::get_singleton_mut()->get_debug_navigation_geometry_edge_material(); + Ref line_material = NavigationServer::get_singleton()->get_debug_navigation_geometry_edge_material(); Array line_mesh_array; line_mesh_array.resize(Mesh::ARRAY_MAX); @@ -612,10 +612,10 @@ void NavigationMeshInstance::_update_debug_mesh() { if (!is_enabled()) { if (debug_mesh.is_valid()) { if (debug_mesh->get_surface_count() > 0) { - RS::get_singleton()->instance_set_surface_material(debug_instance, 0, NavigationServer::get_singleton_mut()->get_debug_navigation_geometry_face_disabled_material()->get_rid()); + RS::get_singleton()->instance_set_surface_material(debug_instance, 0, NavigationServer::get_singleton()->get_debug_navigation_geometry_face_disabled_material()->get_rid()); } if (debug_mesh->get_surface_count() > 1) { - RS::get_singleton()->instance_set_surface_material(debug_instance, 1, NavigationServer::get_singleton_mut()->get_debug_navigation_geometry_edge_disabled_material()->get_rid()); + RS::get_singleton()->instance_set_surface_material(debug_instance, 1, NavigationServer::get_singleton()->get_debug_navigation_geometry_edge_disabled_material()->get_rid()); } } } else { @@ -711,7 +711,7 @@ void NavigationMeshInstance::_update_debug_edge_connections_mesh() { return; } - Ref edge_connections_material = NavigationServer::get_singleton_mut()->get_debug_navigation_edge_connections_material(); + Ref edge_connections_material = NavigationServer::get_singleton()->get_debug_navigation_edge_connections_material(); Array mesh_array; mesh_array.resize(Mesh::ARRAY_MAX); diff --git a/scene/resources/navigation_mesh.cpp b/scene/resources/navigation_mesh.cpp index 81163da93..b1a543b4b 100644 --- a/scene/resources/navigation_mesh.cpp +++ b/scene/resources/navigation_mesh.cpp @@ -444,7 +444,7 @@ Ref NavigationMesh::get_debug_mesh() { } debug_mesh->add_surface_from_arrays(Mesh::PRIMITIVE_TRIANGLES, face_mesh_array); - Ref debug_geometry_face_material = NavigationServer::get_singleton_mut()->get_debug_navigation_geometry_face_material(); + Ref debug_geometry_face_material = NavigationServer::get_singleton()->get_debug_navigation_geometry_face_material(); debug_mesh->surface_set_material(debug_mesh->get_surface_count(), debug_geometry_face_material); // if enabled build geometry edge line surface @@ -469,7 +469,7 @@ Ref NavigationMesh::get_debug_mesh() { line_mesh_array.resize(Mesh::ARRAY_MAX); line_mesh_array[Mesh::ARRAY_VERTEX] = line_vertex_array; debug_mesh->add_surface_from_arrays(Mesh::PRIMITIVE_LINES, line_mesh_array); - Ref debug_geometry_edge_material = NavigationServer::get_singleton_mut()->get_debug_navigation_geometry_edge_material(); + Ref debug_geometry_edge_material = NavigationServer::get_singleton()->get_debug_navigation_geometry_edge_material(); debug_mesh->surface_set_material(debug_mesh->get_surface_count() - 1, debug_geometry_edge_material); } diff --git a/scene/resources/world_2d.cpp b/scene/resources/world_2d.cpp index f003d9975..8a94bbce4 100644 --- a/scene/resources/world_2d.cpp +++ b/scene/resources/world_2d.cpp @@ -385,7 +385,7 @@ World2D::World2D() { Navigation2DServer::get_singleton()->map_set_cell_height(navigation_map, GLOBAL_DEF("navigation/2d/default_cell_height", 1.0)); Navigation2DServer::get_singleton()->map_set_edge_connection_margin(navigation_map, GLOBAL_DEF("navigation/2d/default_edge_connection_margin", 1.0)); Navigation2DServer::get_singleton()->map_set_link_connection_radius(navigation_map, GLOBAL_DEF("navigation/2d/default_link_connection_radius", 4)); - Navigation2DServer::get_singleton_mut()->map_set_use_edge_connections(navigation_map, GLOBAL_DEF("navigation/2d/use_edge_connections", true)); + Navigation2DServer::get_singleton()->map_set_use_edge_connections(navigation_map, GLOBAL_DEF("navigation/2d/use_edge_connections", true)); indexer = memnew(SpatialIndexer2D); } diff --git a/scene/resources/world_3d.cpp b/scene/resources/world_3d.cpp index ebd29d69a..d7a31e4a8 100644 --- a/scene/resources/world_3d.cpp +++ b/scene/resources/world_3d.cpp @@ -365,7 +365,7 @@ World3D::World3D() { NavigationServer::get_singleton()->map_set_cell_height(navigation_map, GLOBAL_DEF("navigation/3d/default_cell_height", 0.25)); NavigationServer::get_singleton()->map_set_edge_connection_margin(navigation_map, GLOBAL_DEF("navigation/3d/default_edge_connection_margin", 0.25)); NavigationServer::get_singleton()->map_set_link_connection_radius(navigation_map, GLOBAL_DEF("navigation/3d/default_link_connection_radius", 1.0)); - NavigationServer::get_singleton_mut()->map_set_use_edge_connections(navigation_map, GLOBAL_DEF("navigation/3d/use_edge_connections", true)); + NavigationServer::get_singleton()->map_set_use_edge_connections(navigation_map, GLOBAL_DEF("navigation/3d/use_edge_connections", true)); #ifdef _3D_DISABLED indexer = NULL; diff --git a/servers/navigation_2d_server.cpp b/servers/navigation_2d_server.cpp index 7a03d465d..3905396bc 100644 --- a/servers/navigation_2d_server.cpp +++ b/servers/navigation_2d_server.cpp @@ -129,7 +129,7 @@ void Navigation2DServer::_bind_methods() { void Navigation2DServer::init() { #ifdef DEBUG_ENABLED - NavigationServer::get_singleton_mut()->connect("navigation_debug_changed", this, "_emit_navigation_debug_changed_signal"); + NavigationServer::get_singleton()->connect("navigation_debug_changed", this, "_emit_navigation_debug_changed_signal"); #endif // DEBUG_ENABLED } @@ -157,7 +157,7 @@ void Navigation2DServer::_emit_navigation_debug_changed_signal() { #endif // DEBUG_ENABLED void Navigation2DServer::set_debug_enabled(bool p_enabled) { - NavigationServer::get_singleton_mut()->set_debug_enabled(p_enabled); + NavigationServer::get_singleton()->set_debug_enabled(p_enabled); } bool Navigation2DServer::get_debug_enabled() const { return NavigationServer::get_singleton()->get_debug_enabled(); @@ -165,7 +165,7 @@ bool Navigation2DServer::get_debug_enabled() const { #ifdef DEBUG_ENABLED void Navigation2DServer::set_debug_navigation_edge_connection_color(const Color &p_color) { - NavigationServer::get_singleton_mut()->set_debug_navigation_edge_connection_color(p_color); + NavigationServer::get_singleton()->set_debug_navigation_edge_connection_color(p_color); } Color Navigation2DServer::get_debug_navigation_edge_connection_color() const { @@ -173,7 +173,7 @@ Color Navigation2DServer::get_debug_navigation_edge_connection_color() const { } void Navigation2DServer::set_debug_navigation_geometry_face_color(const Color &p_color) { - NavigationServer::get_singleton_mut()->set_debug_navigation_geometry_face_color(p_color); + NavigationServer::get_singleton()->set_debug_navigation_geometry_face_color(p_color); } Color Navigation2DServer::get_debug_navigation_geometry_face_color() const { @@ -181,7 +181,7 @@ Color Navigation2DServer::get_debug_navigation_geometry_face_color() const { } void Navigation2DServer::set_debug_navigation_geometry_face_disabled_color(const Color &p_color) { - NavigationServer::get_singleton_mut()->set_debug_navigation_geometry_face_disabled_color(p_color); + NavigationServer::get_singleton()->set_debug_navigation_geometry_face_disabled_color(p_color); } Color Navigation2DServer::get_debug_navigation_geometry_face_disabled_color() const { @@ -189,7 +189,7 @@ Color Navigation2DServer::get_debug_navigation_geometry_face_disabled_color() co } void Navigation2DServer::set_debug_navigation_geometry_edge_color(const Color &p_color) { - NavigationServer::get_singleton_mut()->set_debug_navigation_geometry_edge_color(p_color); + NavigationServer::get_singleton()->set_debug_navigation_geometry_edge_color(p_color); } Color Navigation2DServer::get_debug_navigation_geometry_edge_color() const { @@ -197,7 +197,7 @@ Color Navigation2DServer::get_debug_navigation_geometry_edge_color() const { } void Navigation2DServer::set_debug_navigation_geometry_edge_disabled_color(const Color &p_color) { - NavigationServer::get_singleton_mut()->set_debug_navigation_geometry_edge_disabled_color(p_color); + NavigationServer::get_singleton()->set_debug_navigation_geometry_edge_disabled_color(p_color); } Color Navigation2DServer::get_debug_navigation_geometry_edge_disabled_color() const { @@ -205,7 +205,7 @@ Color Navigation2DServer::get_debug_navigation_geometry_edge_disabled_color() co } void Navigation2DServer::set_debug_navigation_enable_edge_connections(const bool p_value) { - NavigationServer::get_singleton_mut()->set_debug_navigation_enable_edge_connections(p_value); + NavigationServer::get_singleton()->set_debug_navigation_enable_edge_connections(p_value); } bool Navigation2DServer::get_debug_navigation_enable_edge_connections() const { @@ -213,7 +213,7 @@ bool Navigation2DServer::get_debug_navigation_enable_edge_connections() const { } void Navigation2DServer::set_debug_navigation_enable_geometry_face_random_color(const bool p_value) { - NavigationServer::get_singleton_mut()->set_debug_navigation_enable_geometry_face_random_color(p_value); + NavigationServer::get_singleton()->set_debug_navigation_enable_geometry_face_random_color(p_value); } bool Navigation2DServer::get_debug_navigation_enable_geometry_face_random_color() const { @@ -221,7 +221,7 @@ bool Navigation2DServer::get_debug_navigation_enable_geometry_face_random_color( } void Navigation2DServer::set_debug_navigation_enable_edge_lines(const bool p_value) { - NavigationServer::get_singleton_mut()->set_debug_navigation_enable_edge_lines(p_value); + NavigationServer::get_singleton()->set_debug_navigation_enable_edge_lines(p_value); } bool Navigation2DServer::get_debug_navigation_enable_edge_lines() const { @@ -229,21 +229,21 @@ bool Navigation2DServer::get_debug_navigation_enable_edge_lines() const { } void Navigation2DServer::set_debug_navigation_link_connection_color(const Color &p_color) { - NavigationServer::get_singleton_mut()->set_debug_navigation_link_connection_color(p_color); + NavigationServer::get_singleton()->set_debug_navigation_link_connection_color(p_color); } Color Navigation2DServer::get_debug_navigation_link_connection_color() const { return NavigationServer::get_singleton()->get_debug_navigation_link_connection_color(); } void Navigation2DServer::set_debug_navigation_link_connection_disabled_color(const Color &p_color) { - NavigationServer::get_singleton_mut()->set_debug_navigation_link_connection_disabled_color(p_color); + NavigationServer::get_singleton()->set_debug_navigation_link_connection_disabled_color(p_color); } Color Navigation2DServer::get_debug_navigation_link_connection_disabled_color() const { return NavigationServer::get_singleton()->get_debug_navigation_link_connection_disabled_color(); } void Navigation2DServer::set_debug_navigation_agent_path_color(const Color &p_color) { - NavigationServer::get_singleton_mut()->set_debug_navigation_agent_path_color(p_color); + NavigationServer::get_singleton()->set_debug_navigation_agent_path_color(p_color); } Color Navigation2DServer::get_debug_navigation_agent_path_color() const { @@ -251,7 +251,7 @@ Color Navigation2DServer::get_debug_navigation_agent_path_color() const { } void Navigation2DServer::set_debug_navigation_enable_agent_paths(const bool p_value) { - NavigationServer::get_singleton_mut()->set_debug_navigation_enable_agent_paths(p_value); + NavigationServer::get_singleton()->set_debug_navigation_enable_agent_paths(p_value); } bool Navigation2DServer::get_debug_navigation_enable_agent_paths() const { @@ -259,7 +259,7 @@ bool Navigation2DServer::get_debug_navigation_enable_agent_paths() const { } void Navigation2DServer::set_debug_navigation_agent_path_point_size(float p_point_size) { - NavigationServer::get_singleton_mut()->set_debug_navigation_agent_path_point_size(p_point_size); + NavigationServer::get_singleton()->set_debug_navigation_agent_path_point_size(p_point_size); } float Navigation2DServer::get_debug_navigation_agent_path_point_size() const { diff --git a/servers/navigation_2d_server.h b/servers/navigation_2d_server.h index 61bbdc53d..aa33651df 100644 --- a/servers/navigation_2d_server.h +++ b/servers/navigation_2d_server.h @@ -51,25 +51,21 @@ protected: static void _bind_methods(); public: - /// Thread safe, can be used across many threads. - static const Navigation2DServer *get_singleton() { return singleton; } - - /// MUST be used in single thread! - static Navigation2DServer *get_singleton_mut() { return singleton; } + static Navigation2DServer *get_singleton() { return singleton; } virtual Array get_maps() const = 0; /// Create a new map. - virtual RID map_create() const = 0; + virtual RID map_create() = 0; /// Set map active. - virtual void map_set_active(RID p_map, bool p_active) const = 0; + virtual void map_set_active(RID p_map, bool p_active) = 0; /// Returns true if the map is active. virtual bool map_is_active(RID p_map) const = 0; /// Set the map cell size used to weld the navigation mesh polygons. - virtual void map_set_cell_size(RID p_map, real_t p_cell_size) const = 0; + virtual void map_set_cell_size(RID p_map, real_t p_cell_size) = 0; /// Returns the map cell size. virtual real_t map_get_cell_size(RID p_map) const = 0; @@ -78,17 +74,17 @@ public: virtual bool map_get_use_edge_connections(RID p_map) const = 0; /// Set the map cell height used to weld the navigation mesh polygons. - virtual void map_set_cell_height(RID p_map, real_t p_cell_height) const = 0; + virtual void map_set_cell_height(RID p_map, real_t p_cell_height) = 0; virtual real_t map_get_cell_height(RID p_map) const = 0; /// Set the map edge connection margin used to weld the compatible region edges. - virtual void map_set_edge_connection_margin(RID p_map, real_t p_connection_margin) const = 0; + virtual void map_set_edge_connection_margin(RID p_map, real_t p_connection_margin) = 0; /// Returns the edge connection margin of this map. virtual real_t map_get_edge_connection_margin(RID p_map) const = 0; /// Set the map link connection radius used to attach links to the nav mesh. - virtual void map_set_link_connection_radius(RID p_map, real_t p_connection_radius) const = 0; + virtual void map_set_link_connection_radius(RID p_map, real_t p_connection_radius) = 0; /// Returns the link connection radius of this map. virtual real_t map_get_link_connection_radius(RID p_map) const = 0; @@ -106,38 +102,38 @@ public: virtual void map_force_update(RID p_map) = 0; /// Creates a new region. - virtual RID region_create() const = 0; + virtual RID region_create() = 0; virtual void region_set_use_edge_connections(RID p_region, bool p_enabled) = 0; virtual bool region_get_use_edge_connections(RID p_region) const = 0; /// Set the enter_cost of a region - virtual void region_set_enter_cost(RID p_region, real_t p_enter_cost) const = 0; + virtual void region_set_enter_cost(RID p_region, real_t p_enter_cost) = 0; virtual real_t region_get_enter_cost(RID p_region) const = 0; /// Set the travel_cost of a region - virtual void region_set_travel_cost(RID p_region, real_t p_travel_cost) const = 0; + virtual void region_set_travel_cost(RID p_region, real_t p_travel_cost) = 0; virtual real_t region_get_travel_cost(RID p_region) const = 0; /// Set the node which manages this region. - virtual void region_set_owner_id(RID p_region, ObjectID p_owner_id) const = 0; + virtual void region_set_owner_id(RID p_region, ObjectID p_owner_id) = 0; virtual ObjectID region_get_owner_id(RID p_region) const = 0; virtual bool region_owns_point(RID p_region, const Vector2 &p_point) const = 0; /// Set the map of this region. - virtual void region_set_map(RID p_region, RID p_map) const = 0; + virtual void region_set_map(RID p_region, RID p_map) = 0; virtual RID region_get_map(RID p_region) const = 0; /// Set the region's layers - virtual void region_set_navigation_layers(RID p_region, uint32_t p_navigation_layers) const = 0; + virtual void region_set_navigation_layers(RID p_region, uint32_t p_navigation_layers) = 0; virtual uint32_t region_get_navigation_layers(RID p_region) const = 0; /// Set the global transformation of this region. - virtual void region_set_transform(RID p_region, Transform2D p_transform) const = 0; + virtual void region_set_transform(RID p_region, Transform2D p_transform) = 0; /// Set the navigation poly of this region. - virtual void region_set_navpoly(RID p_region, Ref p_nav_mesh) const = 0; + virtual void region_set_navpoly(RID p_region, Ref p_nav_mesh) = 0; /// Get a list of a region's connection to other regions. virtual int region_get_connections_count(RID p_region) const = 0; @@ -145,45 +141,45 @@ public: virtual Vector2 region_get_connection_pathway_end(RID p_region, int p_connection_id) const = 0; /// Creates a new link between positions in the nav map. - virtual RID link_create() const = 0; + virtual RID link_create() = 0; /// Set the map of this link. - virtual void link_set_map(RID p_link, RID p_map) const = 0; + virtual void link_set_map(RID p_link, RID p_map) = 0; virtual RID link_get_map(RID p_link) const = 0; /// Set whether this link travels in both directions. - virtual void link_set_bidirectional(RID p_link, bool p_bidirectional) const = 0; + virtual void link_set_bidirectional(RID p_link, bool p_bidirectional) = 0; virtual bool link_is_bidirectional(RID p_link) const = 0; /// Set the link's layers. - virtual void link_set_navigation_layers(RID p_link, uint32_t p_navigation_layers) const = 0; + virtual void link_set_navigation_layers(RID p_link, uint32_t p_navigation_layers) = 0; virtual uint32_t link_get_navigation_layers(RID p_link) const = 0; /// Set the start position of the link. - virtual void link_set_start_position(RID p_link, Vector2 p_position) const = 0; + virtual void link_set_start_position(RID p_link, Vector2 p_position) = 0; virtual Vector2 link_get_start_position(RID p_link) const = 0; /// Set the end position of the link. - virtual void link_set_end_position(RID p_link, Vector2 p_position) const = 0; + virtual void link_set_end_position(RID p_link, Vector2 p_position) = 0; virtual Vector2 link_get_end_position(RID p_link) const = 0; /// Set the enter cost of the link. - virtual void link_set_enter_cost(RID p_link, real_t p_enter_cost) const = 0; + virtual void link_set_enter_cost(RID p_link, real_t p_enter_cost) = 0; virtual real_t link_get_enter_cost(RID p_link) const = 0; /// Set the travel cost of the link. - virtual void link_set_travel_cost(RID p_link, real_t p_travel_cost) const = 0; + virtual void link_set_travel_cost(RID p_link, real_t p_travel_cost) = 0; virtual real_t link_get_travel_cost(RID p_link) const = 0; /// Set the node which manages this link. - virtual void link_set_owner_id(RID p_link, ObjectID p_owner_id) const = 0; + virtual void link_set_owner_id(RID p_link, ObjectID p_owner_id) = 0; virtual ObjectID link_get_owner_id(RID p_link) const = 0; /// Creates the agent. - virtual RID agent_create() const = 0; + virtual RID agent_create() = 0; /// Put the agent in the map. - virtual void agent_set_map(RID p_agent, RID p_map) const = 0; + virtual void agent_set_map(RID p_agent, RID p_map) = 0; virtual RID agent_get_map(RID p_agent) const = 0; /// The maximum distance (center point to @@ -193,7 +189,7 @@ public: /// time of the simulation. If the number is too /// low, the simulation will not be safe. /// Must be non-negative. - virtual void agent_set_neighbor_dist(RID p_agent, real_t p_dist) const = 0; + virtual void agent_set_neighbor_dist(RID p_agent, real_t p_dist) = 0; /// The maximum number of other agents this /// agent takes into account in the navigation. @@ -201,7 +197,7 @@ public: /// running time of the simulation. If the /// number is too low, the simulation will not /// be safe. - virtual void agent_set_max_neighbors(RID p_agent, int p_count) const = 0; + virtual void agent_set_max_neighbors(RID p_agent, int p_count) = 0; /// The minimal amount of time for which this /// agent's velocities that are computed by the @@ -211,36 +207,36 @@ public: /// other agents, but the less freedom this /// agent has in choosing its velocities. /// Must be positive. - virtual void agent_set_time_horizon(RID p_agent, real_t p_time) const = 0; + virtual void agent_set_time_horizon(RID p_agent, real_t p_time) = 0; /// The radius of this agent. /// Must be non-negative. - virtual void agent_set_radius(RID p_agent, real_t p_radius) const = 0; + virtual void agent_set_radius(RID p_agent, real_t p_radius) = 0; /// The maximum speed of this agent. /// Must be non-negative. - virtual void agent_set_max_speed(RID p_agent, real_t p_max_speed) const = 0; + virtual void agent_set_max_speed(RID p_agent, real_t p_max_speed) = 0; /// Current velocity of the agent - virtual void agent_set_velocity(RID p_agent, Vector2 p_velocity) const = 0; + virtual void agent_set_velocity(RID p_agent, Vector2 p_velocity) = 0; /// The new target velocity. - virtual void agent_set_target_velocity(RID p_agent, Vector2 p_velocity) const = 0; + virtual void agent_set_target_velocity(RID p_agent, Vector2 p_velocity) = 0; /// Position of the agent in world space. - virtual void agent_set_position(RID p_agent, Vector2 p_position) const = 0; + virtual void agent_set_position(RID p_agent, Vector2 p_position) = 0; /// Agent ignore the Y axis and avoid collisions by moving only on the horizontal plane - virtual void agent_set_ignore_y(RID p_agent, bool p_ignore) const = 0; + virtual void agent_set_ignore_y(RID p_agent, bool p_ignore) = 0; /// Returns true if the map got changed the previous frame. virtual bool agent_is_map_changed(RID p_agent) const = 0; /// Callback called at the end of the RVO process - virtual void agent_set_callback(RID p_agent, ObjectID p_object_id, StringName p_method, Variant p_udata = Variant()) const = 0; + virtual void agent_set_callback(RID p_agent, ObjectID p_object_id, StringName p_method, Variant p_udata = Variant()) = 0; /// Destroy the `RID` - virtual void free(RID p_object) const = 0; + virtual void free(RID p_object) = 0; /// Returns a customized navigation path using a query parameters object void query_path(const Ref &p_query_parameters, Ref p_query_result) const; diff --git a/servers/navigation_server.cpp b/servers/navigation_server.cpp index e5b756817..abdbda0ff 100644 --- a/servers/navigation_server.cpp +++ b/servers/navigation_server.cpp @@ -161,11 +161,7 @@ void NavigationServer::_bind_methods() { #endif // DEBUG_ENABLED } -const NavigationServer *NavigationServer::get_singleton() { - return singleton; -} - -NavigationServer *NavigationServer::get_singleton_mut() { +NavigationServer *NavigationServer::get_singleton() { return singleton; } diff --git a/servers/navigation_server.h b/servers/navigation_server.h index 9a30252ae..b450a0353 100644 --- a/servers/navigation_server.h +++ b/servers/navigation_server.h @@ -57,31 +57,27 @@ protected: static void _bind_methods(); public: - /// Thread safe, can be used across many threads. - static const NavigationServer *get_singleton(); - - /// MUST be used in single thread! - static NavigationServer *get_singleton_mut(); + static NavigationServer *get_singleton(); virtual Array get_maps() const = 0; /// Create a new map. - virtual RID map_create() const = 0; + virtual RID map_create() = 0; /// Set map active. - virtual void map_set_active(RID p_map, bool p_active) const = 0; + virtual void map_set_active(RID p_map, bool p_active) = 0; /// Returns true if the map is active. virtual bool map_is_active(RID p_map) const = 0; /// Set the map UP direction. - virtual void map_set_up(RID p_map, Vector3 p_up) const = 0; + virtual void map_set_up(RID p_map, Vector3 p_up) = 0; /// Returns the map UP direction. virtual Vector3 map_get_up(RID p_map) const = 0; /// Set the map cell size used to weld the navigation mesh polygons. - virtual void map_set_cell_size(RID p_map, real_t p_cell_size) const = 0; + virtual void map_set_cell_size(RID p_map, real_t p_cell_size) = 0; /// Returns the map cell size. virtual real_t map_get_cell_size(RID p_map) const = 0; @@ -90,19 +86,19 @@ public: virtual bool map_get_use_edge_connections(RID p_map) const = 0; /// Set the map cell height used to weld the navigation mesh polygons. - virtual void map_set_cell_height(RID p_map, real_t p_cell_height) const = 0; + virtual void map_set_cell_height(RID p_map, real_t p_cell_height) = 0; /// Returns the map cell height. virtual real_t map_get_cell_height(RID p_map) const = 0; /// Set the map edge connection margin used to weld the compatible region edges. - virtual void map_set_edge_connection_margin(RID p_map, real_t p_connection_margin) const = 0; + virtual void map_set_edge_connection_margin(RID p_map, real_t p_connection_margin) = 0; /// Returns the edge connection margin of this map. virtual real_t map_get_edge_connection_margin(RID p_map) const = 0; /// Set the map link connection radius used to attach links to the nav mesh. - virtual void map_set_link_connection_radius(RID p_map, real_t p_connection_radius) const = 0; + virtual void map_set_link_connection_radius(RID p_map, real_t p_connection_radius) = 0; /// Returns the link connection radius of this map. virtual real_t map_get_link_connection_radius(RID p_map) const = 0; @@ -122,38 +118,38 @@ public: virtual void map_force_update(RID p_map) = 0; /// Creates a new region. - virtual RID region_create() const = 0; + virtual RID region_create() = 0; virtual void region_set_use_edge_connections(RID p_region, bool p_enabled) = 0; virtual bool region_get_use_edge_connections(RID p_region) const = 0; /// Set the enter_cost of a region - virtual void region_set_enter_cost(RID p_region, real_t p_enter_cost) const = 0; + virtual void region_set_enter_cost(RID p_region, real_t p_enter_cost) = 0; virtual real_t region_get_enter_cost(RID p_region) const = 0; /// Set the travel_cost of a region - virtual void region_set_travel_cost(RID p_region, real_t p_travel_cost) const = 0; + virtual void region_set_travel_cost(RID p_region, real_t p_travel_cost) = 0; virtual real_t region_get_travel_cost(RID p_region) const = 0; /// Set the node which manages this region. - virtual void region_set_owner_id(RID p_region, ObjectID p_owner_id) const = 0; + virtual void region_set_owner_id(RID p_region, ObjectID p_owner_id) = 0; virtual ObjectID region_get_owner_id(RID p_region) const = 0; virtual bool region_owns_point(RID p_region, const Vector3 &p_point) const = 0; /// Set the map of this region. - virtual void region_set_map(RID p_region, RID p_map) const = 0; + virtual void region_set_map(RID p_region, RID p_map) = 0; virtual RID region_get_map(RID p_region) const = 0; /// Set the region's layers - virtual void region_set_navigation_layers(RID p_region, uint32_t p_navigation_layers) const = 0; + virtual void region_set_navigation_layers(RID p_region, uint32_t p_navigation_layers) = 0; virtual uint32_t region_get_navigation_layers(RID p_region) const = 0; /// Set the global transformation of this region. - virtual void region_set_transform(RID p_region, Transform p_transform) const = 0; + virtual void region_set_transform(RID p_region, Transform p_transform) = 0; /// Set the navigation mesh of this region. - virtual void region_set_navmesh(RID p_region, Ref p_nav_mesh) const = 0; + virtual void region_set_navmesh(RID p_region, Ref p_nav_mesh) = 0; /// Get a list of a region's connection to other regions. virtual int region_get_connections_count(RID p_region) const = 0; @@ -161,45 +157,45 @@ public: virtual Vector3 region_get_connection_pathway_end(RID p_region, int p_connection_id) const = 0; /// Creates a new link between positions in the nav map. - virtual RID link_create() const = 0; + virtual RID link_create() = 0; /// Set the map of this link. - virtual void link_set_map(RID p_link, RID p_map) const = 0; + virtual void link_set_map(RID p_link, RID p_map) = 0; virtual RID link_get_map(RID p_link) const = 0; /// Set whether this link travels in both directions. - virtual void link_set_bidirectional(RID p_link, bool p_bidirectional) const = 0; + virtual void link_set_bidirectional(RID p_link, bool p_bidirectional) = 0; virtual bool link_is_bidirectional(RID p_link) const = 0; /// Set the link's layers. - virtual void link_set_navigation_layers(RID p_link, uint32_t p_navigation_layers) const = 0; + virtual void link_set_navigation_layers(RID p_link, uint32_t p_navigation_layers) = 0; virtual uint32_t link_get_navigation_layers(RID p_link) const = 0; /// Set the start position of the link. - virtual void link_set_start_position(RID p_link, Vector3 p_position) const = 0; + virtual void link_set_start_position(RID p_link, Vector3 p_position) = 0; virtual Vector3 link_get_start_position(RID p_link) const = 0; /// Set the end position of the link. - virtual void link_set_end_position(RID p_link, Vector3 p_position) const = 0; + virtual void link_set_end_position(RID p_link, Vector3 p_position) = 0; virtual Vector3 link_get_end_position(RID p_link) const = 0; /// Set the enter cost of the link. - virtual void link_set_enter_cost(RID p_link, real_t p_enter_cost) const = 0; + virtual void link_set_enter_cost(RID p_link, real_t p_enter_cost) = 0; virtual real_t link_get_enter_cost(RID p_link) const = 0; /// Set the travel cost of the link. - virtual void link_set_travel_cost(RID p_link, real_t p_travel_cost) const = 0; + virtual void link_set_travel_cost(RID p_link, real_t p_travel_cost) = 0; virtual real_t link_get_travel_cost(RID p_link) const = 0; /// Set the node which manages this link. - virtual void link_set_owner_id(RID p_link, ObjectID p_owner_id) const = 0; + virtual void link_set_owner_id(RID p_link, ObjectID p_owner_id) = 0; virtual ObjectID link_get_owner_id(RID p_link) const = 0; /// Creates the agent. - virtual RID agent_create() const = 0; + virtual RID agent_create() = 0; /// Put the agent in the map. - virtual void agent_set_map(RID p_agent, RID p_map) const = 0; + virtual void agent_set_map(RID p_agent, RID p_map) = 0; virtual RID agent_get_map(RID p_agent) const = 0; /// The maximum distance (center point to @@ -209,7 +205,7 @@ public: /// time of the simulation. If the number is too /// low, the simulation will not be safe. /// Must be non-negative. - virtual void agent_set_neighbor_dist(RID p_agent, real_t p_dist) const = 0; + virtual void agent_set_neighbor_dist(RID p_agent, real_t p_dist) = 0; /// The maximum number of other agents this /// agent takes into account in the navigation. @@ -217,7 +213,7 @@ public: /// running time of the simulation. If the /// number is too low, the simulation will not /// be safe. - virtual void agent_set_max_neighbors(RID p_agent, int p_count) const = 0; + virtual void agent_set_max_neighbors(RID p_agent, int p_count) = 0; /// The minimal amount of time for which this /// agent's velocities that are computed by the @@ -227,39 +223,39 @@ public: /// other agents, but the less freedom this /// agent has in choosing its velocities. /// Must be positive. - virtual void agent_set_time_horizon(RID p_agent, real_t p_time) const = 0; + virtual void agent_set_time_horizon(RID p_agent, real_t p_time) = 0; /// The radius of this agent. /// Must be non-negative. - virtual void agent_set_radius(RID p_agent, real_t p_radius) const = 0; + virtual void agent_set_radius(RID p_agent, real_t p_radius) = 0; /// The maximum speed of this agent. /// Must be non-negative. - virtual void agent_set_max_speed(RID p_agent, real_t p_max_speed) const = 0; + virtual void agent_set_max_speed(RID p_agent, real_t p_max_speed) = 0; /// Current velocity of the agent - virtual void agent_set_velocity(RID p_agent, Vector3 p_velocity) const = 0; + virtual void agent_set_velocity(RID p_agent, Vector3 p_velocity) = 0; /// The new target velocity. - virtual void agent_set_target_velocity(RID p_agent, Vector3 p_velocity) const = 0; + virtual void agent_set_target_velocity(RID p_agent, Vector3 p_velocity) = 0; /// Position of the agent in world space. - virtual void agent_set_position(RID p_agent, Vector3 p_position) const = 0; + virtual void agent_set_position(RID p_agent, Vector3 p_position) = 0; /// Agent ignore the Y axis and avoid collisions by moving only on the horizontal plane - virtual void agent_set_ignore_y(RID p_agent, bool p_ignore) const = 0; + virtual void agent_set_ignore_y(RID p_agent, bool p_ignore) = 0; /// Returns true if the map got changed the previous frame. virtual bool agent_is_map_changed(RID p_agent) const = 0; /// Callback called at the end of the RVO process - virtual void agent_set_callback(RID p_agent, ObjectID p_object_id, StringName p_method, Variant p_udata = Variant()) const = 0; + virtual void agent_set_callback(RID p_agent, ObjectID p_object_id, StringName p_method, Variant p_udata = Variant()) = 0; /// Destroy the `RID` - virtual void free(RID p_object) const = 0; + virtual void free(RID p_object) = 0; /// Control activation of this server. - virtual void set_active(bool p_active) const = 0; + virtual void set_active(bool p_active) = 0; /// Process the collision avoidance agents. /// The result of this process is needed by the physics server, diff --git a/servers/register_server_types.cpp b/servers/register_server_types.cpp index a7f57d3ec..ff0d06526 100644 --- a/servers/register_server_types.cpp +++ b/servers/register_server_types.cpp @@ -225,6 +225,6 @@ void register_server_singletons() { Engine::get_singleton()->add_singleton(Engine::Singleton("AudioServer", AudioServer::get_singleton())); Engine::get_singleton()->add_singleton(Engine::Singleton("PhysicsServer", PhysicsServer::get_singleton())); Engine::get_singleton()->add_singleton(Engine::Singleton("Physics2DServer", Physics2DServer::get_singleton())); - Engine::get_singleton()->add_singleton(Engine::Singleton("NavigationServer", NavigationServer::get_singleton_mut())); - Engine::get_singleton()->add_singleton(Engine::Singleton("Navigation2DServer", Navigation2DServer::get_singleton_mut())); + Engine::get_singleton()->add_singleton(Engine::Singleton("NavigationServer", NavigationServer::get_singleton())); + Engine::get_singleton()->add_singleton(Engine::Singleton("Navigation2DServer", Navigation2DServer::get_singleton())); }