summaryrefslogtreecommitdiff
path: root/godot/scripts/World.gd
diff options
context:
space:
mode:
Diffstat (limited to 'godot/scripts/World.gd')
-rw-r--r--godot/scripts/World.gd37
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