diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2015-11-21 16:48:05 +0100 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2015-12-09 08:39:12 +0100 |
commit | 6315dd4985b828f649980361d987923d2197561d (patch) | |
tree | e893e3e7904bdcf6b923c9fcac3009b54be5ebbc /demos/3d | |
parent | 6cfc3eec9726c02ab8079ff5e8b5d69be2c87ed3 (diff) |
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.
Diffstat (limited to 'demos/3d')
-rw-r--r-- | demos/3d/polygon_path_finder/engine.cfg | 5 | ||||
-rw-r--r-- | demos/3d/polygon_path_finder/icon.png | bin | 0 -> 712 bytes | |||
-rw-r--r-- | demos/3d/polygon_path_finder/poly_with_holes.scn | bin | 0 -> 2974 bytes | |||
-rw-r--r-- | demos/3d/polygon_path_finder/polygonpathfinder.gd | 77 |
4 files changed, 82 insertions, 0 deletions
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 Binary files differnew file mode 100644 index 0000000000..643f5595ee --- /dev/null +++ b/demos/3d/polygon_path_finder/icon.png diff --git a/demos/3d/polygon_path_finder/poly_with_holes.scn b/demos/3d/polygon_path_finder/poly_with_holes.scn Binary files differnew file mode 100644 index 0000000000..6b340377b7 --- /dev/null +++ b/demos/3d/polygon_path_finder/poly_with_holes.scn 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() |