scopedvr-map-editor/tests/probe_pack_texturen.gd
Hermes (godot-vr) c0cbe4bb0c Pack-Texturen (t_9675e48d): Editor-Viewport + Thumbs texturiert
GlbMeshStore setzt fuer texturlose Military-GLBs die Pack-Palette-Textur
(Atlas per absolutem Pfad aus dem Client-Mesh-Lager, NEAREST + Mipmaps),
gen_thumbs nutzt denselben Helfer → Thumbs zeigen die echten Palette-
Farben statt weisser Silhouetten. 261 Thumbs neu gerendert (317 gesamt).
Beweis: tests/probe_pack_texturen.gd headless — 7/7 Flaechen texturiert.
2026-10-19 18:26:47 +00:00

43 lines
1.6 KiB
GDScript

extends SceneTree
## Beweis-Probe (Karte t_9675e48d, EDITOR): GlbMeshStore liefert Military-
## Meshes MIT Pack-Textur (Palette-Atlas) statt weiß. Headless-Logikprobe:
## pro OID jede Oberfläche auf albedo_texture prüfen.
##
## /opt/data/home/bin/godot4 --headless --path . -s res://tests/probe_pack_texturen.gd
## Ausgabe: PROBE_PACK_TEX_EDITOR_OK/FAIL
const OIDS := ["box_001", "barrel_001", "shell_001", "training_item_001",
"wall_001", "container_001"]
func _initialize() -> void:
var fehler: Array = []
var tex_gesamt := 0
var weiss_gesamt := 0
for oid in OIDS:
var mesh := GlbMeshStore.mesh_fuer(oid)
if mesh == null:
fehler.append("%s: kein Mesh (GLB fehlt im Lager?)" % oid)
continue
var tex := 0
var weiss := 0
for s in mesh.get_surface_count():
var mat := mesh.surface_get_material(s)
if mat is BaseMaterial3D and (mat as BaseMaterial3D).albedo_texture != null:
tex += 1
else:
weiss += 1
if weiss > 0:
fehler.append("%s: %d/%d Fläche(n) OHNE Textur" % [oid, weiss, tex + weiss])
else:
print(" %s: %d Fläche(n) mit Pack-Textur" % [oid, tex])
tex_gesamt += tex
weiss_gesamt += weiss
print("Flächen gesamt: %d texturiert, %d weiß" % [tex_gesamt, weiss_gesamt])
# Negative-Kontrolle: unbekanntes Material liefert null (kein Crash).
if GlbMeshStore.pack_material("gibt_es_nicht") != null:
fehler.append("pack_material('gibt_es_nicht') sollte null liefern")
for f in fehler:
print(" FEHLER: %s" % f)
print("PROBE_PACK_TEX_EDITOR_%s" % ("FAIL" if not fehler.is_empty() else "OK"))
quit(1 if not fehler.is_empty() else 0)