45 lines
1.8 KiB
GDScript
45 lines
1.8 KiB
GDScript
extends SceneTree
|
|
## Cattura la stanza con le otto finestre: le quattro pareti dal centro, una vista
|
|
## d'angolo e un ingresso in corso dalla finestra effettivamente scelta dallo spawn.
|
|
func _initialize() -> void:
|
|
call_deferred("run_test")
|
|
|
|
func run_test() -> void:
|
|
var world = load("res://scenes/main.tscn").instantiate()
|
|
root.add_child(world)
|
|
world.player.hp = 100000
|
|
world.player.set_physics_process(false)
|
|
await create_timer(0.35).timeout # la prima ondata parte in _ready
|
|
var chosen: int = world.last_window
|
|
var window: Dictionary = world.room.windows[chosen]
|
|
# Ingresso in corso: il tween dura 1,2 s salendo verso il davanzale.
|
|
world.player.position = Vector3(window.center) + Vector3(window.normal) * -0.5 + Vector3(0, 0.1, 0)
|
|
world.player.look_at(Vector3(window.center) + Vector3(0, 1.8, 0))
|
|
await create_timer(0.7).timeout
|
|
await RenderingServer.frame_post_draw
|
|
root.get_texture().get_image().save_png("/tmp/zombie-windows-ingresso.png")
|
|
print("SHOT ingresso: finestra %d da %s" % [chosen, window.center])
|
|
# Le quattro pareti dal centro.
|
|
var views := [
|
|
["nord", Vector3(0, 2.2, -9)],
|
|
["est", Vector3(9, 2.2, 0)],
|
|
["sud", Vector3(0, 2.2, 9)],
|
|
["ovest", Vector3(-9, 2.2, 0)],
|
|
]
|
|
for view in views:
|
|
world.player.position = Vector3(0, 0.1, 0)
|
|
world.player.look_at(view[1])
|
|
await create_timer(0.4).timeout
|
|
await RenderingServer.frame_post_draw
|
|
root.get_texture().get_image().save_png("/tmp/zombie-windows-%s.png" % view[0])
|
|
# Vista d'angolo: due pareti insieme.
|
|
world.player.position = Vector3(-7, 0.1, -7)
|
|
world.player.look_at(Vector3(6, 1.5, 6))
|
|
await create_timer(0.4).timeout
|
|
await RenderingServer.frame_post_draw
|
|
root.get_texture().get_image().save_png("/tmp/zombie-windows-angolo.png")
|
|
print("SHOT: immagini in /tmp/zombie-windows-*.png")
|
|
world.queue_free()
|
|
await process_frame
|
|
quit()
|