summaryrefslogtreecommitdiff
path: root/doc/classes/NavigationMesh.xml
blob: c86bc47e047a586b4fde2072438b9c27877c961a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
<?xml version="1.0" encoding="UTF-8" ?>
<class name="NavigationMesh" inherits="Resource" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
	<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>
	</tutorials>
	<methods>
		<method name="add_polygon">
			<return type="void" />
			<param 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" />
			<param index="0" name="mesh" type="Mesh" />
			<description>
				Initializes the navigation mesh by setting the vertices and indices according to a [Mesh].
				[b]Note:[/b] The given [param mesh] must be of type [constant Mesh.PRIMITIVE_TRIANGLES] and have an index array.
			</description>
		</method>
		<method name="get_collision_mask_value" qualifiers="const">
			<return type="bool" />
			<param index="0" name="layer_number" type="int" />
			<description>
				Returns whether or not the specified layer of the [member geometry_collision_mask] is enabled, given a [param layer_number] between 1 and 32.
			</description>
		</method>
		<method name="get_polygon">
			<return type="PackedInt32Array" />
			<param 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_value">
			<return type="void" />
			<param index="0" name="layer_number" type="int" />
			<param index="1" name="value" type="bool" />
			<description>
				Based on [param value], enables or disables the specified layer in the [member geometry_collision_mask], given a [param layer_number] between 1 and 32.
			</description>
		</method>
		<method name="set_vertices">
			<return type="void" />
			<param 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="1.5">
			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.25">
			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 slope that is considered walkable, in degrees.
		</member>
		<member name="agent_radius" type="float" setter="set_agent_radius" getter="get_agent_radius" default="0.5">
			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.25">
			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.25">
			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_baking_aabb" type="AABB" setter="set_filter_baking_aabb" getter="get_filter_baking_aabb" default="AABB(0, 0, 0, 0, 0, 0)">
			If the baking [AABB] has a volume the navigation mesh baking will be restricted to its enclosing area.
		</member>
		<member name="filter_baking_aabb_offset" type="Vector3" setter="set_filter_baking_aabb_offset" getter="get_filter_baking_aabb_offset" default="Vector3(0, 0, 0)">
			The position offset applied to the [member filter_baking_aabb] [AABB].
		</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="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="geometry_collision_mask" type="int" setter="set_collision_mask" getter="get_collision_mask" default="4294967295">
			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" 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" 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" default="&amp;&quot;navmesh&quot;">
			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 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">
			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="2.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" 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" 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" enum="SamplePartitionType">
			Monotone partitioning. Use this if you want fast navigation mesh generation.
		</constant>
		<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="SAMPLE_PARTITION_MAX" value="3" enum="SamplePartitionType">
			Represents the size of the [enum SamplePartitionType] enum.
		</constant>
		<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_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>