- 423 Objekte in 19 deutschen Kategorien (Panzer, Radfahrzeuge, Flugzeuge, Gebaeude, Zelte, Tuerme, Mauern, Sperren, Kisten, Technik, Felsen, Boden, Decals ...); Gruppen "Bauwerke" und "Kisten & Barrieren" samt Test-Asset-Namenslisten entfernt - LibraryBrowser: Gruppen/Namen aus dem Manifest (kategorie, name_de), unbekannte Kategorien bekommen automatisch eine eigene Gruppe - Thumbs neu, library/ synchronisiert (inkl. neuer Kollision) - Neue Identitaetsprobe: Kollision ALLER Objekte Editor = Client = Server - Tests auf Pack-Objekte umgestellt Co-Authored-By: Claude <noreply@anthropic.com>
41 lines
1.5 KiB
GDScript
41 lines
1.5 KiB
GDScript
extends SceneTree
|
|
## Beweis-Probe (Karte t_bb0d11c9, WEGWERF — nicht Teil der Suite):
|
|
## rendert die echte Main-UI mit markiertem Objekt + gefülltem Inspektor
|
|
## und speichert einen Screenshot (PROBE_PNG-Umgebungsvariable).
|
|
## Aufruf: xvfb-run -a godot4 --path . --rendering-driver opengl3 \
|
|
## -s res://tests/probe_inspector_render.gd
|
|
|
|
func _initialize() -> void:
|
|
_run.call_deferred()
|
|
|
|
|
|
func _run() -> void:
|
|
var scene: PackedScene = load("res://scenes/main.tscn")
|
|
var main = scene.instantiate()
|
|
root.add_child(main)
|
|
await process_frame
|
|
await process_frame
|
|
# Erst NACH _ready setzen — die Main-UI setzt ihren Fensterzustand selbst
|
|
# (maximiert/Lage-Restore) und überschreibt frühere Größen (xvfb ohne WM).
|
|
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED)
|
|
DisplayServer.window_set_size(Vector2i(2328, 1310))
|
|
(main.doc["objects"] as Array).append({
|
|
"id": "barrel_001", "pos": [8.0, 0.0, 8.0], "scale": 1.5, "rot_y_deg": 30.0})
|
|
(main.doc["objects"] as Array).append({
|
|
"id": "box_001", "pos": [14.0, 0.0, 6.0], "scale": 1.0, "rot_y_deg": 0.0})
|
|
main.call("_after_structure_change")
|
|
main.interaction.call("select_object", 0)
|
|
var cam = main.get("camera")
|
|
if cam != null:
|
|
cam.call("focus_on", Vector3(8.0, 0.0, 8.0))
|
|
cam.set("distance", 30.0)
|
|
for i in 6:
|
|
await process_frame
|
|
await RenderingServer.frame_post_draw
|
|
var img := root.get_texture().get_image()
|
|
var out := OS.get_environment("PROBE_PNG")
|
|
if out.is_empty():
|
|
out = "/tmp/probe_inspector.png"
|
|
img.save_png(out)
|
|
print("PNG_OK ", out)
|
|
quit(0)
|