29 lines
1001 B
GDScript
29 lines
1001 B
GDScript
extends SceneTree
|
|||
|
|
|
||
|
|
func _initialize() -> void:
|
||
|
|
call_deferred("run")
|
||
|
|
|
||
|
|
func run() -> void:
|
||
|
|
var arena := RelayArena.new()
|
||
|
|
root.add_child(arena)
|
||
|
|
var nav := NavigationMesh.new()
|
||
|
|
nav.cell_size = 0.2
|
||
|
|
nav.cell_height = 0.05
|
||
|
|
nav.agent_height = 1.8
|
||
|
|
nav.agent_radius = 0.4
|
||
|
|
nav.agent_max_climb = 0.25
|
||
|
|
nav.agent_max_slope = 46
|
||
|
|
nav.region_min_size = 2
|
||
|
|
nav.region_merge_size = 8
|
||
|
|
nav.edge_max_error = 1.0
|
||
|
|
nav.geometry_parsed_geometry_type = NavigationMesh.PARSED_GEOMETRY_STATIC_COLLIDERS
|
||
|
|
nav.geometry_collision_mask = 1
|
||
|
|
var source := NavigationMeshSourceGeometryData3D.new()
|
||
|
|
NavigationServer3D.parse_source_geometry_data(nav, source, arena)
|
||
|
|
NavigationServer3D.bake_from_source_geometry_data(nav, source)
|
||
|
|
DirAccess.make_dir_recursive_absolute("res://assets/navigation")
|
||
|
|
var error := ResourceSaver.save(nav, "res://assets/navigation/quarry.res")
|
||
|
|
print("QUARRY BAKE polygons=", nav.get_polygon_count(), " saved=", error)
|
||
|
|
arena.free()
|
||
|
|
quit(0 if nav.get_polygon_count() > 0 and error == OK else 1)
|