Files
stickman/tests/phase19_depth_inspector_visual_capture.gd

55 lines
2.2 KiB
GDScript

extends SceneTree
const SANDBOX_STAGE: PackedScene = preload("res://scenes/stage/sandbox_stage.tscn")
const STAGE_SCENERY_ARTWORK: Script = preload("res://scripts/stage/scenery/stage_scenery_artwork.gd")
const CAPTURE_PATH: String = "res://tests/phase19_selected_artwork_depth_inspector.png"
func _initialize() -> void:
call_deferred("_capture")
func _capture() -> void:
root.size = Vector2i(1280, 720)
var stage: SandboxStage = SANDBOX_STAGE.instantiate() as SandboxStage
root.add_child(stage)
await _wait_for_render_frames(3)
var artwork: StageSceneryArtwork = STAGE_SCENERY_ARTWORK.new() as StageSceneryArtwork
artwork.display_name = "Round Tree"
artwork.set_depth(&"near")
if not artwork.load_visual("res://content/props/art_tree-v2.prop"):
push_error("Depth inspector visual capture could not load the tree artwork.")
artwork.free()
stage.queue_free()
quit(1)
return
artwork.position = Vector2(-300.0, -120.0)
(stage.get_node("World") as Node2D).add_child(artwork)
var camera: Camera2D = stage.get_node("Camera2D") as Camera2D
camera.position = Vector2.ZERO
camera.zoom = Vector2(0.85, 0.85)
stage.call("_on_grid_toggled", false)
stage.call("_enter_scenery_edit_mode")
(stage.get("_selection") as StageSelection).select_only(artwork)
stage.call("_refresh_scenery_inspector")
await _wait_for_render_frames(6)
var inspector: StageInspectorPanel = stage.get("_scenery_inspector") as StageInspectorPanel
var section: Control = stage.get("_scenery_depth_section") as Control
if inspector == null or not inspector.visible or section == null or not section.visible:
push_error("Depth inspector visual capture did not show its selected-artwork section.")
stage.queue_free()
quit(1)
return
var capture: Image = root.get_texture().get_image()
var error: Error = capture.save_png(ProjectSettings.globalize_path(CAPTURE_PATH))
print("VISUAL selected artwork depth inspector path=%s size=%s save_error=%s" % [CAPTURE_PATH, str(capture.get_size()), str(error)])
stage.queue_free()
await process_frame
quit(0 if error == OK else 1)
func _wait_for_render_frames(count: int) -> void:
for _frame: int in count:
await process_frame
await RenderingServer.frame_post_draw