diff options
Diffstat (limited to 'godot/scripts/World.gd')
| -rw-r--r-- | godot/scripts/World.gd | 37 |
1 files changed, 26 insertions, 11 deletions
diff --git a/godot/scripts/World.gd b/godot/scripts/World.gd index fa5a306..7e60423 100644 --- a/godot/scripts/World.gd +++ b/godot/scripts/World.gd @@ -5,19 +5,25 @@ var m = SpatialMaterial.new() var winddir = Vector3(1,0,0) onready var pathfinder = get_node("PLAYERS/Player2") var path = [] -var map_rid +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_rid = NavigationServer.get_maps() - for rid in map_rid: - NavigationServer.map_set_edge_connection_margin(rid,1) + 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 @@ -26,13 +32,22 @@ remote func _call_on_server(function, arguments): print('Remote server call: ' + function) $Server.call(function, arguments) -func find_path(to): - pathfinder.nav.set_target_location(to) - var t_path = pathfinder.nav.get_next_location() - pathfinder.should_move = true - t_path = pathfinder.nav.get_nav_path() - print(to) - print(t_path) +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 |
