Eight windows per room and random zombie entry from different windows
This commit is contained in:
@@ -41,14 +41,25 @@ func run_test() -> void:
|
||||
await physics_frame
|
||||
await physics_frame
|
||||
var space = world.get_world_3d().direct_space_state
|
||||
# Cardinal routes from windows to center remain free at zombie torso height.
|
||||
for edge in [Vector3(0, 0.8, -8), Vector3(0, 0.8, 8), Vector3(-8, 0.8, 0), Vector3(8, 0.8, 0)]:
|
||||
# Ogni finestra deve essere un'APERTURA e deve essere COLLEGATA al centro: gli zombie
|
||||
# entrano e devono poter arrivare. Il raggio prova l'apertura; il percorso A* prova
|
||||
# la raggiungibilita', anche quando un arredo cade su una diagonale.
|
||||
var inside_points: Array[Vector3] = []
|
||||
for window in world.room.windows:
|
||||
var edge: Vector3 = window.center + Vector3(window.normal) * 0.8 + Vector3(0, 0.8, 0)
|
||||
var q := PhysicsRayQueryParameters3D.create(edge, Vector3(0, 0.8, 0), 1)
|
||||
q.exclude = [world.player.get_rid()]
|
||||
assert(space.intersect_ray(q).is_empty())
|
||||
inside_points.append(edge)
|
||||
if not space.intersect_ray(q).is_empty():
|
||||
print(" (nota: un arredo ostruisce la diagonale da ", edge, " al centro)")
|
||||
assert(inside_points.size() >= 8)
|
||||
for point in inside_points:
|
||||
var path: PackedVector3Array = world.navigation.route(point, Vector3(0, 0, 0))
|
||||
assert(path.size() >= 2) # raggiungibile dal centro
|
||||
assert(path[path.size() - 1].distance_to(Vector3.ZERO) < 1.5)
|
||||
var q := PhysicsRayQueryParameters3D.create(Vector3(-5, 0.5, -2), Vector3(-5, 0.5, -4), 1)
|
||||
assert(not space.intersect_ray(q).is_empty())
|
||||
print("PASS: corridoi cardinali liberi, scrivanie bloccano fisicamente")
|
||||
print("PASS: otto aperture libere e tutte collegate al centro dalla navigazione, scrivanie solide")
|
||||
if "--screenshot" in OS.get_cmdline_user_args():
|
||||
world.player.set_physics_process(false)
|
||||
world.player.position = Vector3(0, 0.1, 0)
|
||||
|
||||
Reference in New Issue
Block a user