Add new test file for phase 19 scenery with unique identifier
This commit is contained in:
@@ -0,0 +1,146 @@
|
||||
extends SceneTree
|
||||
|
||||
const SANDBOX_STAGE: PackedScene = preload("res://scenes/stage/sandbox_stage.tscn")
|
||||
const PROP_EDITOR_SCENE: PackedScene = preload("res://scenes/editors/prop/prop_editor.tscn")
|
||||
const STAGE_WALL_PANEL: Script = preload("res://scripts/stage/scenery/stage_wall_panel.gd")
|
||||
const STAGE_SCENERY_ARTWORK: Script = preload("res://scripts/stage/scenery/stage_scenery_artwork.gd")
|
||||
|
||||
|
||||
func _initialize() -> void:
|
||||
call_deferred("_capture_scenes")
|
||||
|
||||
|
||||
func _capture_scenes() -> 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 loaded: bool = stage.call("_load_scene_from_path", "res://content/stages/starters/town_street.scene", false)
|
||||
print("VISUAL town_street_loaded=", loaded)
|
||||
stage.call("_on_grid_toggled", false)
|
||||
await _wait_for_render_frames(4)
|
||||
await _save_viewport_image("res://tests/phase19_visual_town_street.png")
|
||||
|
||||
loaded = stage.call("_load_scene_from_path", "res://content/stages/starters/living_room.scene", false)
|
||||
print("VISUAL living_room_loaded=", loaded)
|
||||
stage.call("_on_grid_toggled", false)
|
||||
await _wait_for_render_frames(4)
|
||||
await _save_viewport_image("res://tests/phase19_visual_living_room.png")
|
||||
|
||||
loaded = stage.call("_load_scene_from_path", "res://content/stages/starters/blank.scene", false)
|
||||
print("VISUAL blank_loaded=", loaded)
|
||||
stage.call("_on_grid_toggled", false)
|
||||
await _wait_for_render_frames(2)
|
||||
var world: Node2D = stage.get_node("World") as Node2D
|
||||
var camera: Camera2D = stage.get_node("Camera2D") as Camera2D
|
||||
camera.position = Vector2(0.0, -180.0)
|
||||
camera.zoom = Vector2(0.72, 0.72)
|
||||
var sky_view: StageSkyView = stage.get("_sky_view") as StageSkyView
|
||||
sky_view.set_sky(&"sky_sunset")
|
||||
var brick_wall: StageWallPanel = STAGE_WALL_PANEL.new() as StageWallPanel
|
||||
brick_wall.position = Vector2(-430.0, -220.0)
|
||||
brick_wall.configure(Vector2(390.0, 290.0), &"finish_wall_brick", Color.WHITE)
|
||||
world.add_child(brick_wall)
|
||||
var spawner: StageSpawner = stage.get("_spawner") as StageSpawner
|
||||
var grass: TerrainBlock = spawner.spawn_terrain_asset("ground", Vector2(120.0, 18.0))
|
||||
grass.set_finish(&"finish_ground_grass")
|
||||
var tree: StageSceneryArtwork = STAGE_SCENERY_ARTWORK.new() as StageSceneryArtwork
|
||||
tree.name = "ApprovedTreeArtwork"
|
||||
tree.position = Vector2(-140.0, -150.0)
|
||||
tree.display_name = "Tree"
|
||||
tree.set_depth(&"near")
|
||||
var tree_loaded: bool = tree.load_visual("res://content/props/art_tree-v2.prop")
|
||||
world.add_child(tree)
|
||||
var missing: StageSceneryArtwork = STAGE_SCENERY_ARTWORK.new() as StageSceneryArtwork
|
||||
missing.name = "MissingArtworkExample"
|
||||
missing.position = Vector2(100.0, -145.0)
|
||||
missing.configure_missing("res://content/props/phase19_missing_art_demo.prop", "Tree", Rect2(Vector2(-52.0, -72.0), Vector2(104.0, 144.0)), &"near")
|
||||
world.add_child(missing)
|
||||
print("VISUAL approved_tree_loaded=", tree_loaded, " missing_marker=", missing.missing)
|
||||
stage.call("_enter_scenery_edit_mode")
|
||||
(stage.get("_selection") as StageSelection).select_only(missing)
|
||||
stage.call("_refresh_scenery_inspector")
|
||||
await _wait_for_render_frames(5)
|
||||
await _save_viewport_image("res://tests/phase19_visual_finishes_and_repair.png")
|
||||
var scenery_controller: StageSceneryController = stage.get("_scenery_controller") as StageSceneryController
|
||||
if scenery_controller.begin_single_transform(missing, &"move", missing.global_position):
|
||||
stage.call("_refresh_scenery_capture_bar")
|
||||
await _wait_for_render_frames(3)
|
||||
await _save_viewport_image("res://tests/phase19_visual_scenery_drag_cancel.png")
|
||||
scenery_controller.cancel_single_transform()
|
||||
stage.call("_refresh_scenery_capture_bar")
|
||||
missing.queue_free()
|
||||
camera.position = Vector2(0.0, -270.0)
|
||||
tree.position = Vector2(-140.0, -95.0)
|
||||
(stage.get("_selection") as StageSelection).select_only(tree)
|
||||
stage.call("_refresh_scenery_inspector")
|
||||
await _wait_for_render_frames(4)
|
||||
await _save_viewport_image("res://tests/phase19_visual_scenery_selected_size.png")
|
||||
var tree_bounds: Rect2 = tree.get_visual_world_bounds()
|
||||
if scenery_controller.begin_single_transform(tree, &"resize", tree_bounds.position, tree_bounds.position):
|
||||
stage.call("_refresh_scenery_capture_bar")
|
||||
await _wait_for_render_frames(3)
|
||||
await _save_viewport_image("res://tests/phase19_visual_scenery_resize_cancel.png")
|
||||
scenery_controller.cancel_single_transform()
|
||||
stage.call("_refresh_scenery_capture_bar")
|
||||
|
||||
var browser: StageAssetBrowser = stage.get("_asset_browser") as StageAssetBrowser
|
||||
stage.call("_load_scene_from_path", "res://content/stages/starters/blank.scene", false)
|
||||
(stage.get("_selection") as StageSelection).clear_selection()
|
||||
stage.call("_exit_scenery_edit_mode")
|
||||
stage.call("_on_grid_toggled", true)
|
||||
scenery_controller.begin_wall(&"finish_wall_brick", Vector2(-180.0, -100.0))
|
||||
await _wait_for_render_frames(3)
|
||||
await _save_viewport_image("res://tests/phase19_visual_wall_panel_preview.png")
|
||||
scenery_controller.exit_tool()
|
||||
stage.call("_on_grid_toggled", false)
|
||||
await _wait_for_render_frames(3)
|
||||
var background_entries: Array[Dictionary] = browser.call("_scenery_background_entries") as Array[Dictionary]
|
||||
var selector: AssetSelector = browser.get_selector()
|
||||
selector.open("scenery", background_entries, "sky_sunset")
|
||||
selector.call("_set_gallery_tab", "backgrounds")
|
||||
await _wait_for_render_frames(4)
|
||||
await _save_viewport_image("res://tests/phase19_visual_background_gallery.png")
|
||||
stage.queue_free()
|
||||
await process_frame
|
||||
await process_frame
|
||||
var prop_editor: PropEditor = PROP_EDITOR_SCENE.instantiate() as PropEditor
|
||||
root.add_child(prop_editor)
|
||||
await _wait_for_render_frames(3)
|
||||
var prop_canvas: PropCanvas = prop_editor.get("_canvas") as PropCanvas
|
||||
var fireplace_file: FileAccess = FileAccess.open("res://content/props/art_fireplace_mantel-v2.prop", FileAccess.READ)
|
||||
if fireplace_file != null:
|
||||
prop_editor.call("_apply_json_data", fireplace_file.get_as_text())
|
||||
await _wait_for_render_frames(3)
|
||||
prop_editor.call("_on_size_for_stage_pressed")
|
||||
await _wait_for_render_frames(3)
|
||||
await _save_viewport_image("res://tests/phase19_visual_size_for_stage_entry.png")
|
||||
prop_editor.call("_finish_stage_size_preview", false)
|
||||
prop_canvas.set_shape_data([{
|
||||
"shape_type": "polygon",
|
||||
"points": PackedVector2Array([Vector2(-50.0, -200.0), Vector2(50.0, -200.0), Vector2(50.0, 0.0), Vector2(-50.0, 0.0)]),
|
||||
"fill_color": "#9D6A4A",
|
||||
"outline_color": "#2D2532",
|
||||
"outline_width": 4.0,
|
||||
"closed": true,
|
||||
}])
|
||||
prop_editor.call("_on_size_for_stage_pressed")
|
||||
prop_editor.call("_choose_stage_size", 1.0)
|
||||
await _wait_for_render_frames(4)
|
||||
await _save_viewport_image("res://tests/phase19_visual_size_for_stage.png")
|
||||
prop_editor.queue_free()
|
||||
await process_frame
|
||||
quit(0)
|
||||
|
||||
|
||||
func _wait_for_render_frames(count: int) -> void:
|
||||
for _frame: int in count:
|
||||
await process_frame
|
||||
await RenderingServer.frame_post_draw
|
||||
|
||||
|
||||
func _save_viewport_image(path: String) -> void:
|
||||
await RenderingServer.frame_post_draw
|
||||
var image: Image = root.get_texture().get_image()
|
||||
var error: Error = image.save_png(ProjectSettings.globalize_path(path))
|
||||
print("VISUAL capture path=", path, " size=", image.get_size(), " error=", error)
|
||||
Reference in New Issue
Block a user