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
a0715b30f9
This commit is contained in:
Relintai 2023-06-09 22:03:42 +02:00
parent 6384b9624f
commit 8b18898609
25 changed files with 445 additions and 474 deletions

View File

@ -17,7 +17,7 @@
<link title="2D Navigation Demo">https://godotengine.org/asset-library/asset/117</link> <link title="2D Navigation Demo">https://godotengine.org/asset-library/asset/117</link>
</tutorials> </tutorials>
<methods> <methods>
<method name="agent_create" qualifiers="const"> <method name="agent_create">
<return type="RID" /> <return type="RID" />
<description> <description>
Creates the agent. Creates the agent.
@ -37,7 +37,7 @@
Returns [code]true[/code] if the map got changed the previous frame. Returns [code]true[/code] if the map got changed the previous frame.
</description> </description>
</method> </method>
<method name="agent_set_callback" qualifiers="const"> <method name="agent_set_callback">
<return type="void" /> <return type="void" />
<argument index="0" name="agent" type="RID" /> <argument index="0" name="agent" type="RID" />
<argument index="1" name="object_id" type="int" /> <argument index="1" name="object_id" type="int" />
@ -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]. [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].
</description> </description>
</method> </method>
<method name="agent_set_map" qualifiers="const"> <method name="agent_set_map">
<return type="void" /> <return type="void" />
<argument index="0" name="agent" type="RID" /> <argument index="0" name="agent" type="RID" />
<argument index="1" name="map" type="RID" /> <argument index="1" name="map" type="RID" />
@ -56,7 +56,7 @@
Puts the agent in the map. Puts the agent in the map.
</description> </description>
</method> </method>
<method name="agent_set_max_neighbors" qualifiers="const"> <method name="agent_set_max_neighbors">
<return type="void" /> <return type="void" />
<argument index="0" name="agent" type="RID" /> <argument index="0" name="agent" type="RID" />
<argument index="1" name="count" type="int" /> <argument index="1" name="count" type="int" />
@ -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. 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.
</description> </description>
</method> </method>
<method name="agent_set_max_speed" qualifiers="const"> <method name="agent_set_max_speed">
<return type="void" /> <return type="void" />
<argument index="0" name="agent" type="RID" /> <argument index="0" name="agent" type="RID" />
<argument index="1" name="max_speed" type="float" /> <argument index="1" name="max_speed" type="float" />
@ -72,7 +72,7 @@
Sets the maximum speed of the agent. Must be positive. Sets the maximum speed of the agent. Must be positive.
</description> </description>
</method> </method>
<method name="agent_set_neighbor_dist" qualifiers="const"> <method name="agent_set_neighbor_dist">
<return type="void" /> <return type="void" />
<argument index="0" name="agent" type="RID" /> <argument index="0" name="agent" type="RID" />
<argument index="1" name="dist" type="float" /> <argument index="1" name="dist" type="float" />
@ -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. 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.
</description> </description>
</method> </method>
<method name="agent_set_position" qualifiers="const"> <method name="agent_set_position">
<return type="void" /> <return type="void" />
<argument index="0" name="agent" type="RID" /> <argument index="0" name="agent" type="RID" />
<argument index="1" name="position" type="Vector2" /> <argument index="1" name="position" type="Vector2" />
@ -88,7 +88,7 @@
Sets the position of the agent in world space. Sets the position of the agent in world space.
</description> </description>
</method> </method>
<method name="agent_set_radius" qualifiers="const"> <method name="agent_set_radius">
<return type="void" /> <return type="void" />
<argument index="0" name="agent" type="RID" /> <argument index="0" name="agent" type="RID" />
<argument index="1" name="radius" type="float" /> <argument index="1" name="radius" type="float" />
@ -96,7 +96,7 @@
Sets the radius of the agent. Sets the radius of the agent.
</description> </description>
</method> </method>
<method name="agent_set_target_velocity" qualifiers="const"> <method name="agent_set_target_velocity">
<return type="void" /> <return type="void" />
<argument index="0" name="agent" type="RID" /> <argument index="0" name="agent" type="RID" />
<argument index="1" name="target_velocity" type="Vector2" /> <argument index="1" name="target_velocity" type="Vector2" />
@ -104,7 +104,7 @@
Sets the new target velocity. Sets the new target velocity.
</description> </description>
</method> </method>
<method name="agent_set_time_horizon" qualifiers="const"> <method name="agent_set_time_horizon">
<return type="void" /> <return type="void" />
<argument index="0" name="agent" type="RID" /> <argument index="0" name="agent" type="RID" />
<argument index="1" name="time" type="float" /> <argument index="1" name="time" type="float" />
@ -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. 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.
</description> </description>
</method> </method>
<method name="agent_set_velocity" qualifiers="const"> <method name="agent_set_velocity">
<return type="void" /> <return type="void" />
<argument index="0" name="agent" type="RID" /> <argument index="0" name="agent" type="RID" />
<argument index="1" name="velocity" type="Vector2" /> <argument index="1" name="velocity" type="Vector2" />
@ -120,7 +120,7 @@
Sets the current velocity of the agent. Sets the current velocity of the agent.
</description> </description>
</method> </method>
<method name="free_rid" qualifiers="const"> <method name="free_rid">
<return type="void" /> <return type="void" />
<argument index="0" name="rid" type="RID" /> <argument index="0" name="rid" type="RID" />
<description> <description>
@ -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. 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.
</description> </description>
</method> </method>
<method name="link_create" qualifiers="const"> <method name="link_create">
<return type="RID" /> <return type="RID" />
<description> <description>
Create a new link between two positions on a map. 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. Returns whether this [code]link[/code] can be travelled in both directions.
</description> </description>
</method> </method>
<method name="link_set_bidirectional" qualifiers="const"> <method name="link_set_bidirectional">
<return type="void" /> <return type="void" />
<param index="0" name="link" type="RID" /> <param index="0" name="link" type="RID" />
<param index="1" name="bidirectional" type="bool" /> <param index="1" name="bidirectional" type="bool" />
@ -209,7 +209,7 @@
Sets whether this [code]link[/code] can be travelled in both directions. Sets whether this [code]link[/code] can be travelled in both directions.
</description> </description>
</method> </method>
<method name="link_set_end_position" qualifiers="const"> <method name="link_set_end_position">
<return type="void" /> <return type="void" />
<param index="0" name="link" type="RID" /> <param index="0" name="link" type="RID" />
<param index="1" name="position" type="Vector2" /> <param index="1" name="position" type="Vector2" />
@ -217,7 +217,7 @@
Sets the exit position for the [code]link[/code]. Sets the exit position for the [code]link[/code].
</description> </description>
</method> </method>
<method name="link_set_enter_cost" qualifiers="const"> <method name="link_set_enter_cost">
<return type="void" /> <return type="void" />
<param index="0" name="link" type="RID" /> <param index="0" name="link" type="RID" />
<param index="1" name="enter_cost" type="float" /> <param index="1" name="enter_cost" type="float" />
@ -225,7 +225,7 @@
Sets the [code]enter_cost[/code] for this [code]link[/code]. Sets the [code]enter_cost[/code] for this [code]link[/code].
</description> </description>
</method> </method>
<method name="link_set_map" qualifiers="const"> <method name="link_set_map">
<return type="void" /> <return type="void" />
<param index="0" name="link" type="RID" /> <param index="0" name="link" type="RID" />
<param index="1" name="map" type="RID" /> <param index="1" name="map" type="RID" />
@ -233,7 +233,7 @@
Sets the navigation map [RID] for the link. Sets the navigation map [RID] for the link.
</description> </description>
</method> </method>
<method name="link_set_navigation_layers" qualifiers="const"> <method name="link_set_navigation_layers">
<return type="void" /> <return type="void" />
<param index="0" name="link" type="RID" /> <param index="0" name="link" type="RID" />
<param index="1" name="navigation_layers" type="int" /> <param index="1" name="navigation_layers" type="int" />
@ -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]). Set the links's navigation layers. This allows selecting links from a path request (when using [method NavigationServer2D.map_get_path]).
</description> </description>
</method> </method>
<method name="link_set_owner_id" qualifiers="const"> <method name="link_set_owner_id">
<return type="void" /> <return type="void" />
<param index="0" name="link" type="RID" /> <param index="0" name="link" type="RID" />
<param index="1" name="owner_id" type="int" /> <param index="1" name="owner_id" type="int" />
@ -249,7 +249,7 @@
Set the [code]ObjectID[/code] of the object which manages this link. Set the [code]ObjectID[/code] of the object which manages this link.
</description> </description>
</method> </method>
<method name="link_set_start_position" qualifiers="const"> <method name="link_set_start_position">
<return type="void" /> <return type="void" />
<param index="0" name="link" type="RID" /> <param index="0" name="link" type="RID" />
<param index="1" name="position" type="Vector2" /> <param index="1" name="position" type="Vector2" />
@ -257,7 +257,7 @@
Sets the entry position for this [code]link[/code]. Sets the entry position for this [code]link[/code].
</description> </description>
</method> </method>
<method name="link_set_travel_cost" qualifiers="const"> <method name="link_set_travel_cost">
<return type="void" /> <return type="void" />
<param index="0" name="link" type="RID" /> <param index="0" name="link" type="RID" />
<param index="1" name="travel_cost" type="float" /> <param index="1" name="travel_cost" type="float" />
@ -265,7 +265,7 @@
Sets the [code]travel_cost[/code] for this [code]link[/code]. Sets the [code]travel_cost[/code] for this [code]link[/code].
</description> </description>
</method> </method>
<method name="map_create" qualifiers="const"> <method name="map_create">
<return type="RID" /> <return type="RID" />
<description> <description>
Create a new map. Create a new map.
@ -371,7 +371,7 @@
Returns [code]true[/code] if the map is active. Returns [code]true[/code] if the map is active.
</description> </description>
</method> </method>
<method name="map_set_active" qualifiers="const"> <method name="map_set_active">
<return type="void" /> <return type="void" />
<argument index="0" name="map" type="RID" /> <argument index="0" name="map" type="RID" />
<argument index="1" name="active" type="bool" /> <argument index="1" name="active" type="bool" />
@ -379,7 +379,7 @@
Sets the map active. Sets the map active.
</description> </description>
</method> </method>
<method name="map_set_cell_height" qualifiers="const"> <method name="map_set_cell_height">
<return type="void" /> <return type="void" />
<argument index="0" name="map" type="RID" /> <argument index="0" name="map" type="RID" />
<argument index="1" name="cell_height" type="float" /> <argument index="1" name="cell_height" type="float" />
@ -387,7 +387,7 @@
Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/b] Currently not implemented. Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/b] Currently not implemented.
</description> </description>
</method> </method>
<method name="map_set_cell_size" qualifiers="const"> <method name="map_set_cell_size">
<return type="void" /> <return type="void" />
<argument index="0" name="map" type="RID" /> <argument index="0" name="map" type="RID" />
<argument index="1" name="cell_size" type="float" /> <argument index="1" name="cell_size" type="float" />
@ -395,7 +395,7 @@
Set the map cell size used to weld the navigation mesh polygons. Set the map cell size used to weld the navigation mesh polygons.
</description> </description>
</method> </method>
<method name="map_set_edge_connection_margin" qualifiers="const"> <method name="map_set_edge_connection_margin">
<return type="void" /> <return type="void" />
<argument index="0" name="map" type="RID" /> <argument index="0" name="map" type="RID" />
<argument index="1" name="margin" type="float" /> <argument index="1" name="margin" type="float" />
@ -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. 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.
</description> </description>
</method> </method>
<method name="map_set_link_connection_radius" qualifiers="const"> <method name="map_set_link_connection_radius">
<return type="void" /> <return type="void" />
<param index="0" name="map" type="RID" /> <param index="0" name="map" type="RID" />
<param index="1" name="radius" type="float" /> <param index="1" name="radius" type="float" />
@ -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. 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.
</description> </description>
</method> </method>
<method name="region_create" qualifiers="const"> <method name="region_create">
<return type="RID" /> <return type="RID" />
<description> <description>
Creates a new region. 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. [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.
</description> </description>
</method> </method>
<method name="region_set_enter_cost" qualifiers="const"> <method name="region_set_enter_cost">
<return type="void" /> <return type="void" />
<argument index="0" name="region" type="RID" /> <argument index="0" name="region" type="RID" />
<argument index="1" name="enter_cost" type="float" /> <argument index="1" name="enter_cost" type="float" />
@ -516,7 +516,7 @@
Sets the [code]enter_cost[/code] for this [code]region[/code]. Sets the [code]enter_cost[/code] for this [code]region[/code].
</description> </description>
</method> </method>
<method name="region_set_map" qualifiers="const"> <method name="region_set_map">
<return type="void" /> <return type="void" />
<argument index="0" name="region" type="RID" /> <argument index="0" name="region" type="RID" />
<argument index="1" name="map" type="RID" /> <argument index="1" name="map" type="RID" />
@ -524,7 +524,7 @@
Sets the map for the region. Sets the map for the region.
</description> </description>
</method> </method>
<method name="region_set_navigation_layers" qualifiers="const"> <method name="region_set_navigation_layers">
<return type="void" /> <return type="void" />
<argument index="0" name="region" type="RID" /> <argument index="0" name="region" type="RID" />
<argument index="1" name="navigation_layers" type="int" /> <argument index="1" name="navigation_layers" type="int" />
@ -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]). Set the region's navigation layers. This allows selecting regions from a path request (when using [method Navigation2DServer.map_get_path]).
</description> </description>
</method> </method>
<method name="region_set_navpoly" qualifiers="const"> <method name="region_set_navpoly">
<return type="void" /> <return type="void" />
<argument index="0" name="region" type="RID" /> <argument index="0" name="region" type="RID" />
<argument index="1" name="nav_poly" type="NavigationPolygon" /> <argument index="1" name="nav_poly" type="NavigationPolygon" />
@ -540,7 +540,7 @@
Sets the navigation mesh for the region. Sets the navigation mesh for the region.
</description> </description>
</method> </method>
<method name="region_set_owner_id" qualifiers="const"> <method name="region_set_owner_id">
<return type="void" /> <return type="void" />
<param index="0" name="region" type="RID" /> <param index="0" name="region" type="RID" />
<param index="1" name="owner_id" type="int" /> <param index="1" name="owner_id" type="int" />
@ -548,7 +548,7 @@
Set the [code]ObjectID[/code] of the object which manages this region. Set the [code]ObjectID[/code] of the object which manages this region.
</description> </description>
</method> </method>
<method name="region_set_transform" qualifiers="const"> <method name="region_set_transform">
<return type="void" /> <return type="void" />
<argument index="0" name="region" type="RID" /> <argument index="0" name="region" type="RID" />
<argument index="1" name="transform" type="Transform2D" /> <argument index="1" name="transform" type="Transform2D" />
@ -556,7 +556,7 @@
Sets the global transformation for the region. Sets the global transformation for the region.
</description> </description>
</method> </method>
<method name="region_set_travel_cost" qualifiers="const"> <method name="region_set_travel_cost">
<return type="void" /> <return type="void" />
<argument index="0" name="region" type="RID" /> <argument index="0" name="region" type="RID" />
<argument index="1" name="travel_cost" type="float" /> <argument index="1" name="travel_cost" type="float" />

View File

@ -17,7 +17,7 @@
<link title="3D Navmesh Demo">https://godotengine.org/asset-library/asset/124</link> <link title="3D Navmesh Demo">https://godotengine.org/asset-library/asset/124</link>
</tutorials> </tutorials>
<methods> <methods>
<method name="agent_create" qualifiers="const"> <method name="agent_create">
<return type="RID" /> <return type="RID" />
<description> <description>
Creates the agent. Creates the agent.
@ -37,7 +37,7 @@
Returns [code]true[/code] if the map got changed the previous frame. Returns [code]true[/code] if the map got changed the previous frame.
</description> </description>
</method> </method>
<method name="agent_set_callback" qualifiers="const"> <method name="agent_set_callback">
<return type="void" /> <return type="void" />
<argument index="0" name="agent" type="RID" /> <argument index="0" name="agent" type="RID" />
<argument index="1" name="object_id" type="int" /> <argument index="1" name="object_id" type="int" />
@ -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]. [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].
</description> </description>
</method> </method>
<method name="agent_set_map" qualifiers="const"> <method name="agent_set_map">
<return type="void" /> <return type="void" />
<argument index="0" name="agent" type="RID" /> <argument index="0" name="agent" type="RID" />
<argument index="1" name="map" type="RID" /> <argument index="1" name="map" type="RID" />
@ -56,7 +56,7 @@
Puts the agent in the map. Puts the agent in the map.
</description> </description>
</method> </method>
<method name="agent_set_max_neighbors" qualifiers="const"> <method name="agent_set_max_neighbors">
<return type="void" /> <return type="void" />
<argument index="0" name="agent" type="RID" /> <argument index="0" name="agent" type="RID" />
<argument index="1" name="count" type="int" /> <argument index="1" name="count" type="int" />
@ -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. 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.
</description> </description>
</method> </method>
<method name="agent_set_max_speed" qualifiers="const"> <method name="agent_set_max_speed">
<return type="void" /> <return type="void" />
<argument index="0" name="agent" type="RID" /> <argument index="0" name="agent" type="RID" />
<argument index="1" name="max_speed" type="float" /> <argument index="1" name="max_speed" type="float" />
@ -72,7 +72,7 @@
Sets the maximum speed of the agent. Must be positive. Sets the maximum speed of the agent. Must be positive.
</description> </description>
</method> </method>
<method name="agent_set_neighbor_dist" qualifiers="const"> <method name="agent_set_neighbor_dist">
<return type="void" /> <return type="void" />
<argument index="0" name="agent" type="RID" /> <argument index="0" name="agent" type="RID" />
<argument index="1" name="dist" type="float" /> <argument index="1" name="dist" type="float" />
@ -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. 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.
</description> </description>
</method> </method>
<method name="agent_set_position" qualifiers="const"> <method name="agent_set_position">
<return type="void" /> <return type="void" />
<argument index="0" name="agent" type="RID" /> <argument index="0" name="agent" type="RID" />
<argument index="1" name="position" type="Vector3" /> <argument index="1" name="position" type="Vector3" />
@ -88,7 +88,7 @@
Sets the position of the agent in world space. Sets the position of the agent in world space.
</description> </description>
</method> </method>
<method name="agent_set_radius" qualifiers="const"> <method name="agent_set_radius">
<return type="void" /> <return type="void" />
<argument index="0" name="agent" type="RID" /> <argument index="0" name="agent" type="RID" />
<argument index="1" name="radius" type="float" /> <argument index="1" name="radius" type="float" />
@ -96,7 +96,7 @@
Sets the radius of the agent. Sets the radius of the agent.
</description> </description>
</method> </method>
<method name="agent_set_target_velocity" qualifiers="const"> <method name="agent_set_target_velocity">
<return type="void" /> <return type="void" />
<argument index="0" name="agent" type="RID" /> <argument index="0" name="agent" type="RID" />
<argument index="1" name="target_velocity" type="Vector3" /> <argument index="1" name="target_velocity" type="Vector3" />
@ -104,7 +104,7 @@
Sets the new target velocity. Sets the new target velocity.
</description> </description>
</method> </method>
<method name="agent_set_time_horizon" qualifiers="const"> <method name="agent_set_time_horizon">
<return type="void" /> <return type="void" />
<argument index="0" name="agent" type="RID" /> <argument index="0" name="agent" type="RID" />
<argument index="1" name="time" type="float" /> <argument index="1" name="time" type="float" />
@ -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. 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.
</description> </description>
</method> </method>
<method name="agent_set_velocity" qualifiers="const"> <method name="agent_set_velocity">
<return type="void" /> <return type="void" />
<argument index="0" name="agent" type="RID" /> <argument index="0" name="agent" type="RID" />
<argument index="1" name="velocity" type="Vector3" /> <argument index="1" name="velocity" type="Vector3" />
@ -120,7 +120,7 @@
Sets the current velocity of the agent. Sets the current velocity of the agent.
</description> </description>
</method> </method>
<method name="free_rid" qualifiers="const"> <method name="free_rid">
<return type="void" /> <return type="void" />
<argument index="0" name="rid" type="RID" /> <argument index="0" name="rid" type="RID" />
<description> <description>
@ -147,7 +147,7 @@
Returns information about the current state of the NavigationServer. See [enum ProcessInfo] for a list of available states. Returns information about the current state of the NavigationServer. See [enum ProcessInfo] for a list of available states.
</description> </description>
</method> </method>
<method name="link_create" qualifiers="const"> <method name="link_create">
<return type="RID" /> <return type="RID" />
<description> <description>
Create a new link between two positions on a map. 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. Returns whether this [code]link[/code] can be travelled in both directions.
</description> </description>
</method> </method>
<method name="link_set_bidirectional" qualifiers="const"> <method name="link_set_bidirectional">
<return type="void" /> <return type="void" />
<param index="0" name="link" type="RID" /> <param index="0" name="link" type="RID" />
<param index="1" name="bidirectional" type="bool" /> <param index="1" name="bidirectional" type="bool" />
@ -217,7 +217,7 @@
Sets whether this [code]link[/code] can be travelled in both directions. Sets whether this [code]link[/code] can be travelled in both directions.
</description> </description>
</method> </method>
<method name="link_set_end_position" qualifiers="const"> <method name="link_set_end_position">
<return type="void" /> <return type="void" />
<param index="0" name="link" type="RID" /> <param index="0" name="link" type="RID" />
<param index="1" name="position" type="Vector3" /> <param index="1" name="position" type="Vector3" />
@ -225,7 +225,7 @@
Sets the exit position for the [code]link[/code]. Sets the exit position for the [code]link[/code].
</description> </description>
</method> </method>
<method name="link_set_enter_cost" qualifiers="const"> <method name="link_set_enter_cost">
<return type="void" /> <return type="void" />
<param index="0" name="link" type="RID" /> <param index="0" name="link" type="RID" />
<param index="1" name="enter_cost" type="float" /> <param index="1" name="enter_cost" type="float" />
@ -233,7 +233,7 @@
Sets the [code]enter_cost[/code] for this [code]link[/code]. Sets the [code]enter_cost[/code] for this [code]link[/code].
</description> </description>
</method> </method>
<method name="link_set_map" qualifiers="const"> <method name="link_set_map">
<return type="void" /> <return type="void" />
<param index="0" name="link" type="RID" /> <param index="0" name="link" type="RID" />
<param index="1" name="map" type="RID" /> <param index="1" name="map" type="RID" />
@ -241,7 +241,7 @@
Sets the navigation map [RID] for the link. Sets the navigation map [RID] for the link.
</description> </description>
</method> </method>
<method name="link_set_navigation_layers" qualifiers="const"> <method name="link_set_navigation_layers">
<return type="void" /> <return type="void" />
<param index="0" name="link" type="RID" /> <param index="0" name="link" type="RID" />
<param index="1" name="navigation_layers" type="int" /> <param index="1" name="navigation_layers" type="int" />
@ -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]). Set the links's navigation layers. This allows selecting links from a path request (when using [method NavigationServer3D.map_get_path]).
</description> </description>
</method> </method>
<method name="link_set_owner_id" qualifiers="const"> <method name="link_set_owner_id">
<return type="void" /> <return type="void" />
<param index="0" name="link" type="RID" /> <param index="0" name="link" type="RID" />
<param index="1" name="owner_id" type="int" /> <param index="1" name="owner_id" type="int" />
@ -257,7 +257,7 @@
Set the [code]ObjectID[/code] of the object which manages this link. Set the [code]ObjectID[/code] of the object which manages this link.
</description> </description>
</method> </method>
<method name="link_set_start_position" qualifiers="const"> <method name="link_set_start_position">
<return type="void" /> <return type="void" />
<param index="0" name="link" type="RID" /> <param index="0" name="link" type="RID" />
<param index="1" name="position" type="Vector3" /> <param index="1" name="position" type="Vector3" />
@ -265,7 +265,7 @@
Sets the entry position for this [code]link[/code]. Sets the entry position for this [code]link[/code].
</description> </description>
</method> </method>
<method name="link_set_travel_cost" qualifiers="const"> <method name="link_set_travel_cost">
<return type="void" /> <return type="void" />
<param index="0" name="link" type="RID" /> <param index="0" name="link" type="RID" />
<param index="1" name="travel_cost" type="float" /> <param index="1" name="travel_cost" type="float" />
@ -273,7 +273,7 @@
Sets the [code]travel_cost[/code] for this [code]link[/code]. Sets the [code]travel_cost[/code] for this [code]link[/code].
</description> </description>
</method> </method>
<method name="map_create" qualifiers="const"> <method name="map_create">
<return type="RID" /> <return type="RID" />
<description> <description>
Create a new map. Create a new map.
@ -404,7 +404,7 @@
Returns [code]true[/code] if the map is active. Returns [code]true[/code] if the map is active.
</description> </description>
</method> </method>
<method name="map_set_active" qualifiers="const"> <method name="map_set_active">
<return type="void" /> <return type="void" />
<argument index="0" name="map" type="RID" /> <argument index="0" name="map" type="RID" />
<argument index="1" name="active" type="bool" /> <argument index="1" name="active" type="bool" />
@ -412,7 +412,7 @@
Sets the map active. Sets the map active.
</description> </description>
</method> </method>
<method name="map_set_cell_height" qualifiers="const"> <method name="map_set_cell_height">
<return type="void" /> <return type="void" />
<argument index="0" name="map" type="RID" /> <argument index="0" name="map" type="RID" />
<argument index="1" name="cell_height" type="float" /> <argument index="1" name="cell_height" type="float" />
@ -420,7 +420,7 @@
Set the map cell height used to weld the navigation mesh polygons. Set the map cell height used to weld the navigation mesh polygons.
</description> </description>
</method> </method>
<method name="map_set_cell_size" qualifiers="const"> <method name="map_set_cell_size">
<return type="void" /> <return type="void" />
<argument index="0" name="map" type="RID" /> <argument index="0" name="map" type="RID" />
<argument index="1" name="cell_size" type="float" /> <argument index="1" name="cell_size" type="float" />
@ -428,7 +428,7 @@
Set the map cell size used to weld the navigation mesh polygons. Set the map cell size used to weld the navigation mesh polygons.
</description> </description>
</method> </method>
<method name="map_set_edge_connection_margin" qualifiers="const"> <method name="map_set_edge_connection_margin">
<return type="void" /> <return type="void" />
<argument index="0" name="map" type="RID" /> <argument index="0" name="map" type="RID" />
<argument index="1" name="margin" type="float" /> <argument index="1" name="margin" type="float" />
@ -436,7 +436,7 @@
Set the map edge connection margin used to weld the compatible region edges. Set the map edge connection margin used to weld the compatible region edges.
</description> </description>
</method> </method>
<method name="map_set_link_connection_radius" qualifiers="const"> <method name="map_set_link_connection_radius">
<return type="void" /> <return type="void" />
<param index="0" name="map" type="RID" /> <param index="0" name="map" type="RID" />
<param index="1" name="radius" type="float" /> <param index="1" name="radius" type="float" />
@ -444,7 +444,7 @@
Set the map's link connection radius used to connect links to navigation polygons. Set the map's link connection radius used to connect links to navigation polygons.
</description> </description>
</method> </method>
<method name="map_set_up" qualifiers="const"> <method name="map_set_up">
<return type="void" /> <return type="void" />
<argument index="0" name="map" type="RID" /> <argument index="0" name="map" type="RID" />
<argument index="1" name="up" type="Vector3" /> <argument index="1" name="up" type="Vector3" />
@ -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. 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.
</description> </description>
</method> </method>
<method name="region_create" qualifiers="const"> <method name="region_create">
<return type="RID" /> <return type="RID" />
<description> <description>
Creates a new region. 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. [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.
</description> </description>
</method> </method>
<method name="region_set_enter_cost" qualifiers="const"> <method name="region_set_enter_cost">
<return type="void" /> <return type="void" />
<argument index="0" name="region" type="RID" /> <argument index="0" name="region" type="RID" />
<argument index="1" name="enter_cost" type="float" /> <argument index="1" name="enter_cost" type="float" />
@ -566,7 +566,7 @@
Sets the [code]enter_cost[/code] for this [code]region[/code]. Sets the [code]enter_cost[/code] for this [code]region[/code].
</description> </description>
</method> </method>
<method name="region_set_map" qualifiers="const"> <method name="region_set_map">
<return type="void" /> <return type="void" />
<argument index="0" name="region" type="RID" /> <argument index="0" name="region" type="RID" />
<argument index="1" name="map" type="RID" /> <argument index="1" name="map" type="RID" />
@ -574,7 +574,7 @@
Sets the map for the region. Sets the map for the region.
</description> </description>
</method> </method>
<method name="region_set_navigation_layers" qualifiers="const"> <method name="region_set_navigation_layers">
<return type="void" /> <return type="void" />
<argument index="0" name="region" type="RID" /> <argument index="0" name="region" type="RID" />
<argument index="1" name="navigation_layers" type="int" /> <argument index="1" name="navigation_layers" type="int" />
@ -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]). Set the region's navigation layers. This allows selecting regions from a path request (when using [method NavigationServer.map_get_path]).
</description> </description>
</method> </method>
<method name="region_set_navmesh" qualifiers="const"> <method name="region_set_navmesh">
<return type="void" /> <return type="void" />
<argument index="0" name="region" type="RID" /> <argument index="0" name="region" type="RID" />
<argument index="1" name="nav_mesh" type="NavigationMesh" /> <argument index="1" name="nav_mesh" type="NavigationMesh" />
@ -590,7 +590,7 @@
Sets the navigation mesh for the region. Sets the navigation mesh for the region.
</description> </description>
</method> </method>
<method name="region_set_owner_id" qualifiers="const"> <method name="region_set_owner_id">
<return type="void" /> <return type="void" />
<param index="0" name="region" type="RID" /> <param index="0" name="region" type="RID" />
<param index="1" name="owner_id" type="int" /> <param index="1" name="owner_id" type="int" />
@ -598,7 +598,7 @@
Set the [code]ObjectID[/code] of the object which manages this region. Set the [code]ObjectID[/code] of the object which manages this region.
</description> </description>
</method> </method>
<method name="region_set_transform" qualifiers="const"> <method name="region_set_transform">
<return type="void" /> <return type="void" />
<argument index="0" name="region" type="RID" /> <argument index="0" name="region" type="RID" />
<argument index="1" name="transform" type="Transform" /> <argument index="1" name="transform" type="Transform" />
@ -606,7 +606,7 @@
Sets the global transformation for the region. Sets the global transformation for the region.
</description> </description>
</method> </method>
<method name="region_set_travel_cost" qualifiers="const"> <method name="region_set_travel_cost">
<return type="void" /> <return type="void" />
<argument index="0" name="region" type="RID" /> <argument index="0" name="region" type="RID" />
<argument index="1" name="travel_cost" type="float" /> <argument index="1" name="travel_cost" type="float" />
@ -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. 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.
</description> </description>
</method> </method>
<method name="set_active" qualifiers="const"> <method name="set_active">
<return type="void" /> <return type="void" />
<argument index="0" name="active" type="bool" /> <argument index="0" name="active" type="bool" />
<description> <description>

View File

@ -5667,16 +5667,16 @@ void EditorNode::_project_settings_changed() {
tree->set_debug_collision_contact_color(GLOBAL_GET("debug/shapes/collision/contact_color")); tree->set_debug_collision_contact_color(GLOBAL_GET("debug/shapes/collision/contact_color"));
#ifdef DEBUG_ENABLED #ifdef DEBUG_ENABLED
NavigationServer::get_singleton_mut()->set_debug_navigation_edge_connection_color(GLOBAL_GET("debug/shapes/navigation/edge_connection_color")); NavigationServer::get_singleton()->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()->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()->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()->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()->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()->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()->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()->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()->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_enable_geometry_face_random_color(GLOBAL_GET("debug/shapes/navigation/enable_geometry_face_random_color"));
#endif // DEBUG_ENABLED #endif // DEBUG_ENABLED
_update_title(); _update_title();

View File

@ -1929,7 +1929,7 @@ bool Main::start() {
if (debug_navigation) { if (debug_navigation) {
sml->set_debug_navigation_hint(true); sml->set_debug_navigation_hint(true);
NavigationServer::get_singleton()->set_active(true); NavigationServer::get_singleton()->set_active(true);
NavigationServer::get_singleton_mut()->set_debug_enabled(true); NavigationServer::get_singleton()->set_debug_enabled(true);
} }
#endif #endif
@ -2360,7 +2360,7 @@ bool Main::iteration() {
break; break;
} }
NavigationServer::get_singleton_mut()->process(frame_slice * time_scale); NavigationServer::get_singleton()->process(frame_slice * time_scale);
message_queue->flush(); message_queue->flush();
PhysicsServer::get_singleton()->step(frame_slice * time_scale); PhysicsServer::get_singleton()->step(frame_slice * time_scale);

View File

@ -35,15 +35,20 @@
#include "scene/resources/navigation_mesh.h" #include "scene/resources/navigation_mesh.h"
#include "servers/navigation_server.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) \ #define FORWARD_0_C(FUNC_NAME) \
PandemoniumNavigation2DServer::FUNC_NAME() \ PandemoniumNavigation2DServer::FUNC_NAME() \
const { \ const { \
return NavigationServer::get_singleton()->FUNC_NAME(); \ return NavigationServer::get_singleton()->FUNC_NAME(); \
} }
#define FORWARD_1(FUNC_NAME, T_0, D_0, CONV_0) \ #define FORWARD_1(FUNC_NAME, T_0, D_0, CONV_0) \
PandemoniumNavigation2DServer::FUNC_NAME(T_0 D_0) { \ PandemoniumNavigation2DServer::FUNC_NAME(T_0 D_0) { \
return NavigationServer::get_singleton_mut()->FUNC_NAME(CONV_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) \ #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))); \ 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) \ #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) { \ 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)); \ 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) \ #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)); \ 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) \ #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) \ PandemoniumNavigation2DServer::FUNC_NAME(T_0 D_0, T_1 D_1, T_2 D_2, T_3 D_3) \
const { \ const { \
@ -197,7 +207,7 @@ void PandemoniumNavigation2DServer::_bind_methods() {
PandemoniumNavigation2DServer::PandemoniumNavigation2DServer() { PandemoniumNavigation2DServer::PandemoniumNavigation2DServer() {
ERR_FAIL_COND_MSG(!NavigationServer::get_singleton(), "The NavigationServer singleton should be initialized before the PandemoniumNavigation2DServer one."); 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() { 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_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); bool FORWARD_1_C(map_is_active, RID, p_map, rid_to_rid);
void PandemoniumNavigation2DServer::map_force_update(RID p_map) { 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); 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); 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); 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); 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); 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); real_t FORWARD_1_C(map_get_link_connection_radius, RID, p_map, rid_to_rid);
Vector<Vector2> 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); Vector<Vector2> 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<Vector2> 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); 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_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); 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); 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); 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); 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); 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); 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(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_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); 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<NavigationPolygon> p_nav_mesh) const { void PandemoniumNavigation2DServer::region_set_navpoly(RID p_region, Ref<NavigationPolygon> p_nav_mesh) {
NavigationServer::get_singleton()->region_set_navmesh(p_region, poly_to_mesh(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_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); 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); 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); 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); 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); 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); 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); 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); 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); 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(); RID agent = NavigationServer::get_singleton()->agent_create();
NavigationServer::get_singleton()->agent_set_ignore_y(agent, true); NavigationServer::get_singleton()->agent_set_ignore_y(agent, true);
return agent; 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); 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::PathQueryResult2D PandemoniumNavigation2DServer::_query_path(const NavigationUtilities::PathQueryParameters2D &p_parameters) const {
NavigationUtilities::PathQueryParameters params; NavigationUtilities::PathQueryParameters params;

View File

@ -49,16 +49,16 @@ public:
virtual Array get_maps() const; virtual Array get_maps() const;
/// Create a new map. /// Create a new map.
virtual RID map_create() const; virtual RID map_create();
/// Set map active. /// 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. /// Returns true if the map is active.
virtual bool map_is_active(RID p_map) const; virtual bool map_is_active(RID p_map) const;
/// Set the map cell size used to weld the navigation mesh polygons. /// 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. /// Returns the map cell size.
virtual real_t map_get_cell_size(RID p_map) const; 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; virtual bool map_get_use_edge_connections(RID p_map) const;
/// Set the map cell height used to weld the navigation mesh polygons. /// 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; virtual real_t map_get_cell_height(RID p_map) const;
/// Set the map edge connection margin used to weld the compatible region edges. /// 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. /// Returns the edge connection margin of this map.
virtual real_t map_get_edge_connection_margin(RID p_map) const; 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. /// 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. /// Returns the link connection radius of this map.
virtual real_t map_get_link_connection_radius(RID p_map) const; 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); virtual void map_force_update(RID p_map);
/// Creates a new region. /// 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 void region_set_use_edge_connections(RID p_region, bool p_enabled);
virtual bool region_get_use_edge_connections(RID p_region) const; virtual bool region_get_use_edge_connections(RID p_region) const;
/// Set the enter_cost of a region /// 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; virtual real_t region_get_enter_cost(RID p_region) const;
/// Set the travel_cost of a region /// 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; virtual real_t region_get_travel_cost(RID p_region) const;
/// Set the node which manages this region. /// 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 ObjectID region_get_owner_id(RID p_region) const;
virtual bool region_owns_point(RID p_region, const Vector2 &p_point) const; virtual bool region_owns_point(RID p_region, const Vector2 &p_point) const;
/// Set the map of this region. /// 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; virtual RID region_get_map(RID p_region) const;
/// Set the region's layers /// 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; virtual uint32_t region_get_navigation_layers(RID p_region) const;
/// Set the global transformation of this region. /// 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. /// Set the navigation poly of this region.
virtual void region_set_navpoly(RID p_region, Ref<NavigationPolygon> p_nav_mesh) const; virtual void region_set_navpoly(RID p_region, Ref<NavigationPolygon> p_nav_mesh);
/// Get a list of a region's connection to other regions. /// Get a list of a region's connection to other regions.
virtual int region_get_connections_count(RID p_region) const; 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; 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. /// 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. /// 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; virtual RID link_get_map(RID p_link) const;
/// Set whether this link travels in both directions. /// 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; virtual bool link_is_bidirectional(RID p_link) const;
/// Set the link's layers. /// 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; virtual uint32_t link_get_navigation_layers(RID p_link) const;
/// Set the start position of the link. /// 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; virtual Vector2 link_get_start_position(RID p_link) const;
/// Set the end position of the link. /// 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; virtual Vector2 link_get_end_position(RID p_link) const;
/// Set the enter cost of the link. /// 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; virtual real_t link_get_enter_cost(RID p_link) const;
/// Set the travel cost of the link. /// 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; virtual real_t link_get_travel_cost(RID p_link) const;
/// Set the node which manages this link. /// 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; virtual ObjectID link_get_owner_id(RID p_link) const;
/// Creates the agent. /// Creates the agent.
virtual RID agent_create() const; virtual RID agent_create();
/// Put the agent in the map. /// 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; virtual RID agent_get_map(RID p_agent) const;
/// The maximum distance (center point to /// The maximum distance (center point to
@ -182,7 +182,7 @@ public:
/// time of the simulation. If the number is too /// time of the simulation. If the number is too
/// low, the simulation will not be safe. /// low, the simulation will not be safe.
/// Must be non-negative. /// 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 /// The maximum number of other agents this
/// agent takes into account in the navigation. /// agent takes into account in the navigation.
@ -190,7 +190,7 @@ public:
/// running time of the simulation. If the /// running time of the simulation. If the
/// number is too low, the simulation will not /// number is too low, the simulation will not
/// be safe. /// 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 /// The minimal amount of time for which this
/// agent's velocities that are computed by the /// agent's velocities that are computed by the
@ -200,36 +200,36 @@ public:
/// other agents, but the less freedom this /// other agents, but the less freedom this
/// agent has in choosing its velocities. /// agent has in choosing its velocities.
/// Must be positive. /// 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. /// The radius of this agent.
/// Must be non-negative. /// 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. /// The maximum speed of this agent.
/// Must be non-negative. /// 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 /// 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. /// 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. /// 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 /// 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. /// Returns true if the map got changed the previous frame.
virtual bool agent_is_map_changed(RID p_agent) const; virtual bool agent_is_map_changed(RID p_agent) const;
/// Callback called at the end of the RVO process /// 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` /// 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; virtual NavigationUtilities::PathQueryResult2D _query_path(const NavigationUtilities::PathQueryParameters2D &p_parameters) const;

View File

@ -54,86 +54,63 @@ using namespace NavigationUtilities;
server->MERGE(_cmd_, F_NAME)(d_0); \ 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)( \ auto cmd = memnew(MERGE(F_NAME, _command)( \
D_0)); \ D_0)); \
add_command(cmd); \ add_command(cmd); \
} \ } \
void PandemoniumNavigationServer::MERGE(_cmd_, F_NAME)(T_0 D_0) void PandemoniumNavigationServer::MERGE(_cmd_, F_NAME)(T_0 D_0)
#define COMMAND_2(F_NAME, T_0, D_0, T_1, D_1) \ #define COMMAND_2(F_NAME, T_0, D_0, T_1, D_1) \
struct MERGE(F_NAME, _command) : public SetCommand { \ struct MERGE(F_NAME, _command) : public SetCommand { \
T_0 d_0; \ T_0 d_0; \
T_1 d_1; \ T_1 d_1; \
MERGE(F_NAME, _command) \ MERGE(F_NAME, _command) \
( \ ( \
T_0 p_d_0, \ T_0 p_d_0, \
T_1 p_d_1) : \ T_1 p_d_1) : \
d_0(p_d_0), \ d_0(p_d_0), \
d_1(p_d_1) {} \ d_1(p_d_1) {} \
virtual void exec(PandemoniumNavigationServer *server) { \ virtual void exec(PandemoniumNavigationServer *server) { \
server->MERGE(_cmd_, F_NAME)(d_0, d_1); \ 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); \
} \
}; \
void PandemoniumNavigationServer::F_NAME(T_0 D_0, T_1 D_1) { \ void PandemoniumNavigationServer::F_NAME(T_0 D_0, T_1 D_1) { \
auto cmd = memnew(MERGE(F_NAME, _command)( \ auto cmd = memnew(MERGE(F_NAME, _command)( \
D_0, \ D_0, \
D_1)); \ D_1)); \
add_command(cmd); \ add_command(cmd); \
} \ } \
void PandemoniumNavigationServer::MERGE(_cmd_, F_NAME)(T_0 D_0, T_1 D_1) 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) \
#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 { \
struct MERGE(F_NAME, _command) : public SetCommand { \ T_0 d_0; \
T_0 d_0; \ T_1 d_1; \
T_1 d_1; \ T_2 d_2; \
T_2 d_2; \ T_3 d_3; \
T_3 d_3; \ MERGE(F_NAME, _command) \
MERGE(F_NAME, _command) \ ( \
( \ T_0 p_d_0, \
T_0 p_d_0, \ T_1 p_d_1, \
T_1 p_d_1, \ T_2 p_d_2, \
T_2 p_d_2, \ T_3 p_d_3) : \
T_3 p_d_3) : \ d_0(p_d_0), \
d_0(p_d_0), \ d_1(p_d_1), \
d_1(p_d_1), \ d_2(p_d_2), \
d_2(p_d_2), \ d_3(p_d_3) {} \
d_3(p_d_3) {} \ virtual void exec(PandemoniumNavigationServer *server) { \
virtual void exec(PandemoniumNavigationServer *server) { \ server->MERGE(_cmd_, F_NAME)(d_0, d_1, d_2, d_3); \
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) { \
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)( \
auto cmd = memnew(MERGE(F_NAME, _command)( \ D_0, \
D_0, \ D_1, \
D_1, \ D_2, \
D_2, \ D_3)); \
D_3)); \ add_command(cmd); \
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) void PandemoniumNavigationServer::MERGE(_cmd_, F_NAME)(T_0 D_0, T_1 D_1, T_2 D_2, T_3 D_3)
PandemoniumNavigationServer::PandemoniumNavigationServer() { PandemoniumNavigationServer::PandemoniumNavigationServer() {
@ -164,7 +141,7 @@ Array PandemoniumNavigationServer::get_maps() const {
return all_map_rids; return all_map_rids;
} }
RID PandemoniumNavigationServer::map_create() const { RID PandemoniumNavigationServer::map_create() {
PandemoniumNavigationServer *mut_this = const_cast<PandemoniumNavigationServer *>(this); PandemoniumNavigationServer *mut_this = const_cast<PandemoniumNavigationServer *>(this);
MutexLock lock(mut_this->operations_mutex); MutexLock lock(mut_this->operations_mutex);
NavMap *space = memnew(NavMap); NavMap *space = memnew(NavMap);
@ -239,7 +216,7 @@ real_t PandemoniumNavigationServer::map_get_cell_height(RID p_map) const {
return map->get_cell_height(); 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); NavMap *map = map_owner.getornull(p_map);
ERR_FAIL_COND(map == nullptr); ERR_FAIL_COND(map == nullptr);
@ -381,7 +358,7 @@ RID PandemoniumNavigationServer::agent_get_map(RID p_agent) const {
return RID(); return RID();
} }
RID PandemoniumNavigationServer::region_create() const { RID PandemoniumNavigationServer::region_create() {
PandemoniumNavigationServer *mut_this = const_cast<PandemoniumNavigationServer *>(this); PandemoniumNavigationServer *mut_this = const_cast<PandemoniumNavigationServer *>(this);
MutexLock lock(mut_this->operations_mutex); MutexLock lock(mut_this->operations_mutex);
NavRegion *reg = memnew(NavRegion); NavRegion *reg = memnew(NavRegion);
@ -390,7 +367,7 @@ RID PandemoniumNavigationServer::region_create() const {
return rid; 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); NavRegion *region = region_owner.getornull(p_region);
ERR_FAIL_COND(region == nullptr); 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); return region->get_connection_pathway_end(p_connection_id);
} }
RID PandemoniumNavigationServer::link_create() const { RID PandemoniumNavigationServer::link_create() {
PandemoniumNavigationServer *mut_this = const_cast<PandemoniumNavigationServer *>(this); PandemoniumNavigationServer *mut_this = const_cast<PandemoniumNavigationServer *>(this);
MutexLock lock(mut_this->operations_mutex); MutexLock lock(mut_this->operations_mutex);
NavLink *link = memnew(NavLink); NavLink *link = memnew(NavLink);
@ -668,7 +645,7 @@ ObjectID PandemoniumNavigationServer::link_get_owner_id(RID p_link) const {
return link->get_owner_id(); return link->get_owner_id();
} }
RID PandemoniumNavigationServer::agent_create() const { RID PandemoniumNavigationServer::agent_create() {
PandemoniumNavigationServer *mut_this = const_cast<PandemoniumNavigationServer *>(this); PandemoniumNavigationServer *mut_this = const_cast<PandemoniumNavigationServer *>(this);
MutexLock lock(mut_this->operations_mutex); MutexLock lock(mut_this->operations_mutex);
RvoAgent *agent = memnew(RvoAgent()); 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<PandemoniumNavigationServer *>(this); PandemoniumNavigationServer *mut_this = const_cast<PandemoniumNavigationServer *>(this);
MutexLock lock(mut_this->operations_mutex); MutexLock lock(mut_this->operations_mutex);
mut_this->active = p_active; mut_this->active = p_active;

View File

@ -44,20 +44,16 @@
#define MERGE_INTERNAL(A, B) A##B #define MERGE_INTERNAL(A, B) A##B
#define MERGE(A, B) MERGE_INTERNAL(A, B) #define MERGE(A, B) MERGE_INTERNAL(A, B)
#define COMMAND_1(F_NAME, T_0, D_0) \ #define COMMAND_1(F_NAME, T_0, D_0) \
virtual void F_NAME(T_0 D_0) const; \ virtual void F_NAME(T_0 D_0); \
void MERGE(_cmd_, 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) \ #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; \ 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_2N(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) 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) \ #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) void MERGE(_cmd_, F_NAME)(T_0 D_0, T_1 D_1, T_2 D_2, T_3 D_3)
class PandemoniumNavigationServer; class PandemoniumNavigationServer;
@ -101,7 +97,7 @@ public:
virtual Array get_maps() const; 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); COMMAND_2(map_set_active, RID, p_map, bool, p_active);
virtual bool map_is_active(RID p_map) const; 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); 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; 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; 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); 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 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; 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); 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_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 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); COMMAND_2(link_set_map, RID, p_link, RID, p_map);
virtual RID link_get_map(RID p_link) const; virtual RID link_get_map(RID p_link) const;
COMMAND_2(link_set_bidirectional, RID, p_link, bool, p_bidirectional); 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); COMMAND_2(link_set_owner_id, RID, p_link, ObjectID, p_owner_id);
virtual ObjectID link_get_owner_id(RID p_link) const; 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); COMMAND_2(agent_set_map, RID, p_agent, RID, p_map);
virtual RID agent_get_map(RID p_agent) const; virtual RID agent_get_map(RID p_agent) const;
COMMAND_2(agent_set_neighbor_dist, RID, p_agent, real_t, p_dist); COMMAND_2(agent_set_neighbor_dist, RID, p_agent, real_t, p_dist);
@ -196,7 +192,7 @@ public:
COMMAND_1(free, RID, p_object); COMMAND_1(free, RID, p_object);
virtual void set_active(bool p_active) const; virtual void set_active(bool p_active);
void flush_queries(); void flush_queries();
virtual void process(real_t p_delta_time); virtual void process(real_t p_delta_time);

View File

@ -32,11 +32,11 @@
#include "scene/resources/navigation_polygon.h" #include "scene/resources/navigation_polygon.h"
void DummyNavigation2DServer::region_set_navpoly(RID p_region, Ref<NavigationPolygon> p_nav_mesh) const { void DummyNavigation2DServer::region_set_navpoly(RID p_region, Ref<NavigationPolygon> p_nav_mesh) {
} }
NavigationUtilities::PathQueryResult2D DummyNavigation2DServer::_query_path(const NavigationUtilities::PathQueryParameters2D &p_parameters) const { NavigationUtilities::PathQueryResult2D DummyNavigation2DServer::_query_path(const NavigationUtilities::PathQueryParameters2D &p_parameters) const {
return NavigationUtilities::PathQueryResult2D(); return NavigationUtilities::PathQueryResult2D();
} }
DummyNavigation2DServer::DummyNavigation2DServer() { DummyNavigation2DServer::DummyNavigation2DServer() {

View File

@ -11,19 +11,19 @@ class DummyNavigation2DServer : public Navigation2DServer {
public: public:
virtual Array get_maps() const { return Array(); } virtual Array get_maps() const { return Array(); }
virtual RID map_create() const { return RID(); } virtual RID map_create() { return RID(); }
virtual void map_set_active(RID p_map, bool p_active) const {} virtual void map_set_active(RID p_map, bool p_active) {}
virtual bool map_is_active(RID p_map) const { return false; } 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 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; } 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) {} void map_set_use_edge_connections(RID p_map, bool p_enabled) {}
bool map_get_use_edge_connections(RID p_map) const { return false; } 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 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 real_t map_get_link_connection_radius(RID p_map) const { return 0; }
virtual Vector<Vector2> map_get_path(RID p_map, Vector2 p_origin, Vector2 p_destination, bool p_optimize, uint32_t p_navigation_layers = 1) const { return Vector<Vector2>(); } virtual Vector<Vector2> map_get_path(RID p_map, Vector2 p_origin, Vector2 p_destination, bool p_optimize, uint32_t p_navigation_layers = 1) const { return Vector<Vector2>(); }
@ -35,60 +35,60 @@ public:
virtual Array map_get_agents(RID p_map) const { return Array(); } virtual Array map_get_agents(RID p_map) const { return Array(); }
virtual void map_force_update(RID p_map) {} 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) {} void region_set_use_edge_connections(RID p_region, bool p_enabled) {}
bool region_get_use_edge_connections(RID p_region) const { return false; } 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 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 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 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 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 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 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_transform(RID p_region, Transform2D p_transform) {}
virtual void region_set_navpoly(RID p_region, Ref<NavigationPolygon> p_nav_mesh) const; virtual void region_set_navpoly(RID p_region, Ref<NavigationPolygon> p_nav_mesh);
virtual int region_get_connections_count(RID p_region) const { return 0; } 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_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 Vector2 region_get_connection_pathway_end(RID p_region, int p_connection_id) const { return Vector2(); }
virtual RID link_create() const { return RID(); } virtual RID link_create() { return RID(); }
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 { return RID(); } 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 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 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 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 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 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 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 ObjectID link_get_owner_id(RID p_link) const { return 0; }
virtual RID agent_create() const { return RID(); } virtual RID agent_create() { return RID(); }
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 { return RID(); } 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_neighbor_dist(RID p_agent, real_t p_dist) {}
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) {}
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) {}
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) {}
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) {}
virtual void agent_set_velocity(RID p_agent, Vector2 p_velocity) const {} virtual void agent_set_velocity(RID p_agent, Vector2 p_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) {}
virtual void agent_set_position(RID p_agent, Vector2 p_position) const {} virtual void agent_set_position(RID p_agent, Vector2 p_position) {}
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) {}
virtual bool agent_is_map_changed(RID p_agent) const { return false; } 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; virtual NavigationUtilities::PathQueryResult2D _query_path(const NavigationUtilities::PathQueryParameters2D &p_parameters) const;

View File

@ -3,7 +3,7 @@
#include "scene/resources/navigation_mesh.h" #include "scene/resources/navigation_mesh.h"
void DummyNavigationServer::region_set_navmesh(RID p_region, Ref<NavigationMesh> p_nav_mesh) const { void DummyNavigationServer::region_set_navmesh(RID p_region, Ref<NavigationMesh> p_nav_mesh) {
} }
NavigationUtilities::PathQueryResult DummyNavigationServer::_query_path(const NavigationUtilities::PathQueryParameters &p_parameters) const { NavigationUtilities::PathQueryResult DummyNavigationServer::_query_path(const NavigationUtilities::PathQueryParameters &p_parameters) const {

View File

@ -10,20 +10,20 @@ class DummyNavigationServer : public NavigationServer {
public: public:
virtual Array get_maps() const { return Array(); } virtual Array get_maps() const { return Array(); }
virtual RID map_create() const { return RID(); } virtual RID map_create() { return RID(); }
virtual void map_set_active(RID p_map, bool p_active) const {} virtual void map_set_active(RID p_map, bool p_active) {}
virtual bool map_is_active(RID p_map) const { return false; } 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 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 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; } 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) {} void map_set_use_edge_connections(RID p_map, bool p_enabled) {}
bool map_get_use_edge_connections(RID p_map) const { return false; } 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 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 real_t map_get_link_connection_radius(RID p_map) const { return 0; }
virtual Vector<Vector3> map_get_path(RID p_map, Vector3 p_origin, Vector3 p_destination, bool p_optimize, uint32_t p_navigation_layers = 1) const { return Vector<Vector3>(); } virtual Vector<Vector3> map_get_path(RID p_map, Vector3 p_origin, Vector3 p_destination, bool p_optimize, uint32_t p_navigation_layers = 1) const { return Vector<Vector3>(); }
@ -37,62 +37,62 @@ public:
virtual Array map_get_agents(RID p_map) const { return Array(); } virtual Array map_get_agents(RID p_map) const { return Array(); }
virtual void map_force_update(RID p_map) {} 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) {} void region_set_use_edge_connections(RID p_region, bool p_enabled) {}
bool region_get_use_edge_connections(RID p_region) const { return false; } 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 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 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 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 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 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 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_transform(RID p_region, Transform p_transform) {}
virtual void region_set_navmesh(RID p_region, Ref<NavigationMesh> p_nav_mesh) const; virtual void region_set_navmesh(RID p_region, Ref<NavigationMesh> p_nav_mesh);
virtual int region_get_connections_count(RID p_region) const { return 0; } 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_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 Vector3 region_get_connection_pathway_end(RID p_region, int p_connection_id) const { return Vector3(); }
virtual RID link_create() const { return RID(); } virtual RID link_create() { return RID(); }
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 { return RID(); } 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 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 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 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 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 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 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 ObjectID link_get_owner_id(RID p_link) const { return 0; }
virtual RID agent_create() const { return RID(); } virtual RID agent_create() { return RID(); }
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 { return RID(); } 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_neighbor_dist(RID p_agent, real_t p_dist) {}
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) {}
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) {}
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) {}
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) {}
virtual void agent_set_velocity(RID p_agent, Vector3 p_velocity) const {} virtual void agent_set_velocity(RID p_agent, Vector3 p_velocity) {}
virtual void agent_set_target_velocity(RID p_agent, Vector3 p_velocity) const {} virtual void agent_set_target_velocity(RID p_agent, Vector3 p_velocity) {}
virtual void agent_set_position(RID p_agent, Vector3 p_position) const {} virtual void agent_set_position(RID p_agent, Vector3 p_position) {}
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) {}
virtual bool agent_is_map_changed(RID p_agent) const { return false; } 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){}; virtual void process(real_t delta_time){};

View File

@ -277,7 +277,7 @@ NavigationAgent2D::NavigationAgent2D() {
debug_use_custom = false; debug_use_custom = false;
debug_path_custom_color = Color(1.0, 1.0, 1.0, 1.0); 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 #endif // DEBUG_ENABLED
} }
@ -286,7 +286,7 @@ NavigationAgent2D::~NavigationAgent2D() {
agent = RID(); // Pointless agent = RID(); // Pointless
#ifdef DEBUG_ENABLED #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()); ERR_FAIL_NULL(RenderingServer::get_singleton());
if (debug_path_instance.is_valid()) { if (debug_path_instance.is_valid()) {

View File

@ -88,7 +88,7 @@ void NavigationPolygonInstance::set_use_edge_connections(bool p_enabled) {
use_edge_connections = 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 { bool NavigationPolygonInstance::get_use_edge_connections() const {
@ -418,8 +418,8 @@ NavigationPolygonInstance::NavigationPolygonInstance() {
Navigation2DServer::get_singleton()->region_set_travel_cost(region, get_travel_cost()); Navigation2DServer::get_singleton()->region_set_travel_cost(region, get_travel_cost());
#ifdef DEBUG_ENABLED #ifdef DEBUG_ENABLED
Navigation2DServer::get_singleton_mut()->connect("map_changed", this, "_navigation_map_changed"); Navigation2DServer::get_singleton()->connect("map_changed", this, "_navigation_map_changed");
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 #endif // DEBUG_ENABLED
} }
@ -429,8 +429,8 @@ NavigationPolygonInstance::~NavigationPolygonInstance() {
Navigation2DServer::get_singleton()->free(region); Navigation2DServer::get_singleton()->free(region);
#ifdef DEBUG_ENABLED #ifdef DEBUG_ENABLED
Navigation2DServer::get_singleton_mut()->disconnect("map_changed", this, "_navigation_map_changed"); Navigation2DServer::get_singleton()->disconnect("map_changed", this, "_navigation_map_changed");
NavigationServer::get_singleton_mut()->disconnect("navigation_debug_changed", this, "_navigation_debug_changed"); NavigationServer::get_singleton()->disconnect("navigation_debug_changed", this, "_navigation_debug_changed");
#endif // DEBUG_ENABLED #endif // DEBUG_ENABLED
} }

View File

@ -282,7 +282,7 @@ NavigationAgent::NavigationAgent() {
debug_use_custom = false; debug_use_custom = false;
debug_path_custom_color = Color(1.0, 1.0, 1.0, 1.0); 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 #endif // DEBUG_ENABLED
} }
@ -292,7 +292,7 @@ NavigationAgent::~NavigationAgent() {
agent = RID(); // Pointless agent = RID(); // Pointless
#ifdef DEBUG_ENABLED #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()); ERR_FAIL_NULL(RenderingServer::get_singleton());
if (debug_path_instance.is_valid()) { 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); debug_path_mesh->add_surface_from_arrays(Mesh::PRIMITIVE_LINES, debug_path_lines_mesh_array);
Ref<SpatialMaterial> debug_agent_path_line_material = NavigationServer::get_singleton_mut()->get_debug_navigation_agent_path_line_material(); Ref<SpatialMaterial> debug_agent_path_line_material = NavigationServer::get_singleton()->get_debug_navigation_agent_path_line_material();
if (debug_use_custom) { if (debug_use_custom) {
if (!debug_agent_path_line_custom_material.is_valid()) { if (!debug_agent_path_line_custom_material.is_valid()) {
debug_agent_path_line_custom_material = debug_agent_path_line_material->duplicate(); 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); debug_path_mesh->add_surface_from_arrays(Mesh::PRIMITIVE_POINTS, debug_path_points_mesh_array);
Ref<SpatialMaterial> debug_agent_path_point_material = NavigationServer::get_singleton_mut()->get_debug_navigation_agent_path_point_material(); Ref<SpatialMaterial> debug_agent_path_point_material = NavigationServer::get_singleton()->get_debug_navigation_agent_path_point_material();
if (debug_use_custom) { if (debug_use_custom) {
if (!debug_agent_path_point_custom_material.is_valid()) { if (!debug_agent_path_point_custom_material.is_valid()) {
debug_agent_path_point_custom_material = debug_agent_path_point_material->duplicate(); debug_agent_path_point_custom_material = debug_agent_path_point_material->duplicate();

View File

@ -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_scenario(debug_instance, get_world_3d()->get_scenario());
RS::get_singleton()->instance_set_visible(debug_instance, is_visible_in_tree()); RS::get_singleton()->instance_set_visible(debug_instance, is_visible_in_tree());
Ref<SpatialMaterial> link_material = NavigationServer::get_singleton_mut()->get_debug_navigation_link_connections_material(); Ref<SpatialMaterial> link_material = NavigationServer::get_singleton()->get_debug_navigation_link_connections_material();
Ref<SpatialMaterial> disabled_link_material = NavigationServer::get_singleton_mut()->get_debug_navigation_link_connections_disabled_material(); Ref<SpatialMaterial> disabled_link_material = NavigationServer::get_singleton()->get_debug_navigation_link_connections_disabled_material();
if (enabled) { if (enabled) {
RS::get_singleton()->instance_set_surface_material(debug_instance, 0, link_material->get_rid()); 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 #ifdef DEBUG_ENABLED
if (debug_instance.is_valid() && debug_mesh.is_valid()) { if (debug_instance.is_valid() && debug_mesh.is_valid()) {
if (enabled) { if (enabled) {
Ref<SpatialMaterial> link_material = NavigationServer::get_singleton_mut()->get_debug_navigation_link_connections_material(); Ref<SpatialMaterial> 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()); RS::get_singleton()->instance_set_surface_material(debug_instance, 0, link_material->get_rid());
} else { } else {
Ref<SpatialMaterial> disabled_link_material = NavigationServer::get_singleton_mut()->get_debug_navigation_link_connections_disabled_material(); Ref<SpatialMaterial> 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()); RS::get_singleton()->instance_set_surface_material(debug_instance, 0, disabled_link_material->get_rid());
} }
} }

View File

@ -70,10 +70,10 @@ void NavigationMeshInstance::set_enabled(bool p_enabled) {
if (!is_enabled()) { if (!is_enabled()) {
if (debug_mesh.is_valid()) { if (debug_mesh.is_valid()) {
if (debug_mesh->get_surface_count() > 0) { 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) { 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 { } else {
@ -103,7 +103,7 @@ void NavigationMeshInstance::set_use_edge_connections(bool p_enabled) {
use_edge_connections = 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 { bool NavigationMeshInstance::get_use_edge_connections() const {
@ -429,9 +429,9 @@ NavigationMeshInstance::NavigationMeshInstance() {
enabled = true; enabled = true;
#ifdef DEBUG_ENABLED #ifdef DEBUG_ENABLED
NavigationServer::get_singleton_mut()->connect("map_changed", this, "_navigation_map_changed"); NavigationServer::get_singleton()->connect("map_changed", this, "_navigation_map_changed");
NavigationServer::get_singleton_mut()->connect("navigation_debug_changed", this, "_update_debug_mesh"); NavigationServer::get_singleton()->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("navigation_debug_changed", this, "_update_debug_edge_connections_mesh");
#endif // DEBUG_ENABLED #endif // DEBUG_ENABLED
} }
@ -444,9 +444,9 @@ NavigationMeshInstance::~NavigationMeshInstance() {
NavigationServer::get_singleton()->free(region); NavigationServer::get_singleton()->free(region);
#ifdef DEBUG_ENABLED #ifdef DEBUG_ENABLED
NavigationServer::get_singleton_mut()->disconnect("map_changed", this, "_navigation_map_changed"); NavigationServer::get_singleton()->disconnect("map_changed", this, "_navigation_map_changed");
NavigationServer::get_singleton_mut()->disconnect("navigation_debug_changed", this, "_update_debug_mesh"); NavigationServer::get_singleton()->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("navigation_debug_changed", this, "_update_debug_edge_connections_mesh");
ERR_FAIL_NULL(RenderingServer::get_singleton()); ERR_FAIL_NULL(RenderingServer::get_singleton());
@ -582,7 +582,7 @@ void NavigationMeshInstance::_update_debug_mesh() {
} }
} }
Ref<SpatialMaterial> face_material = NavigationServer::get_singleton_mut()->get_debug_navigation_geometry_face_material(); Ref<SpatialMaterial> face_material = NavigationServer::get_singleton()->get_debug_navigation_geometry_face_material();
Array face_mesh_array; Array face_mesh_array;
face_mesh_array.resize(Mesh::ARRAY_MAX); face_mesh_array.resize(Mesh::ARRAY_MAX);
@ -594,7 +594,7 @@ void NavigationMeshInstance::_update_debug_mesh() {
debug_mesh->surface_set_material(0, face_material); debug_mesh->surface_set_material(0, face_material);
if (enabled_edge_lines) { if (enabled_edge_lines) {
Ref<SpatialMaterial> line_material = NavigationServer::get_singleton_mut()->get_debug_navigation_geometry_edge_material(); Ref<SpatialMaterial> line_material = NavigationServer::get_singleton()->get_debug_navigation_geometry_edge_material();
Array line_mesh_array; Array line_mesh_array;
line_mesh_array.resize(Mesh::ARRAY_MAX); line_mesh_array.resize(Mesh::ARRAY_MAX);
@ -612,10 +612,10 @@ void NavigationMeshInstance::_update_debug_mesh() {
if (!is_enabled()) { if (!is_enabled()) {
if (debug_mesh.is_valid()) { if (debug_mesh.is_valid()) {
if (debug_mesh->get_surface_count() > 0) { 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) { 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 { } else {
@ -711,7 +711,7 @@ void NavigationMeshInstance::_update_debug_edge_connections_mesh() {
return; return;
} }
Ref<SpatialMaterial> edge_connections_material = NavigationServer::get_singleton_mut()->get_debug_navigation_edge_connections_material(); Ref<SpatialMaterial> edge_connections_material = NavigationServer::get_singleton()->get_debug_navigation_edge_connections_material();
Array mesh_array; Array mesh_array;
mesh_array.resize(Mesh::ARRAY_MAX); mesh_array.resize(Mesh::ARRAY_MAX);

View File

@ -444,7 +444,7 @@ Ref<ArrayMesh> NavigationMesh::get_debug_mesh() {
} }
debug_mesh->add_surface_from_arrays(Mesh::PRIMITIVE_TRIANGLES, face_mesh_array); debug_mesh->add_surface_from_arrays(Mesh::PRIMITIVE_TRIANGLES, face_mesh_array);
Ref<SpatialMaterial> debug_geometry_face_material = NavigationServer::get_singleton_mut()->get_debug_navigation_geometry_face_material(); Ref<SpatialMaterial> 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); debug_mesh->surface_set_material(debug_mesh->get_surface_count(), debug_geometry_face_material);
// if enabled build geometry edge line surface // if enabled build geometry edge line surface
@ -469,7 +469,7 @@ Ref<ArrayMesh> NavigationMesh::get_debug_mesh() {
line_mesh_array.resize(Mesh::ARRAY_MAX); line_mesh_array.resize(Mesh::ARRAY_MAX);
line_mesh_array[Mesh::ARRAY_VERTEX] = line_vertex_array; line_mesh_array[Mesh::ARRAY_VERTEX] = line_vertex_array;
debug_mesh->add_surface_from_arrays(Mesh::PRIMITIVE_LINES, line_mesh_array); debug_mesh->add_surface_from_arrays(Mesh::PRIMITIVE_LINES, line_mesh_array);
Ref<SpatialMaterial> debug_geometry_edge_material = NavigationServer::get_singleton_mut()->get_debug_navigation_geometry_edge_material(); Ref<SpatialMaterial> 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); debug_mesh->surface_set_material(debug_mesh->get_surface_count() - 1, debug_geometry_edge_material);
} }

View File

@ -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_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_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()->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); indexer = memnew(SpatialIndexer2D);
} }

View File

@ -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_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_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()->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 #ifdef _3D_DISABLED
indexer = NULL; indexer = NULL;

View File

@ -129,7 +129,7 @@ void Navigation2DServer::_bind_methods() {
void Navigation2DServer::init() { void Navigation2DServer::init() {
#ifdef DEBUG_ENABLED #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 #endif // DEBUG_ENABLED
} }
@ -157,7 +157,7 @@ void Navigation2DServer::_emit_navigation_debug_changed_signal() {
#endif // DEBUG_ENABLED #endif // DEBUG_ENABLED
void Navigation2DServer::set_debug_enabled(bool p_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 { bool Navigation2DServer::get_debug_enabled() const {
return NavigationServer::get_singleton()->get_debug_enabled(); return NavigationServer::get_singleton()->get_debug_enabled();
@ -165,7 +165,7 @@ bool Navigation2DServer::get_debug_enabled() const {
#ifdef DEBUG_ENABLED #ifdef DEBUG_ENABLED
void Navigation2DServer::set_debug_navigation_edge_connection_color(const Color &p_color) { 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 { 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) { 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 { 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) { 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 { 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) { 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 { 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) { 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 { 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) { 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 { 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) { 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 { 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) { 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 { 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) { 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 { Color Navigation2DServer::get_debug_navigation_link_connection_color() const {
return NavigationServer::get_singleton()->get_debug_navigation_link_connection_color(); return NavigationServer::get_singleton()->get_debug_navigation_link_connection_color();
} }
void Navigation2DServer::set_debug_navigation_link_connection_disabled_color(const Color &p_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 { Color Navigation2DServer::get_debug_navigation_link_connection_disabled_color() const {
return NavigationServer::get_singleton()->get_debug_navigation_link_connection_disabled_color(); return NavigationServer::get_singleton()->get_debug_navigation_link_connection_disabled_color();
} }
void Navigation2DServer::set_debug_navigation_agent_path_color(const Color &p_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 { 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) { 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 { 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) { 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 { float Navigation2DServer::get_debug_navigation_agent_path_point_size() const {

View File

@ -51,25 +51,21 @@ protected:
static void _bind_methods(); static void _bind_methods();
public: public:
/// Thread safe, can be used across many threads. static Navigation2DServer *get_singleton() { return singleton; }
static const Navigation2DServer *get_singleton() { return singleton; }
/// MUST be used in single thread!
static Navigation2DServer *get_singleton_mut() { return singleton; }
virtual Array get_maps() const = 0; virtual Array get_maps() const = 0;
/// Create a new map. /// Create a new map.
virtual RID map_create() const = 0; virtual RID map_create() = 0;
/// Set map active. /// 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. /// Returns true if the map is active.
virtual bool map_is_active(RID p_map) const = 0; virtual bool map_is_active(RID p_map) const = 0;
/// Set the map cell size used to weld the navigation mesh polygons. /// 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. /// Returns the map cell size.
virtual real_t map_get_cell_size(RID p_map) const = 0; 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; virtual bool map_get_use_edge_connections(RID p_map) const = 0;
/// Set the map cell height used to weld the navigation mesh polygons. /// 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; 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. /// 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. /// Returns the edge connection margin of this map.
virtual real_t map_get_edge_connection_margin(RID p_map) const = 0; 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. /// 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. /// Returns the link connection radius of this map.
virtual real_t map_get_link_connection_radius(RID p_map) const = 0; 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; virtual void map_force_update(RID p_map) = 0;
/// Creates a new region. /// 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 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; virtual bool region_get_use_edge_connections(RID p_region) const = 0;
/// Set the enter_cost of a region /// 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; virtual real_t region_get_enter_cost(RID p_region) const = 0;
/// Set the travel_cost of a region /// 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; virtual real_t region_get_travel_cost(RID p_region) const = 0;
/// Set the node which manages this region. /// 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 ObjectID region_get_owner_id(RID p_region) const = 0;
virtual bool region_owns_point(RID p_region, const Vector2 &p_point) const = 0; virtual bool region_owns_point(RID p_region, const Vector2 &p_point) const = 0;
/// Set the map of this region. /// 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; virtual RID region_get_map(RID p_region) const = 0;
/// Set the region's layers /// 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; virtual uint32_t region_get_navigation_layers(RID p_region) const = 0;
/// Set the global transformation of this region. /// 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. /// Set the navigation poly of this region.
virtual void region_set_navpoly(RID p_region, Ref<NavigationPolygon> p_nav_mesh) const = 0; virtual void region_set_navpoly(RID p_region, Ref<NavigationPolygon> p_nav_mesh) = 0;
/// Get a list of a region's connection to other regions. /// Get a list of a region's connection to other regions.
virtual int region_get_connections_count(RID p_region) const = 0; 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; 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. /// 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. /// 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; virtual RID link_get_map(RID p_link) const = 0;
/// Set whether this link travels in both directions. /// 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; virtual bool link_is_bidirectional(RID p_link) const = 0;
/// Set the link's layers. /// 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; virtual uint32_t link_get_navigation_layers(RID p_link) const = 0;
/// Set the start position of the link. /// 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; virtual Vector2 link_get_start_position(RID p_link) const = 0;
/// Set the end position of the link. /// 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; virtual Vector2 link_get_end_position(RID p_link) const = 0;
/// Set the enter cost of the link. /// 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; virtual real_t link_get_enter_cost(RID p_link) const = 0;
/// Set the travel cost of the link. /// 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; virtual real_t link_get_travel_cost(RID p_link) const = 0;
/// Set the node which manages this link. /// 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; virtual ObjectID link_get_owner_id(RID p_link) const = 0;
/// Creates the agent. /// Creates the agent.
virtual RID agent_create() const = 0; virtual RID agent_create() = 0;
/// Put the agent in the map. /// 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; virtual RID agent_get_map(RID p_agent) const = 0;
/// The maximum distance (center point to /// The maximum distance (center point to
@ -193,7 +189,7 @@ public:
/// time of the simulation. If the number is too /// time of the simulation. If the number is too
/// low, the simulation will not be safe. /// low, the simulation will not be safe.
/// Must be non-negative. /// 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 /// The maximum number of other agents this
/// agent takes into account in the navigation. /// agent takes into account in the navigation.
@ -201,7 +197,7 @@ public:
/// running time of the simulation. If the /// running time of the simulation. If the
/// number is too low, the simulation will not /// number is too low, the simulation will not
/// be safe. /// 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 /// The minimal amount of time for which this
/// agent's velocities that are computed by the /// agent's velocities that are computed by the
@ -211,36 +207,36 @@ public:
/// other agents, but the less freedom this /// other agents, but the less freedom this
/// agent has in choosing its velocities. /// agent has in choosing its velocities.
/// Must be positive. /// 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. /// The radius of this agent.
/// Must be non-negative. /// 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. /// The maximum speed of this agent.
/// Must be non-negative. /// 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 /// 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. /// 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. /// 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 /// 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. /// Returns true if the map got changed the previous frame.
virtual bool agent_is_map_changed(RID p_agent) const = 0; virtual bool agent_is_map_changed(RID p_agent) const = 0;
/// Callback called at the end of the RVO process /// 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` /// 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 /// Returns a customized navigation path using a query parameters object
void query_path(const Ref<NavigationPathQueryParameters2D> &p_query_parameters, Ref<NavigationPathQueryResult2D> p_query_result) const; void query_path(const Ref<NavigationPathQueryParameters2D> &p_query_parameters, Ref<NavigationPathQueryResult2D> p_query_result) const;

View File

@ -161,11 +161,7 @@ void NavigationServer::_bind_methods() {
#endif // DEBUG_ENABLED #endif // DEBUG_ENABLED
} }
const NavigationServer *NavigationServer::get_singleton() { NavigationServer *NavigationServer::get_singleton() {
return singleton;
}
NavigationServer *NavigationServer::get_singleton_mut() {
return singleton; return singleton;
} }

View File

@ -57,31 +57,27 @@ protected:
static void _bind_methods(); static void _bind_methods();
public: public:
/// Thread safe, can be used across many threads. static NavigationServer *get_singleton();
static const NavigationServer *get_singleton();
/// MUST be used in single thread!
static NavigationServer *get_singleton_mut();
virtual Array get_maps() const = 0; virtual Array get_maps() const = 0;
/// Create a new map. /// Create a new map.
virtual RID map_create() const = 0; virtual RID map_create() = 0;
/// Set map active. /// 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. /// Returns true if the map is active.
virtual bool map_is_active(RID p_map) const = 0; virtual bool map_is_active(RID p_map) const = 0;
/// Set the map UP direction. /// 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. /// Returns the map UP direction.
virtual Vector3 map_get_up(RID p_map) const = 0; virtual Vector3 map_get_up(RID p_map) const = 0;
/// Set the map cell size used to weld the navigation mesh polygons. /// 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. /// Returns the map cell size.
virtual real_t map_get_cell_size(RID p_map) const = 0; 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; virtual bool map_get_use_edge_connections(RID p_map) const = 0;
/// Set the map cell height used to weld the navigation mesh polygons. /// 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. /// Returns the map cell height.
virtual real_t map_get_cell_height(RID p_map) const = 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. /// 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. /// Returns the edge connection margin of this map.
virtual real_t map_get_edge_connection_margin(RID p_map) const = 0; 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. /// 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. /// Returns the link connection radius of this map.
virtual real_t map_get_link_connection_radius(RID p_map) const = 0; 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; virtual void map_force_update(RID p_map) = 0;
/// Creates a new region. /// 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 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; virtual bool region_get_use_edge_connections(RID p_region) const = 0;
/// Set the enter_cost of a region /// 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; virtual real_t region_get_enter_cost(RID p_region) const = 0;
/// Set the travel_cost of a region /// 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; virtual real_t region_get_travel_cost(RID p_region) const = 0;
/// Set the node which manages this region. /// 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 ObjectID region_get_owner_id(RID p_region) const = 0;
virtual bool region_owns_point(RID p_region, const Vector3 &p_point) const = 0; virtual bool region_owns_point(RID p_region, const Vector3 &p_point) const = 0;
/// Set the map of this region. /// 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; virtual RID region_get_map(RID p_region) const = 0;
/// Set the region's layers /// 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; virtual uint32_t region_get_navigation_layers(RID p_region) const = 0;
/// Set the global transformation of this region. /// 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. /// Set the navigation mesh of this region.
virtual void region_set_navmesh(RID p_region, Ref<NavigationMesh> p_nav_mesh) const = 0; virtual void region_set_navmesh(RID p_region, Ref<NavigationMesh> p_nav_mesh) = 0;
/// Get a list of a region's connection to other regions. /// Get a list of a region's connection to other regions.
virtual int region_get_connections_count(RID p_region) const = 0; 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; 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. /// 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. /// 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; virtual RID link_get_map(RID p_link) const = 0;
/// Set whether this link travels in both directions. /// 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; virtual bool link_is_bidirectional(RID p_link) const = 0;
/// Set the link's layers. /// 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; virtual uint32_t link_get_navigation_layers(RID p_link) const = 0;
/// Set the start position of the link. /// 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; virtual Vector3 link_get_start_position(RID p_link) const = 0;
/// Set the end position of the link. /// 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; virtual Vector3 link_get_end_position(RID p_link) const = 0;
/// Set the enter cost of the link. /// 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; virtual real_t link_get_enter_cost(RID p_link) const = 0;
/// Set the travel cost of the link. /// 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; virtual real_t link_get_travel_cost(RID p_link) const = 0;
/// Set the node which manages this link. /// 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; virtual ObjectID link_get_owner_id(RID p_link) const = 0;
/// Creates the agent. /// Creates the agent.
virtual RID agent_create() const = 0; virtual RID agent_create() = 0;
/// Put the agent in the map. /// 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; virtual RID agent_get_map(RID p_agent) const = 0;
/// The maximum distance (center point to /// The maximum distance (center point to
@ -209,7 +205,7 @@ public:
/// time of the simulation. If the number is too /// time of the simulation. If the number is too
/// low, the simulation will not be safe. /// low, the simulation will not be safe.
/// Must be non-negative. /// 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 /// The maximum number of other agents this
/// agent takes into account in the navigation. /// agent takes into account in the navigation.
@ -217,7 +213,7 @@ public:
/// running time of the simulation. If the /// running time of the simulation. If the
/// number is too low, the simulation will not /// number is too low, the simulation will not
/// be safe. /// 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 /// The minimal amount of time for which this
/// agent's velocities that are computed by the /// agent's velocities that are computed by the
@ -227,39 +223,39 @@ public:
/// other agents, but the less freedom this /// other agents, but the less freedom this
/// agent has in choosing its velocities. /// agent has in choosing its velocities.
/// Must be positive. /// 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. /// The radius of this agent.
/// Must be non-negative. /// 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. /// The maximum speed of this agent.
/// Must be non-negative. /// 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 /// 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. /// 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. /// 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 /// 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. /// Returns true if the map got changed the previous frame.
virtual bool agent_is_map_changed(RID p_agent) const = 0; virtual bool agent_is_map_changed(RID p_agent) const = 0;
/// Callback called at the end of the RVO process /// 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` /// Destroy the `RID`
virtual void free(RID p_object) const = 0; virtual void free(RID p_object) = 0;
/// Control activation of this server. /// 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. /// Process the collision avoidance agents.
/// The result of this process is needed by the physics server, /// The result of this process is needed by the physics server,

View File

@ -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("AudioServer", AudioServer::get_singleton()));
Engine::get_singleton()->add_singleton(Engine::Singleton("PhysicsServer", PhysicsServer::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("Physics2DServer", Physics2DServer::get_singleton()));
Engine::get_singleton()->add_singleton(Engine::Singleton("NavigationServer", NavigationServer::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_mut())); Engine::get_singleton()->add_singleton(Engine::Singleton("Navigation2DServer", Navigation2DServer::get_singleton()));
} }