:github_url: hide .. DO NOT EDIT THIS FILE!!! .. Generated automatically from Godot engine sources. .. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py. .. XML source: https://github.com/godotengine/godot/tree/master/doc/classes/NavigationMesh.xml. .. _class_NavigationMesh: NavigationMesh ============== **Experimental:** This class may be changed or removed in future versions. **Inherits:** :ref:`Resource` **<** :ref:`RefCounted` **<** :ref:`Object` A navigation mesh that defines traversable areas and obstacles. .. rst-class:: classref-introduction-group 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. .. rst-class:: classref-introduction-group Tutorials --------- - :doc:`Using NavigationMeshes <../tutorials/navigation/navigation_using_navigationmeshes>` - `3D Navigation Demo `__ .. rst-class:: classref-reftable-group Properties ---------- .. table:: :widths: auto +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`float` | :ref:`agent_height` | ``1.5`` | +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`float` | :ref:`agent_max_climb` | ``0.25`` | +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`float` | :ref:`agent_max_slope` | ``45.0`` | +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`float` | :ref:`agent_radius` | ``0.5`` | +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`float` | :ref:`border_size` | ``0.0`` | +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`float` | :ref:`cell_height` | ``0.25`` | +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`float` | :ref:`cell_size` | ``0.25`` | +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`float` | :ref:`detail_sample_distance` | ``6.0`` | +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`float` | :ref:`detail_sample_max_error` | ``1.0`` | +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`float` | :ref:`edge_max_error` | ``1.3`` | +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`float` | :ref:`edge_max_length` | ``0.0`` | +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`AABB` | :ref:`filter_baking_aabb` | ``AABB(0, 0, 0, 0, 0, 0)`` | +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`Vector3` | :ref:`filter_baking_aabb_offset` | ``Vector3(0, 0, 0)`` | +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`bool` | :ref:`filter_ledge_spans` | ``false`` | +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`bool` | :ref:`filter_low_hanging_obstacles` | ``false`` | +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`bool` | :ref:`filter_walkable_low_height_spans` | ``false`` | +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`int` | :ref:`geometry_collision_mask` | ``4294967295`` | +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`ParsedGeometryType` | :ref:`geometry_parsed_geometry_type` | ``2`` | +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`SourceGeometryMode` | :ref:`geometry_source_geometry_mode` | ``0`` | +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`StringName` | :ref:`geometry_source_group_name` | ``&"navigation_mesh_source_group"`` | +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`float` | :ref:`region_merge_size` | ``20.0`` | +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`float` | :ref:`region_min_size` | ``2.0`` | +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`SamplePartitionType` | :ref:`sample_partition_type` | ``0`` | +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`float` | :ref:`vertices_per_polygon` | ``6.0`` | +---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------------------+ .. rst-class:: classref-reftable-group Methods ------- .. table:: :widths: auto +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`add_polygon`\ (\ polygon\: :ref:`PackedInt32Array`\ ) | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`clear`\ (\ ) | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`clear_polygons`\ (\ ) | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`create_from_mesh`\ (\ mesh\: :ref:`Mesh`\ ) | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`get_collision_mask_value`\ (\ layer_number\: :ref:`int`\ ) |const| | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedInt32Array` | :ref:`get_polygon`\ (\ idx\: :ref:`int`\ ) | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get_polygon_count`\ (\ ) |const| | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedVector3Array` | :ref:`get_vertices`\ (\ ) |const| | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set_collision_mask_value`\ (\ layer_number\: :ref:`int`, value\: :ref:`bool`\ ) | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set_vertices`\ (\ vertices\: :ref:`PackedVector3Array`\ ) | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Enumerations ------------ .. _enum_NavigationMesh_SamplePartitionType: .. rst-class:: classref-enumeration enum **SamplePartitionType**: :ref:`🔗` .. _class_NavigationMesh_constant_SAMPLE_PARTITION_WATERSHED: .. rst-class:: classref-enumeration-constant :ref:`SamplePartitionType` **SAMPLE_PARTITION_WATERSHED** = ``0`` Watershed partitioning. Generally the best choice if you precompute the navigation mesh, use this if you have large open areas. .. _class_NavigationMesh_constant_SAMPLE_PARTITION_MONOTONE: .. rst-class:: classref-enumeration-constant :ref:`SamplePartitionType` **SAMPLE_PARTITION_MONOTONE** = ``1`` Monotone partitioning. Use this if you want fast navigation mesh generation. .. _class_NavigationMesh_constant_SAMPLE_PARTITION_LAYERS: .. rst-class:: classref-enumeration-constant :ref:`SamplePartitionType` **SAMPLE_PARTITION_LAYERS** = ``2`` Layer partitioning. Good choice to use for tiled navigation mesh with medium and small sized tiles. .. _class_NavigationMesh_constant_SAMPLE_PARTITION_MAX: .. rst-class:: classref-enumeration-constant :ref:`SamplePartitionType` **SAMPLE_PARTITION_MAX** = ``3`` Represents the size of the :ref:`SamplePartitionType` enum. .. rst-class:: classref-item-separator ---- .. _enum_NavigationMesh_ParsedGeometryType: .. rst-class:: classref-enumeration enum **ParsedGeometryType**: :ref:`🔗` .. _class_NavigationMesh_constant_PARSED_GEOMETRY_MESH_INSTANCES: .. rst-class:: classref-enumeration-constant :ref:`ParsedGeometryType` **PARSED_GEOMETRY_MESH_INSTANCES** = ``0`` Parses mesh instances as geometry. This includes :ref:`MeshInstance3D`, :ref:`CSGShape3D`, and :ref:`GridMap` nodes. .. _class_NavigationMesh_constant_PARSED_GEOMETRY_STATIC_COLLIDERS: .. rst-class:: classref-enumeration-constant :ref:`ParsedGeometryType` **PARSED_GEOMETRY_STATIC_COLLIDERS** = ``1`` Parses :ref:`StaticBody3D` colliders as geometry. The collider should be in any of the layers specified by :ref:`geometry_collision_mask`. .. _class_NavigationMesh_constant_PARSED_GEOMETRY_BOTH: .. rst-class:: classref-enumeration-constant :ref:`ParsedGeometryType` **PARSED_GEOMETRY_BOTH** = ``2`` Both :ref:`PARSED_GEOMETRY_MESH_INSTANCES` and :ref:`PARSED_GEOMETRY_STATIC_COLLIDERS`. .. _class_NavigationMesh_constant_PARSED_GEOMETRY_MAX: .. rst-class:: classref-enumeration-constant :ref:`ParsedGeometryType` **PARSED_GEOMETRY_MAX** = ``3`` Represents the size of the :ref:`ParsedGeometryType` enum. .. rst-class:: classref-item-separator ---- .. _enum_NavigationMesh_SourceGeometryMode: .. rst-class:: classref-enumeration enum **SourceGeometryMode**: :ref:`🔗` .. _class_NavigationMesh_constant_SOURCE_GEOMETRY_ROOT_NODE_CHILDREN: .. rst-class:: classref-enumeration-constant :ref:`SourceGeometryMode` **SOURCE_GEOMETRY_ROOT_NODE_CHILDREN** = ``0`` Scans the child nodes of the root node recursively for geometry. .. _class_NavigationMesh_constant_SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN: .. rst-class:: classref-enumeration-constant :ref:`SourceGeometryMode` **SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN** = ``1`` Scans nodes in a group and their child nodes recursively for geometry. The group is specified by :ref:`geometry_source_group_name`. .. _class_NavigationMesh_constant_SOURCE_GEOMETRY_GROUPS_EXPLICIT: .. rst-class:: classref-enumeration-constant :ref:`SourceGeometryMode` **SOURCE_GEOMETRY_GROUPS_EXPLICIT** = ``2`` Uses nodes in a group for geometry. The group is specified by :ref:`geometry_source_group_name`. .. _class_NavigationMesh_constant_SOURCE_GEOMETRY_MAX: .. rst-class:: classref-enumeration-constant :ref:`SourceGeometryMode` **SOURCE_GEOMETRY_MAX** = ``3`` Represents the size of the :ref:`SourceGeometryMode` enum. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Property Descriptions --------------------- .. _class_NavigationMesh_property_agent_height: .. rst-class:: classref-property :ref:`float` **agent_height** = ``1.5`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_agent_height**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_agent_height**\ (\ ) The minimum floor to ceiling height that will still allow the floor area to be considered walkable. \ **Note:** While baking, this value will be rounded up to the nearest multiple of :ref:`cell_height`. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_property_agent_max_climb: .. rst-class:: classref-property :ref:`float` **agent_max_climb** = ``0.25`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_agent_max_climb**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_agent_max_climb**\ (\ ) The minimum ledge height that is considered to still be traversable. \ **Note:** While baking, this value will be rounded down to the nearest multiple of :ref:`cell_height`. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_property_agent_max_slope: .. rst-class:: classref-property :ref:`float` **agent_max_slope** = ``45.0`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_agent_max_slope**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_agent_max_slope**\ (\ ) The maximum slope that is considered walkable, in degrees. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_property_agent_radius: .. rst-class:: classref-property :ref:`float` **agent_radius** = ``0.5`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_agent_radius**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_agent_radius**\ (\ ) The distance to erode/shrink the walkable area of the heightfield away from obstructions. \ **Note:** While baking, this value will be rounded up to the nearest multiple of :ref:`cell_size`. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_property_border_size: .. rst-class:: classref-property :ref:`float` **border_size** = ``0.0`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_border_size**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_border_size**\ (\ ) The size of the non-navigable border around the bake bounding area. In conjunction with the :ref:`filter_baking_aabb` and a :ref:`edge_max_error` value at ``1.0`` or below the border size can be used to bake tile aligned navigation meshes without the tile edges being shrunk by :ref:`agent_radius`. \ **Note:** While baking and not zero, this value will be rounded up to the nearest multiple of :ref:`cell_size`. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_property_cell_height: .. rst-class:: classref-property :ref:`float` **cell_height** = ``0.25`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_cell_height**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_cell_height**\ (\ ) The cell height used to rasterize the navigation mesh vertices on the Y axis. Must match with the cell height on the navigation map. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_property_cell_size: .. rst-class:: classref-property :ref:`float` **cell_size** = ``0.25`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_cell_size**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_cell_size**\ (\ ) The cell size used to rasterize the navigation mesh vertices on the XZ plane. Must match with the cell size on the navigation map. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_property_detail_sample_distance: .. rst-class:: classref-property :ref:`float` **detail_sample_distance** = ``6.0`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_detail_sample_distance**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_detail_sample_distance**\ (\ ) The sampling distance to use when generating the detail mesh, in cell unit. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_property_detail_sample_max_error: .. rst-class:: classref-property :ref:`float` **detail_sample_max_error** = ``1.0`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_detail_sample_max_error**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_detail_sample_max_error**\ (\ ) The maximum distance the detail mesh surface should deviate from heightfield, in cell unit. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_property_edge_max_error: .. rst-class:: classref-property :ref:`float` **edge_max_error** = ``1.3`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_edge_max_error**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_edge_max_error**\ (\ ) The maximum distance a simplified contour's border edges should deviate the original raw contour. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_property_edge_max_length: .. rst-class:: classref-property :ref:`float` **edge_max_length** = ``0.0`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_edge_max_length**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_edge_max_length**\ (\ ) The maximum allowed length for contour edges along the border of the mesh. A value of ``0.0`` disables this feature. \ **Note:** While baking, this value will be rounded up to the nearest multiple of :ref:`cell_size`. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_property_filter_baking_aabb: .. rst-class:: classref-property :ref:`AABB` **filter_baking_aabb** = ``AABB(0, 0, 0, 0, 0, 0)`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_filter_baking_aabb**\ (\ value\: :ref:`AABB`\ ) - :ref:`AABB` **get_filter_baking_aabb**\ (\ ) If the baking :ref:`AABB` has a volume the navigation mesh baking will be restricted to its enclosing area. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_property_filter_baking_aabb_offset: .. rst-class:: classref-property :ref:`Vector3` **filter_baking_aabb_offset** = ``Vector3(0, 0, 0)`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_filter_baking_aabb_offset**\ (\ value\: :ref:`Vector3`\ ) - :ref:`Vector3` **get_filter_baking_aabb_offset**\ (\ ) The position offset applied to the :ref:`filter_baking_aabb` :ref:`AABB`. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_property_filter_ledge_spans: .. rst-class:: classref-property :ref:`bool` **filter_ledge_spans** = ``false`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_filter_ledge_spans**\ (\ value\: :ref:`bool`\ ) - :ref:`bool` **get_filter_ledge_spans**\ (\ ) If ``true``, marks spans that are ledges as non-walkable. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_property_filter_low_hanging_obstacles: .. rst-class:: classref-property :ref:`bool` **filter_low_hanging_obstacles** = ``false`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_filter_low_hanging_obstacles**\ (\ value\: :ref:`bool`\ ) - :ref:`bool` **get_filter_low_hanging_obstacles**\ (\ ) If ``true``, marks non-walkable spans as walkable if their maximum is within :ref:`agent_max_climb` of a walkable neighbor. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_property_filter_walkable_low_height_spans: .. rst-class:: classref-property :ref:`bool` **filter_walkable_low_height_spans** = ``false`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_filter_walkable_low_height_spans**\ (\ value\: :ref:`bool`\ ) - :ref:`bool` **get_filter_walkable_low_height_spans**\ (\ ) If ``true``, marks walkable spans as not walkable if the clearance above the span is less than :ref:`agent_height`. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_property_geometry_collision_mask: .. rst-class:: classref-property :ref:`int` **geometry_collision_mask** = ``4294967295`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_collision_mask**\ (\ value\: :ref:`int`\ ) - :ref:`int` **get_collision_mask**\ (\ ) The physics layers to scan for static colliders. Only used when :ref:`geometry_parsed_geometry_type` is :ref:`PARSED_GEOMETRY_STATIC_COLLIDERS` or :ref:`PARSED_GEOMETRY_BOTH`. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_property_geometry_parsed_geometry_type: .. rst-class:: classref-property :ref:`ParsedGeometryType` **geometry_parsed_geometry_type** = ``2`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_parsed_geometry_type**\ (\ value\: :ref:`ParsedGeometryType`\ ) - :ref:`ParsedGeometryType` **get_parsed_geometry_type**\ (\ ) Determines which type of nodes will be parsed as geometry. See :ref:`ParsedGeometryType` for possible values. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_property_geometry_source_geometry_mode: .. rst-class:: classref-property :ref:`SourceGeometryMode` **geometry_source_geometry_mode** = ``0`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_source_geometry_mode**\ (\ value\: :ref:`SourceGeometryMode`\ ) - :ref:`SourceGeometryMode` **get_source_geometry_mode**\ (\ ) The source of the geometry used when baking. See :ref:`SourceGeometryMode` for possible values. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_property_geometry_source_group_name: .. rst-class:: classref-property :ref:`StringName` **geometry_source_group_name** = ``&"navigation_mesh_source_group"`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_source_group_name**\ (\ value\: :ref:`StringName`\ ) - :ref:`StringName` **get_source_group_name**\ (\ ) The name of the group to scan for geometry. Only used when :ref:`geometry_source_geometry_mode` is :ref:`SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN` or :ref:`SOURCE_GEOMETRY_GROUPS_EXPLICIT`. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_property_region_merge_size: .. rst-class:: classref-property :ref:`float` **region_merge_size** = ``20.0`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_region_merge_size**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_region_merge_size**\ (\ ) Any regions with a size smaller than this will be merged with larger regions if possible. \ **Note:** 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. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_property_region_min_size: .. rst-class:: classref-property :ref:`float` **region_min_size** = ``2.0`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_region_min_size**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_region_min_size**\ (\ ) The minimum size of a region for it to be created. \ **Note:** 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. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_property_sample_partition_type: .. rst-class:: classref-property :ref:`SamplePartitionType` **sample_partition_type** = ``0`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_sample_partition_type**\ (\ value\: :ref:`SamplePartitionType`\ ) - :ref:`SamplePartitionType` **get_sample_partition_type**\ (\ ) Partitioning algorithm for creating the navigation mesh polys. See :ref:`SamplePartitionType` for possible values. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_property_vertices_per_polygon: .. rst-class:: classref-property :ref:`float` **vertices_per_polygon** = ``6.0`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_vertices_per_polygon**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_vertices_per_polygon**\ (\ ) The maximum number of vertices allowed for polygons generated during the contour to polygon conversion process. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Method Descriptions ------------------- .. _class_NavigationMesh_method_add_polygon: .. rst-class:: classref-method |void| **add_polygon**\ (\ polygon\: :ref:`PackedInt32Array`\ ) :ref:`🔗` Adds a polygon using the indices of the vertices you get when calling :ref:`get_vertices`. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_method_clear: .. rst-class:: classref-method |void| **clear**\ (\ ) :ref:`🔗` Clears the internal arrays for vertices and polygon indices. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_method_clear_polygons: .. rst-class:: classref-method |void| **clear_polygons**\ (\ ) :ref:`🔗` Clears the array of polygons, but it doesn't clear the array of vertices. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_method_create_from_mesh: .. rst-class:: classref-method |void| **create_from_mesh**\ (\ mesh\: :ref:`Mesh`\ ) :ref:`🔗` Initializes the navigation mesh by setting the vertices and indices according to a :ref:`Mesh`. \ **Note:** The given ``mesh`` must be of type :ref:`Mesh.PRIMITIVE_TRIANGLES` and have an index array. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_method_get_collision_mask_value: .. rst-class:: classref-method :ref:`bool` **get_collision_mask_value**\ (\ layer_number\: :ref:`int`\ ) |const| :ref:`🔗` Returns whether or not the specified layer of the :ref:`geometry_collision_mask` is enabled, given a ``layer_number`` between 1 and 32. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_method_get_polygon: .. rst-class:: classref-method :ref:`PackedInt32Array` **get_polygon**\ (\ idx\: :ref:`int`\ ) :ref:`🔗` Returns a :ref:`PackedInt32Array` containing the indices of the vertices of a created polygon. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_method_get_polygon_count: .. rst-class:: classref-method :ref:`int` **get_polygon_count**\ (\ ) |const| :ref:`🔗` Returns the number of polygons in the navigation mesh. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_method_get_vertices: .. rst-class:: classref-method :ref:`PackedVector3Array` **get_vertices**\ (\ ) |const| :ref:`🔗` Returns a :ref:`PackedVector3Array` containing all the vertices being used to create the polygons. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_method_set_collision_mask_value: .. rst-class:: classref-method |void| **set_collision_mask_value**\ (\ layer_number\: :ref:`int`, value\: :ref:`bool`\ ) :ref:`🔗` Based on ``value``, enables or disables the specified layer in the :ref:`geometry_collision_mask`, given a ``layer_number`` between 1 and 32. .. rst-class:: classref-item-separator ---- .. _class_NavigationMesh_method_set_vertices: .. rst-class:: classref-method |void| **set_vertices**\ (\ vertices\: :ref:`PackedVector3Array`\ ) :ref:`🔗` Sets the vertices that can be then indexed to create polygons with the :ref:`add_polygon` method. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)` .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` .. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` .. |void| replace:: :abbr:`void (No return value.)`