slyphax
cda6f48b01
GLB-View (t_9b50b231): echte Modelle im Editor-Viewport — Platzhalter nur als Fallback.
...
- GlbMeshStore (neu): laedt OID+.glb aus konfigurierbaren Quellen
(ProjectSettings scopedvr/editor/glb_quellen, Voreinstellung =
Sibling-Repos, wie gen_thumbs; plattformneutral, relative Pfade),
backt ALLE MeshInstance3D der Szene in EIN normalisiertes ArrayMesh
(Fusspunkt y=0, XZ zentriert — wie scopedvr_export.normalisiere),
Materialien/Texturen bleiben je Oberflaeche erhalten.
- Cache pro OID (Parse nur einmal; fehlende Datei ungcached, Parse-Fail
negativ gecached).
- map_view_builder: echtes GLB vor Platzhalter; kein half_height-Lift
(schon Fusspunkt-Koordinaten), Scale ueber Node-Scale + AABB-Metas
mal Scale; Auswahl-Orange nur als Override im Auswahl-Zustand
(Texturen bleiben sichtbar). fehlende_glbs-Meldung an die Stats-Zeile.
- interaction (Ghost-Preview): nutzt denselben echten Mesh-Pfad;
Platzier-Status haengt „(Platzhalter — echte GLB fehlt)“ an.
- tests/test_glb_view.gd (neu, in run_tests.sh): Moosfelsen-Probe
(echtes GLB > Platzhalter-Vertices), stein_mittel_1 1026>>36,
Normalisierung y=0/XZ-zentriert, Cache-Identitaet, Viewport-Rebuild
Fusspunkt == Terrainhoehe (b20dff2 ), Fallback + fehlende_glbs.
Suite: 773 checks, alle gruen.
2026-10-17 17:23:56 +00:00
Hermes (godot-vr)
08a75ac430
Shortcuts 2/3 (t_55257792): R-Drehen + Pfeil-Raster + PgUp/Down + Strg+Bild↑ + Greifen + Terrain-Pinsel-Tasten.
...
- R = Auswahl 90° drehen (Szene um Auswahl-Mitte, Bauen-Bauteil um Fußpunkt, Gruppe komplett; Umschalt+R = -90°), Mausrad-Feindrehen 15° bleibt
- Pfeiltasten = 2-m-Raster-Verschiebung, Richtung = Kamera-Blickrichtung auf nächste Weltachse gerastet (MoveMath.nudge_delta, pure)
- Bild↑/↓ = ±0,25 m auf der GANZEN Auswahl (EIN Undo), Strg+Bild↑ = Fußpunkt aufs Terrain/Boden absetzen
- G = Greifen (Blender-Semantik): Auswahl hängt an der Maus, LMB setzt mit Raster-Snap, Esc rollt byte-genau zurück (ShortcutPolicy cancel_grab)
- Terrain-Pinsel: [ / ] = Preset-Zyklus Klein/Mittel/Groß (Slider/Label/Preset-Buttons wandern mit), 1-4 = Heben/Senken/Glätten/Malen (PAINT-Clamp-Fix, Palette mit Malen sichtbar); Ziffern NUR im Terrain-Werkzeug
- Strg halten = temporärer Snap-Zwang beim Bewegen/Greifen/Platzieren
- Tests: test_shortcuts.gd 157 Checks (R byte-genau, Pfeil-Raster, Lift-Stufen, Boden-Snap, Greifen+Esc, Pinsel-Zyklus, History-Eintrag pro Operation), test_gui_smoke.gd erweitert (38 Checks) und in run_tests.sh aufgenommen; F-Regression seit Karte 1 damit abgedeckt
- Suite 9/9 grün (696 Checks), Builder-Export 21/0, Parse-Check 11 Dateien grün
2026-10-16 17:53:10 +00:00
Hermes (godot-vr)
095af5ff3c
Shortcuts 1/3 (t_c46d31c2): Freelook-Flug + F-Focus + Esc-Policy + Entf-Mehrfachauswahl + Strg+D (+2 m X) + Strg+LMB-Mehrfachauswahl.
...
- InputMap-Actions mit physischen KEY_*-Codes (shortcut_keys.gd, idempotent) — DE-Layout/Windows-unabhängig
- Freelook: RMT halten = Umsehen+Flug (WASD/EQ, Shift x3, Alt x0.3, Rad = Grundtempo dauerhaft), Shift+F toggle; Orbit bleibt Default, Flug-Exit ohne Kamera-Sprung (FlyMath pure)
- F zentriert Auswahl (SelectionMath.focus_center); Esc = pure Prioritätskette (ShortcutPolicy)
- Strg+LMB + Baum SELECT_MULTI: Mehrfachauswahl synchron Szene↔Baum; Entf/Strg+D wirken auf die ganze Auswahl (EIN Undo-Schritt)
- docs/tasten.md = deutsche Source of truth (Karten 2/3 ergänzen)
- Tests: test_shortcuts.gd NEU 70 Checks, Suite 571 grün, Builder-Export 21/0, Parse-Check grün
2026-10-16 17:43:17 +00:00
Hermes
e2954a38ed
M2-Karte t_97ea59c5: Modular Builder fest integriert — Bauen-Modus im App-Skelett. Addon CC0-Code unter addons/modular_builder (Demo + nicht-CC0-Texturen entfernt, ADDON_LIZENZ.txt), Plugin im Godot-Editor aktivierbar; App bekommt eigenen Bauen-Modus (build_tool.gd) auf derselben Runtime-Geometrie (modular_piece_geometry/_detail) — keine Godot-Editor-API im App-UI. 10 Bauteile (Fundament/Boden/Wand/Tür/Fenster/Giebel×2/Dach×2/Treppe), 2-m-Raster (ecke/mitte), Klicken zum Stapeln (Ray-Pick auf gebackenen Flächen), 90°-Drehen, Anheben 0,2 m. UNDO: 1 ActionHistory-Eintrag pro Bauteil (Snapshot Block gebaeude). Speichern: Bauteile als optionale Sektion gebaeude in .svmap (checksum-neutral, Legacy-Maps laden weiter); Baken deterministisch aus Teilen (Editor-Ansicht + Match-Export in Karte 2). Statuszeile clip_text (langer Text sprengte Layout → rechtes Panel weg). Tests: test_bauen.gd 87 Checks (Katalog, Meshes, Snap, Baken/Ray, Undo, Save/Laden, Legacy), Suite 421 Checks grün; GUI-Smoke --bauen-demo (Screenshots + Save/Laden-Flow).
2026-10-15 23:12:06 +00:00
hermes-godot-vr
0eae5f56ad
M2-Karte t_b84af40f: '▶ Karte testen' (Editor-Seite). Großer deutsch beschrifteter Button oben + Menü-Eintrag: exportiert die AKTUELLE Map (auch ungespeichert) nach user://testrun/<name>.svmap über dieselbe SvmapIO-Validierung wie das Speichern, sucht den scopedvr-client (Klon neben dem Editor ODER client_dir in user://scopedvr_editor.cfg, dokumentiert im README-Abschnitt 'Karte testen') und startet ihn als EIGENEN Prozess (godot --path <client> -- --testmap <map> --mock-master) — Editor bleibt offen, Spiel beendet sich selbst sauber per ESC. Ungültige Map → Klartext-Block statt Start. TestRun-Klasse komplett static + headless testbar. Tests: tests/test_testrun.gd (14 Checks: Temp-Export-Roundtrip, ungültige Map blockiert, Client-Suche inkl. Konfig-Vorrang, Godot-Findung, exakte Argumentliste); run_tests.sh + parse_check.sh um test_testrun/test_run.gd erweitert — volle Suite 220 Checks grün. GODOT-Pfad-Default in tests/run_testmap_e2e.sh des Clients jetzt auto-erkennend (Sly-PC-Pfad → ~/bin/godot4 → PATH).
2026-10-15 15:36:24 +00:00
Hermes (godot-vr)
eca11bbf83
Objekt-Ops: Duplizieren (Strg+D) + Anheben/Absenken (Bild hoch/runter) + Spiegeln (X/Z)
...
Karte t_7567a06f. Hoehe wohnt direkt in object.pos.y — KEIN svmap-Format-
Feld noetig (V9 erlaubt freie y-Werte in bounds; Server-Loader geprueft).
Absenken stoppt am Terrain (nichts begraben), Anheben deckelt auf
bounds.max. Spiegeln am Objekt selbst (Position bleibt): X → −rot,
Z → 180°−rot selbstinvers. Alles über ActionHistory (Merge-Tags für
Lift-Serien), deutsche UI + Klartext-Status, dragt behält Terrain-Abstand.
test_ux.gd: 90 Checks (42 neu), Suite 5/5 grün, xvfb-Smoke UI-Bau ok.
2026-10-15 15:32:24 +00:00
Hermes godot-vr
ce1dc4130d
run_tests.sh: test_spawns in Regression-Liste (nach Merge t_c4162c5d)
2026-10-15 13:37:36 +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