Commit graph

6 commits

Author SHA1 Message Date
scopedvr-dev
8f598dc67d Test-Fix (t_03d0f442): test_library-Katalog-Check datengetrieben statt harte 54
Die harte Erwartung lib.size() == 54 (15 Basis + 39 Natur-Update) brach bei
JEDER Kategorie-Karte: schon der A6-Stand hatte 56 (2 Beispiel-Objekte), nach
D1-D5 sind es 317. Der Check ist jetzt datengetrieben:

- Basis-Bestand bleibt garantiert: lib.size() >= 54 (Merge-Fundament A6) —
  der Katalog darf nur wachsen, schrumpfen failt weiterhin.
- Neu: Registry <-> Thumbnails deckungsgleich (je OID ein 128px-Thumb, keine
  verwaisten Thumbs) — fängt vergessene/abgebrochene sync_objects-Läufe.
- Neu: OID-Vergleich gegen die gemergte Match-Server-Registry
  (../scopedvr-match-server, Quelle der Wahrheit aus objects.d/*), wenn das
  Sibling-Repo liegt; ohne Sibling verkürzt sich der Test statt zu failen.
- Testgruppe Registry-Fußpunkt: "alle 54 Objekte" -> dynamische Zahl im Titel.

Suite grün auf main: 95/95 checks (ist 317). Beweis Drift-Erkennung: eine
injizierte Fremd-OID in der MS-Registry failt den neuen Vergleich gezielt.
2026-10-19 18:23:56 +00:00
Hermes (godot-vr)
b20dff2b5d Terrain C (t_4092e3a0): Objekt-Platzierung == Ghost-Preview — EIN Platzier-Pfad, Fusspunkt auf Terrainhoehe.
Root-Cause: Ghost-Preview und Platzierung nutzten zwei unterschiedliche
Pfade/Strukturen — der Ghost-Root trug den halben Mesh-Lift selbst
(Root=Y+half), das platzierte Objekt hebt nur das Kind-Mesh; die
Platzierung rastete X/Z und hob Y auf terrain_height_at des UNGERASTETEN
Punkts. Bei Raster-Snap und an Haengen wich die platzierte Position von
der Vorschau ab.

Fix — EIN Pfad (ObjectOps.placement_foot): Raster-Snap auf X/Z, dann
Y = Terrainhoehe am GERASTETEN Punkt (SvmapDocument.terrain_height_at).
Ghost-Root = Fusspunkt, Kind-Mesh um half_height gehoben — identische
Struktur wie map_view_builder. Objekt-Cursor trifft jetzt das GELAENDE
(TerrainField.raycast, gleicher Pfad wie Terrain-/Bauen-/Spawn-Werkzeug)
statt der flachen Basis-Ebene; Hoehen-Cache dekodiert einmal pro
Struktur-Aenderung (refresh_terrain_cache aus _after_structure_change).

Tests (test_library 40->94 Checks): Platzier-Fusspunkt (Rampe 0..20 m:
Fusspunkt == Terrainhoehe, Ghost-Pfad == Platzierungs-Pfad, Raster-Snap-Y
am gerasteten Punkt), Registry-Fusspunkt (alle 54 Objekte: Mesh-Unterseite
== pos, kein Schweben/Eingraben), Ghost-Preview == platziertes Objekt mit
simulierter Kamera (Treffer-Zelle == Cursor-Zelle, <5 cm). Editor-Suiten
501 Checks gruen, Builder-Export 21/0, GUI-Smoke 20 gruen.
2026-10-16 17:36:30 +00:00
Slyphax
905edc021a M2 Natur-Update t_7cf80244: Bibliothek 54 Objekte in Gruppen bäume/felsen/pflanzen/gras/pilze. library_browser: 39 deutsche Namen, alte Gruppe 'natur' thematisch aufgelöst (tree_pine->bäume, rock_large/boulder_small->felsen, bush_small->pflanzen). mesh_shapes: 'none' = flache Fußpunkt-Scheibe (Deko ohne Kollider bleibt sichtbar/wählbar). gen_thumbs: rendert jetzt ECHTE GLB-Meshes aus dem Mesh-Lager (Sibling-Repo, GLTFDocument ohne Import-System), Fallback weiter Platzhalter — alle 54 Thumbnails neu gerendert. test_library: 15->54 + Gruppen-Checks, Suite 56 Checks grün (alle 6 Editor-Suiten OK). 2026-10-15 23:08:24 +00:00
Slyphax
5dd37e32d7 M2-Karte t_d8be9ed7: Struktur-Objekte im Editor. Bibliothek +15 Objekte: bruecke_holz (Bruecke Holz), hoehleneingang, felsbogen — deutsche Namen, Gruppe 'bauwerke', Thumbnails gerendert. mesh_shapes: SHAPE_COMPOUND-Platzhalter — EIN Mesh aus allen Verbund-Teilen, in Fusspunkt-Koordinaten gebacken (pos-Versatz + rot_deg), so sind Rampe/Durchgaenge im Editor sichtbar wie die echte Kollision; neu center_height() fuer das Drehzentrum der Auswahl (map_view_builder nutzt es). test_library: 15 Objekte, Undo/Redo-Zaehler dynamisiert -> Suite 334 Checks gruen. 2026-10-15 19:21:25 +00:00
Hermes godot-vr
cddebb8c26 M2-Karte t_9117ee32: Objekt-Pipeline 'Fass' — Registry-Sync + Thumbnail; Tests: 12 Objekte, Namens-Fallback ohne Quellcode-Touch 2026-10-15 16:07:25 +00:00
Hermes (godot-vr)
3a5c9d44bb Objekt-Bibliothek: Gruppen-Browser mit Thumbnails, Snap-to-Ground, Raster-Snap, Tests
- Bibliothek-Browser: 11 etablierte Objekte in deutschen Klapp-Gruppen
  (Kisten & Barrieren / Bauwerke / Natur, neue IDs wandern nach Sonstiges)
- 128-px-Thumbnails einmalig gerendert (tools/gen_thumbs.gd, xvfb) und
  committed; fehlendes PNG = sauberer Text-Fallback (LibraryBrowser)
- Snap to Ground: ein Klick setzt ALLE schwebenden Objekte auf Terrain-Höhe,
  EIN Undo-Eintrag (ObjectOps.snap_to_ground)
- Raster-Snap (1 m): Toggle — rastet Platzieren und Ziehen auf ganze Meter
- Deutsche Namen nach LibraryBrowser verschoben (headless testbar)
- tests/test_library.gd: 47 Checks (Bibliothek, Gruppen, Thumbnails, Snap,
  CRUD+Undo über alle Objekte, svmap-Roundtrip byte-identisch, Poly-Budget)
- Desktop-Smoke: --library-demo erzeugt Screenshots (lokal via xvfb verifiziert)
- UI-Layout: linke Spalte min 909→797 px, Statusleiste wieder vollständig sichtbar
2026-10-15 12:18:11 +00:00