summaryrefslogtreecommitdiff
path: root/demos/3d
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2015-11-21 16:48:05 +0100
committerRémi Verschelde <rverschelde@gmail.com>2015-12-09 08:39:12 +0100
commit6315dd4985b828f649980361d987923d2197561d (patch)
treee893e3e7904bdcf6b923c9fcac3009b54be5ebbc /demos/3d
parent6cfc3eec9726c02ab8079ff5e8b5d69be2c87ed3 (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.cfg5
-rw-r--r--demos/3d/polygon_path_finder/icon.pngbin0 -> 712 bytes
-rw-r--r--demos/3d/polygon_path_finder/poly_with_holes.scnbin0 -> 2974 bytes
-rw-r--r--demos/3d/polygon_path_finder/polygonpathfinder.gd77
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
new file mode 100644
index 0000000000..643f5595ee
--- /dev/null
+++ b/demos/3d/polygon_path_finder/icon.png
Binary files 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
--- /dev/null
+++ b/demos/3d/polygon_path_finder/poly_with_holes.scn
Binary files 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()