extends Node ## Capture Glasballiste review stills. Asserts the inspector shows g06 before each shot. var main: Node3D var captures := "res://docs/screenshots/phase19" func _ready() -> void: call_deferred("run") func shot(name: String) -> void: for n: int in range(8): await get_tree().process_frame await RenderingServer.frame_post_draw print("GLASS_SHOT: ", name, " id=", main.hud.model_inspector.model_id, " caption=", main.hud.model_inspector._caption.text, " details=", main.hud.model_inspector._details.text) get_viewport().get_texture().get_image().save_png(captures + "/" + name + ".png") func run() -> void: get_window().size = Vector2i(1600, 1000) Soundscape.enabled = false WaveManager.set_physics_process(false) main = preload("res://scenes/main.tscn").instantiate() add_child(main) main.hud.model_inspector.show_model("g06") print("GLASS_MODEL: ", main.hud.model_inspector.model_id, " caption=", main.hud.model_inspector._caption.text, " path=", AssetLibrary._models.get("g06", {}).get("resource_path"), " tris=", AssetLibrary._models.get("g06", {}).get("triangles")) if main.hud.model_inspector.model_id != "g06": printerr("GLASS_REVIEW_FAIL: inspector shows ", main.hud.model_inspector.model_id, " instead of g06") await Soundscape.quit_game(1) return var studio: Control = main.hud.model_inspector studio._rotate = false studio._clip_paused = true # Three-quarter views show the long bolt and bow span, as in the concept. studio._turntable.rotation.y = -.45 await shot("glass-front") studio._turntable.rotation.y = PI - .45 await shot("glass-back") studio._turntable.rotation.y = -.45 # Walk mid-stride, release just after contact, braced aim, full charge, collapsed. var times: Dictionary = {"walk": .55, "attack_a": .95, "attack_b": .60, "ability": .80, "death": 2.0} for clip: String in times: for i: int in range(studio._clip_selector.item_count): if studio._clip_selector.get_item_metadata(i) == clip: studio._clip_selector.select(i) studio._clip_time = times[clip] await shot("pose-" + clip) print("GLASS_REVIEW_PASS") await Soundscape.quit_game()