From 6315dd4985b828f649980361d987923d2197561d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Sat, 21 Nov 2015 16:48:05 +0100 Subject: Move polygon_path_finder demo to demos/3d since it uses 3D nodes Also took the opportunity to "touch" each demo's engine.cfg in reverse alphabetical order to get the listed in natural order in the project manager. --- demos/3d/polygon_path_finder/engine.cfg | 5 ++ demos/3d/polygon_path_finder/icon.png | Bin 0 -> 712 bytes demos/3d/polygon_path_finder/poly_with_holes.scn | Bin 0 -> 2974 bytes demos/3d/polygon_path_finder/polygonpathfinder.gd | 77 ++++++++++++++++++++++ 4 files changed, 82 insertions(+) create mode 100644 demos/3d/polygon_path_finder/engine.cfg create mode 100644 demos/3d/polygon_path_finder/icon.png create mode 100644 demos/3d/polygon_path_finder/poly_with_holes.scn create mode 100644 demos/3d/polygon_path_finder/polygonpathfinder.gd (limited to 'demos/3d') diff --git a/demos/3d/polygon_path_finder/engine.cfg b/demos/3d/polygon_path_finder/engine.cfg new file mode 100644 index 0000000000..47450408af --- /dev/null +++ b/demos/3d/polygon_path_finder/engine.cfg @@ -0,0 +1,5 @@ +[application] + +name="Polygon Pathfinder" +main_scene="res://poly_with_holes.scn" +icon="res://icon.png" diff --git a/demos/3d/polygon_path_finder/icon.png b/demos/3d/polygon_path_finder/icon.png new file mode 100644 index 0000000000..643f5595ee Binary files /dev/null and b/demos/3d/polygon_path_finder/icon.png differ diff --git a/demos/3d/polygon_path_finder/poly_with_holes.scn b/demos/3d/polygon_path_finder/poly_with_holes.scn new file mode 100644 index 0000000000..6b340377b7 Binary files /dev/null and b/demos/3d/polygon_path_finder/poly_with_holes.scn differ diff --git a/demos/3d/polygon_path_finder/polygonpathfinder.gd b/demos/3d/polygon_path_finder/polygonpathfinder.gd new file mode 100644 index 0000000000..1e843043da --- /dev/null +++ b/demos/3d/polygon_path_finder/polygonpathfinder.gd @@ -0,0 +1,77 @@ + +extends Spatial + + +func _ready(): + var pf = PolygonPathFinder.new() + + var points = Vector2Array() + var connections = IntArray() + + # Poly 1 + points.push_back(Vector2(0, 0)) # 0 + points.push_back(Vector2(10, 0)) # 1 + points.push_back(Vector2(10, 10)) # 2 + points.push_back(Vector2(0, 10)) # 3 + + connections.push_back(0) # Connect vertex 0... + connections.push_back(1) # ... to 1 + drawLine(points[0], points[1], get_node("/root/Spatial/Polys")) + connections.push_back(1) # Connect vertex 1... + connections.push_back(2) # ... to 2 + drawLine(points[1], points[2], get_node("/root/Spatial/Polys")) + connections.push_back(2) # Etc. + connections.push_back(3) + drawLine(points[2], points[3], get_node("/root/Spatial/Polys")) + connections.push_back(3) # Connect vertex 3... + connections.push_back(0) # ... back to vertex 0, to close the polygon + drawLine(points[3], points[0], get_node("/root/Spatial/Polys")) + + # Poly 2, as obstacle inside poly 1 + points.push_back(Vector2(2, 0.5)) # 4 + points.push_back(Vector2(4, 0.5)) # 5 + points.push_back(Vector2(4, 9.5)) # 6 + points.push_back(Vector2(2, 9.5)) # 7 + + connections.push_back(4) + connections.push_back(5) + drawLine(points[4], points[5], get_node("/root/Spatial/Polys")) + connections.push_back(5) + connections.push_back(6) + drawLine(points[5], points[6], get_node("/root/Spatial/Polys")) + connections.push_back(6) + connections.push_back(7) + drawLine(points[6], points[7], get_node("/root/Spatial/Polys")) + connections.push_back(7) + connections.push_back(4) + drawLine(points[7], points[4], get_node("/root/Spatial/Polys")) + + print("points: ", points) + print("connections: ", connections) + + pf.setup(points, connections) + + var path = pf.find_path(Vector2(1, 5), Vector2(8, 5)) + + var lastStep = null + print("path: ", path) + for step in path: + print("step: ", step) + if (lastStep != null): + var currPathSegment = Vector2Array() + drawLine(lastStep, step, get_node("/root/Spatial/Path")) + lastStep = step + + +func drawLine(pointA, pointB, immediateGeo): + var drawPosY = 0.1 + var im = immediateGeo + + im.begin(Mesh.PRIMITIVE_POINTS, null) + im.add_vertex(Vector3(pointA.x, drawPosY, pointA.y)) + im.add_vertex(Vector3(pointB.x, drawPosY, pointB.y)) + im.end() + im.begin(Mesh.PRIMITIVE_LINE_STRIP, null) + im.add_vertex(Vector3(pointA.x, drawPosY, pointA.y)) + im.add_vertex(Vector3(pointB.x, drawPosY, pointB.y)) + im.end() -- cgit v1.2.3