6315dd4985
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.
77 lines
2.3 KiB
GDScript
77 lines
2.3 KiB
GDScript
|
|
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()
|