summaryrefslogtreecommitdiff
path: root/doc/classes
diff options
context:
space:
mode:
authorHaoyu Qiu <timothyqiu32@gmail.com>2021-08-11 16:23:14 +0800
committerHaoyu Qiu <timothyqiu32@gmail.com>2021-08-11 18:18:10 +0800
commit60298328caa445dee7c562fedbefec990b292f5a (patch)
tree1d21a462def85bd943cdcb4c6ff62fee324d939e /doc/classes
parenta902f760634432adcb5f74b3b6cd27a7275a320f (diff)
Improve NavigationMesh typing, parameter validation and documentation
Diffstat (limited to 'doc/classes')
-rw-r--r--doc/classes/NavigationMesh.xml94
1 files changed, 73 insertions, 21 deletions
diff --git a/doc/classes/NavigationMesh.xml b/doc/classes/NavigationMesh.xml
index 1d9b2b0a36..89a394ef6c 100644
--- a/doc/classes/NavigationMesh.xml
+++ b/doc/classes/NavigationMesh.xml
@@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="NavigationMesh" inherits="Resource" version="4.0">
<brief_description>
+ A mesh to approximate the walkable areas and obstacles.
</brief_description>
<description>
+ A navigation mesh is a collection of polygons that define which areas of an environment are traversable to aid agents in pathfinding through complicated spaces.
</description>
<tutorials>
<link title="3D Navmesh Demo">https://godotengine.org/asset-library/asset/124</link>
@@ -12,39 +14,46 @@
<return type="void" />
<argument index="0" name="polygon" type="PackedInt32Array" />
<description>
+ Adds a polygon using the indices of the vertices you get when calling [method get_vertices].
</description>
</method>
<method name="clear_polygons">
<return type="void" />
<description>
+ Clears the array of polygons, but it doesn't clear the array of vertices.
</description>
</method>
<method name="create_from_mesh">
<return type="void" />
<argument index="0" name="mesh" type="Mesh" />
<description>
+ Initializes the navigation mesh by setting the vertices and indices according to a [Mesh].
</description>
</method>
<method name="get_collision_mask_bit" qualifiers="const">
<return type="bool" />
<argument index="0" name="bit" type="int" />
<description>
+ Returns whether the specified [code]bit[/code] of the [member geometry/collision_mask] is set.
</description>
</method>
<method name="get_polygon">
<return type="PackedInt32Array" />
<argument index="0" name="idx" type="int" />
<description>
+ Returns a [PackedInt32Array] containing the indices of the vertices of a created polygon.
</description>
</method>
<method name="get_polygon_count" qualifiers="const">
<return type="int" />
<description>
+ Returns the number of polygons in the navigation mesh.
</description>
</method>
<method name="get_vertices" qualifiers="const">
<return type="PackedVector3Array" />
<description>
+ Returns a [PackedVector3Array] containing all the vertices being used to create the polygons.
</description>
</method>
<method name="set_collision_mask_bit">
@@ -52,84 +61,127 @@
<argument index="0" name="bit" type="int" />
<argument index="1" name="value" type="bool" />
<description>
+ If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/code] in the [member geometry/collision_mask].
+ If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/code] in the [member geometry/collision_mask].
</description>
</method>
<method name="set_vertices">
<return type="void" />
<argument index="0" name="vertices" type="PackedVector3Array" />
<description>
+ Sets the vertices that can be then indexed to create polygons with the [method add_polygon] method.
</description>
</method>
</methods>
<members>
<member name="agent/height" type="float" setter="set_agent_height" getter="get_agent_height" default="2.0">
- The minimum Y space needed for navigation to be generated.
+ The minimum floor to ceiling height that will still allow the floor area to be considered walkable.
+ [b]Note:[/b] While baking, this value will be rounded up to the nearest multiple of [member cell/height].
</member>
<member name="agent/max_climb" type="float" setter="set_agent_max_climb" getter="get_agent_max_climb" default="0.9">
- The maximum height difference between two areas for navigation to be generated between them.
+ The minimum ledge height that is considered to still be traversable.
+ [b]Note:[/b] While baking, this value will be rounded down to the nearest multiple of [member cell/height].
</member>
<member name="agent/max_slope" type="float" setter="set_agent_max_slope" getter="get_agent_max_slope" default="45.0">
- The maximum angle a slope can be at for navigation to be generated on it.
+ The maximum slope that is considered walkable, in degrees.
</member>
<member name="agent/radius" type="float" setter="set_agent_radius" getter="get_agent_radius" default="0.6">
- Determines where the edge of a navigation mesh is. This way an agent will not overlap with another mesh or stand over nothing.
+ The distance to erode/shrink the walkable area of the heightfield away from obstructions.
+ [b]Note:[/b] While baking, this value will be rounded up to the nearest multiple of [member cell/size].
</member>
<member name="cell/height" type="float" setter="set_cell_height" getter="get_cell_height" default="0.2">
- The height of a cell.
+ The Y axis cell size to use for fields.
</member>
<member name="cell/size" type="float" setter="set_cell_size" getter="get_cell_size" default="0.3">
- The size of cells in the [NavigationMesh].
+ The XZ plane cell size to use for fields.
</member>
<member name="detail/sample_distance" type="float" setter="set_detail_sample_distance" getter="get_detail_sample_distance" default="6.0">
+ The sampling distance to use when generating the detail mesh, in cell unit.
</member>
<member name="detail/sample_max_error" type="float" setter="set_detail_sample_max_error" getter="get_detail_sample_max_error" default="1.0">
+ The maximum distance the detail mesh surface should deviate from heightfield, in cell unit.
</member>
<member name="edge/max_error" type="float" setter="set_edge_max_error" getter="get_edge_max_error" default="1.3">
+ The maximum distance a simplfied contour's border edges should deviate the original raw contour.
</member>
<member name="edge/max_length" type="float" setter="set_edge_max_length" getter="get_edge_max_length" default="12.0">
+ The maximum allowed length for contour edges along the border of the mesh.
+ [b]Note:[/b] While baking, this value will be rounded up to the nearest multiple of [member cell/size].
</member>
<member name="filter/filter_walkable_low_height_spans" type="bool" setter="set_filter_walkable_low_height_spans" getter="get_filter_walkable_low_height_spans" default="false">
+ If [code]true[/code], marks walkable spans as not walkable if the clearance above the span is less than [member agent/height].
</member>
<member name="filter/ledge_spans" type="bool" setter="set_filter_ledge_spans" getter="get_filter_ledge_spans" default="false">
+ If [code]true[/code], marks spans that are ledges as non-walkable.
</member>
<member name="filter/low_hanging_obstacles" type="bool" setter="set_filter_low_hanging_obstacles" getter="get_filter_low_hanging_obstacles" default="false">
+ If [code]true[/code], marks non-walkable spans as walkable if their maximum is within [member agent/max_climb] of a walkable neighbor.
</member>
<member name="geometry/collision_mask" type="int" setter="set_collision_mask" getter="get_collision_mask">
- The physics layers used to generate the [NavigationMesh].
+ The physics layers to scan for static colliders.
+ Only used when [member geometry/parsed_geometry_type] is [constant PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH].
</member>
- <member name="geometry/parsed_geometry_type" type="int" setter="set_parsed_geometry_type" getter="get_parsed_geometry_type" default="0">
- What kind of geometry is used to generate the [NavigationMesh].
+ <member name="geometry/parsed_geometry_type" type="int" setter="set_parsed_geometry_type" getter="get_parsed_geometry_type" enum="NavigationMesh.ParsedGeometryType" default="0">
+ Determines which type of nodes will be parsed as geometry. See [enum ParsedGeometryType] for possible values.
</member>
- <member name="geometry/source_geometry_mode" type="int" setter="set_source_geometry_mode" getter="get_source_geometry_mode" default="0">
- Which geometry is used to generate the [NavigationMesh].
+ <member name="geometry/source_geometry_mode" type="int" setter="set_source_geometry_mode" getter="get_source_geometry_mode" enum="NavigationMesh.SourceGeometryMode" default="0">
+ The source of the geometry used when baking. See [enum SourceGeometryMode] for possible values.
</member>
<member name="geometry/source_group_name" type="StringName" setter="set_source_group_name" getter="get_source_group_name">
- The name of the group that is used to generate the [NavigationMesh].
+ The name of the group to scan for geometry.
+ Only used when [member geometry/source_geometry_mode] is [constant SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant SOURCE_GEOMETRY_GROUPS_EXPLICIT].
</member>
<member name="polygon/verts_per_poly" type="float" setter="set_verts_per_poly" getter="get_verts_per_poly" default="6.0">
- The number of vertices to use per polygon. Higher values will improve performance at the cost of lower precision.
+ The maximum number of vertices allowed for polygons generated during the contour to polygon conversion process.
</member>
<member name="region/merge_size" type="float" setter="set_region_merge_size" getter="get_region_merge_size" default="20.0">
- If two adjacent regions' edges are separated by a distance lower than this value, the regions will be merged together.
+ Any regions with a size smaller than this will be merged with larger regions if possible.
+ [b]Note:[/b] This value will be squared to calculate the number of cells. For example, a value of 20 will set the number of cells to 400.
</member>
<member name="region/min_size" type="float" setter="set_region_min_size" getter="get_region_min_size" default="8.0">
The minimum size of a region for it to be created.
+ [b]Note:[/b] This value will be squared to calculate the minimum number of cells allowed to form isolated island areas. For example, a value of 8 will set the number of cells to 64.
</member>
- <member name="sample_partition_type/sample_partition_type" type="int" setter="set_sample_partition_type" getter="get_sample_partition_type" default="0">
+ <member name="sample_partition_type/sample_partition_type" type="int" setter="set_sample_partition_type" getter="get_sample_partition_type" enum="NavigationMesh.SamplePartitionType" default="0">
+ Partitioning algorithm for creating the navigation mesh polys. See [enum SamplePartitionType] for possible values.
</member>
</members>
<constants>
- <constant name="SAMPLE_PARTITION_WATERSHED" value="0">
+ <constant name="SAMPLE_PARTITION_WATERSHED" value="0" enum="SamplePartitionType">
+ Watershed partitioning. Generally the best choice if you precompute the navigation mesh, use this if you have large open areas.
</constant>
- <constant name="SAMPLE_PARTITION_MONOTONE" value="1">
+ <constant name="SAMPLE_PARTITION_MONOTONE" value="1" enum="SamplePartitionType">
+ Monotone partitioning. Use this if you want fast navigation mesh generation.
</constant>
- <constant name="SAMPLE_PARTITION_LAYERS" value="2">
+ <constant name="SAMPLE_PARTITION_LAYERS" value="2" enum="SamplePartitionType">
+ Layer partitioning. Good choice to use for tiled navigation mesh with medium and small sized tiles.
</constant>
- <constant name="PARSED_GEOMETRY_MESH_INSTANCES" value="0">
+ <constant name="SAMPLE_PARTITION_MAX" value="3" enum="SamplePartitionType">
+ Represents the size of the [enum SamplePartitionType] enum.
</constant>
- <constant name="PARSED_GEOMETRY_STATIC_COLLIDERS" value="1">
+ <constant name="PARSED_GEOMETRY_MESH_INSTANCES" value="0" enum="ParsedGeometryType">
+ Parses mesh instances as geometry. This includes [MeshInstance3D], [CSGShape3D], and [GridMap] nodes.
</constant>
- <constant name="PARSED_GEOMETRY_BOTH" value="2">
+ <constant name="PARSED_GEOMETRY_STATIC_COLLIDERS" value="1" enum="ParsedGeometryType">
+ Parses [StaticBody3D] colliders as geometry. The collider should be in any of the layers specified by [member geometry/collision_mask].
+ </constant>
+ <constant name="PARSED_GEOMETRY_BOTH" value="2" enum="ParsedGeometryType">
+ Both [constant PARSED_GEOMETRY_MESH_INSTANCES] and [constant PARSED_GEOMETRY_STATIC_COLLIDERS].
+ </constant>
+ <constant name="PARSED_GEOMETRY_MAX" value="3" enum="ParsedGeometryType">
+ Represents the size of the [enum ParsedGeometryType] enum.
+ </constant>
+ <constant name="SOURCE_GEOMETRY_NAVMESH_CHILDREN" value="0" enum="SourceGeometryMode">
+ Scans the child nodes of [NavigationRegion3D] recursively for geometry.
+ </constant>
+ <constant name="SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN" value="1" enum="SourceGeometryMode">
+ Scans nodes in a group and their child nodes recursively for geometry. The group is specified by [member geometry/source_group_name].
+ </constant>
+ <constant name="SOURCE_GEOMETRY_GROUPS_EXPLICIT" value="2" enum="SourceGeometryMode">
+ Uses nodes in a group for geometry. The group is specified by [member geometry/source_group_name].
+ </constant>
+ <constant name="SOURCE_GEOMETRY_MAX" value="3" enum="SourceGeometryMode">
+ Represents the size of the [enum SourceGeometryMode] enum.
</constant>
</constants>
</class>