extends Spatial var m = SpatialMaterial.new() var winddir = Vector3(1,0,0) onready var pathfinder = get_node("PLAYERS/Player2") var path = [] var map_rids var client_id var player_char var players_info = {} var WORLD_MAP_RID : RID # Called when the node enters the scene tree for the first time. func _ready(): map_rids = NavigationServer.get_maps() for rid in map_rids: NavigationServer.map_set_edge_connection_margin(rid,1.5) m.flags_unshaded = true m.flags_use_point_size = true m.albedo_color = Color.white #merge all nav meshes onto the main map yield(get_tree().create_timer(1.0), "timeout") WORLD_MAP_RID = get_world().get_navigation_map() find_path() remotesync func update_players_info(info): players_info = info remote func _call_on_server(function, arguments): print('Remote server call: ' + function) $Server.call(function, arguments) func find_path(): var start_pos = $START.global_transform.origin var end_pos = $END.global_transform.origin var t_path = NavigationServer.map_get_path(WORLD_MAP_RID, start_pos, end_pos, true) var path_end = t_path[len(t_path)-1] #is path end near desired end #if not, is the end point in an unreachable region? for rid in map_rids: print("map " + str(rid.get_id())) for region_rid in NavigationServer.map_get_regions(rid): print("region " + str(region_rid.get_id())) if NavigationServer.region_owns_point(region_rid, end_pos): print("owns target point") if NavigationServer.region_owns_point(region_rid, path_end): print("owns end point") print( (end_pos - t_path[len(t_path)-1]).length() ) draw_path(t_path) pass func draw_path(path_array): var im = get_node("Draw") im.set_material_override(m) im.clear() im.begin(Mesh.PRIMITIVE_POINTS, null) im.add_vertex(path_array[0]) im.add_vertex(path_array[path_array.size() - 1]) im.end() im.begin(Mesh.PRIMITIVE_LINE_STRIP, null) for x in path_array: im.add_vertex(x) im.end()