glb_mesh_store: verschachtelte Pack-Modelle auch in models/ finden

Operator-Befund aus dem Eigenstaendigkeits-Beweis auf dem PC (20.10.):

Die App baute den Registry-Pfad nur als <quelle>/<rel-pfad-mit-Praefix
'assets/objekte/'>. Der mitgelieferte models/-Ordner NEBEN der App enthaelt die
Pack-Struktur aber DIREKT (models/military_desert/props/box_010.glb). Ergebnis:
291 von 334 Modellen (alle verschachtelten Pack-Objekte — genau die, mit denen
die Karten gebaut werden) wurden in der eigenstaendigen App nicht gefunden.

Fix: zusaetzlicher Kandidat <quelle>/<rel-pfad OHNE 'assets/objekte/'> — der
flache Alt-Pfad bleibt unveraendert.

Belegt (exportierte App, nacktes Umfeld, frisches HOME):
  box_010       -> models/military_desert/props/box_010.glb   (vorher: leer)
  baum_kiefer_1 -> models/baum_kiefer_1.glb
  fehlende_glbs=0   PROBE ERGEBNIS: OK
Suiten: gui_smoke 92 OK, Import 0 Fehler.
This commit is contained in:
scopedvr-operator 2026-10-20 10:01:57 +00:00
parent a62357dad8
commit 3d7ba993d5

View file

@ -144,11 +144,20 @@ static func _kandidaten(oid: String) -> Array:
var rel := str(_eintrag(oid).get("glb", "")) var rel := str(_eintrag(oid).get("glb", ""))
if rel.begins_with("res://"): if rel.begins_with("res://"):
var sub := rel.substr(6) var sub := rel.substr(6)
# Operator-Korrektur 20.10. (Eigenständigkeits-Beweis): der mitgelieferte
# models/-Ordner NEBEN der App enthält die Pack-Struktur DIREKT
# (models/military_desert/props/box_010.glb) — nicht unter
# models/assets/objekte/. Ohne den zweiten Kandidaten unten werden ALLE
# verschachtelten Pack-Objekte in der eigenständigen App nicht gefunden
# (belegt: barrel_001/box_010 -> leer, fehlende_glbs=2 trotz 334 GLBs).
var sub_kurz := sub.trim_prefix("assets/objekte/")
for quelle in quellen(): for quelle in quellen():
var q := str(quelle) var q := str(quelle)
var marke := "/assets/objekte" var marke := "/assets/objekte"
var wurzel := q.substr(0, q.length() - marke.length()) if q.ends_with(marke) else q var wurzel := q.substr(0, q.length() - marke.length()) if q.ends_with(marke) else q
out.append(basis.path_join(wurzel).path_join(sub)) out.append(basis.path_join(wurzel).path_join(sub))
if sub_kurz != sub:
out.append(basis.path_join(wurzel).path_join(sub_kurz))
for quelle in quellen(): for quelle in quellen():
out.append(basis.path_join(str(quelle)).path_join(oid + ".glb")) out.append(basis.path_join(str(quelle)).path_join(oid + ".glb"))
return out return out