Commit graph

41 commits

Author SHA1 Message Date
slyphax
bb9eb71770 Map-Loadout: Loadout-Bereich im Map-Tab (Spieler-Loadout oder festes Map-Loadout mit Aufsaetzen), V18, Undo/Redo
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-28 09:10:16 +01:00
slyphax
8345903ce7 Container: offene Varianten (eine Tür offen / beide Türen offen / ohne Türen), 8 Farben, Innenseiten mit Paletten-Textur + Trimesh-Kollision
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-27 23:42:09 +01:00
slyphax
bcbd416960 Bauen: Geschoss-Wahl (Decken mitten im Raum), 1 cm Wand-Überstand gegen Z-Fighting, Dach aus Einzelteilen, größeres Einstellungen-Fenster
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-25 22:47:15 +01:00
slyphax
fa2feee780 Thumbnails für die großen Dächer/Giebelwände (4 m, 6 m)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-25 20:32:53 +01:00
slyphax
3f0d0f3f33 Map-Editor: UI aufgeräumt, Auswahl-Sync, Drag&Drop, Bauen (Wände bündig, Geschosshöhe, große Dächer)
- Tabs Auswahl/Prüfen/Test-Start/Einstellungen/Symmetrie weg; Spawn-Zonen, Test-Start, Symmetrie im Map-Tab; Einstellungen-Fenster (Gitter, Höhenlinien, Symmetrie-Modus, UI-Größe, Raster-Snap, Gizmo-Schritt, Karte prüfen)
- Bauen-Tab nur Bauteile; Objekt-Werkzeuge entfernt
- Klick in der Map-Inhalt-Liste wählt in der Szene aus (SELECT_MULTI feuert nur multi_selected)
- Objekt-Kachel per Ziehen in die Szene setzen
- Wände bündig in der Zelle, gleiche Geschosshöhe mit/ohne Decke, Dächer/Giebelwände 4 m und 6 m

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-25 20:32:32 +01:00
slyphax
ab9a798343 Thumb-Importdateien der bau_*-Bauteile nachgetragen 2026-10-25 16:32:21 +01:00
slyphax
491a47d3f1 Editor-Bibliothek auf das Military-Desert-Pack umgestellt
- 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>
2026-10-25 16:31:28 +01:00
slyphax
a76c3ecae7 Bauen-Modus neu: Bauteile als normale Objekte (bau_*), Snap an Kante/Zelle/Ebene, Gebäude = Gruppe
- BauKatalog: 12 Teile (Fundament, Boden, Wände mit Tür/Fenster/Scharte, Brüstung, Pfeiler, Giebel, Dächer, Treppe) auf Basis der CC0-Geometrie des Modular Builder 0.2.0, Wandhöhe 3 m
- BuildSnap: Wände auf Zellkanten, Böden in Zellmitte, Höhe aus Ebenen statt Klickhöhe, Ersetzen (Tür in Wand)
- Gebäude kopieren/auswählen/löschen im Bauen-Tab, Kopien bekommen eigene Gruppe
- Kollision serverkonsistent über Trimesh-Dateien (Türen/Fenster echte Löcher), tools/gen_bauteile.gd erzeugt GLB, Kollision, Registry-Fragment
- Alte gebaeude-Sektion wird beim Laden migriert, altes Bauen-Werkzeug entfernt, Resize behält Gruppennamen
- Tests: test_bauen (258 Checks), Playtest läuft Treppe/Tür

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-25 16:30:15 +01:00
slyphax
40ca5ab6ba Terrain-Malen: weiche, organische Kanten statt 1-m-Pixelblöcke
Sly 25.10.: „immer noch harte Kanten beim Malen“. Ursache: die Splat-Textur
hatte beim feinen 1-m-Raster genau einen Texel je Materialpunkt und wird
nearest gesampelt → jede Zelle ein harter Block.

- Shader liest die Material-ID-Karte (R8, ein Texel je Punkt, texelFetch)
  und mischt PRO PIXEL bilinear über die 4 Nachbarpunkte.
- Leichter Domain-Warp (Value-Noise in Rasterzellen, eine Oktave) verwackelt
  die Abtaststelle → keine Rastertreppen, natürliche Kante.
- Malen aktualisiert nur noch die Bytes der Karte (kein Splat-Neuberechnen).
- TerrainArrays.material_image (Spiegel-Datei, identisch im Client).
- Render-Probe tests/probe_mal_weich_render.gd (vorher/nachher geprüft).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-25 00:23:18 +02:00
Hermes (scopedvr-dev)
1d8763b881 Karte t_5c94d098 Terrain-Blending v2: Splat-Texel-Dichte folgt der KARTENGROESSE
Gleiche Ursache wie im Client (BEWEISE.md in work/terrain_blending_v2_t_5c94d098_bilder/):
splat_side_for(129) = 512 px = 2 m/Texel auf der 1024-m-Standardmap (8 m/Zelle)
-> Gewichtsrampe in 2-m-Stufen, sichtbar als Baender/Stufen an der Materialgrenze.

Aenderung Editor:
- library/terrain_arrays.gd (Spiegel-Datei, byte-identisch zum Client):
  splat_side_for(res, map_size_m = 0.0) = MAX(4 Texel/Zelle, 1 m/Texel aus der
  Karten-Kantenlaenge), Zweierpotenz, geklemmt [256, 1024]; build_splat_bytes
  ohne Allokation je Texel + Schnellpfad (gleiche ID in allen vier Nachbarzellen)
  -> unveraenderte Bytes, deutlich schneller.
- src/viewport/terrain_mesh.gd: _build_splat bekommt size_x/size_z und gibt sie an
  splat_side_for; der Live-Sub-Rect-Pfad greift nur noch, wenn auch die
  Kantengroesse stimmt (Size-Aenderung ohne res-Aenderung baut die Splat neu).
- tests/test_terrain_splat.gd (Spiegel, identisch im Client): +6 Kartenmass-Checks
  (31/31).

Suiten (frischer Forgejo-Klon): test_terrain_splat 31/31, test_terrain 155/155,
test_terrain_mirror 106/106.
2026-10-22 19:37:30 +00:00
Hermes (scopedvr-dev)
04c6c67ba8 Karte t_7a0a6b79 Terrain-Qualitaet: Splat-Top-2-Blend (weiche Uebergaenge), Live-Sub-Rect beim Malen, Ausbrennen-Fix (Shading-Normalisierung) 2026-10-21 22:12:04 +00:00
Hermes (scopedvr-dev)
f5a4ab54d0 Wasser pro Map (t_28fdef03): V20-Validator, Panel-Regler, Vorschau-Renderer
- src/svmap/svmap_io.gd: _validate_wasser (V20) — optional, endliche Zahl,
  Terrain-Hoehenbereich +/-10 m; identisch zum Match-Server
- src/ui/panels/map_panel.gd: Regler 'Wasserhoehe' mit Sofort-Rebuild;
  ganz links (-10) = Feld ENTFERNEN (Legacy-sauber, keine Migration)
- src/viewport/map_view_builder.gd: _build_wasser nach _build_terrain
  (Senken fuellen sich); Legacy ohne Feld = kein Wasser-Node
- src/viewport/terrain_mesh.gd: Matsch-Ring in relief_color (Ufer-Faktor,
  dieselbe Formel wie der Client)
- library/svmap_wasser.gd + src/viewport/wasser.gdshader: Spiegel-Modul,
  byteidentisch zum Client (Identitaets-Vertrag der Vorschau)
- tests/test_wasser.gd: 33 Checks (W1 V20, W2 Panel, W3 Vorschau + Matsch-Mathe, W4 Spiegel)

Verifiziert: Editor-Suite 33/33, test_editor_svmap 31, test_terrain 155,
test_gui_smoke 92, test_skybox 23 — alle OK
2026-10-21 06:13:59 +00:00
Hermes (scopedvr-dev)
8468b89456 Terrain-Textur-Panel + Editor-Spiegel (t_ab408127): Terrain-Panel zeigt die 20 CC0-Materialien; terrain_mesh bindet terrain_arrays.res (Spiegel aus Client via tools/sync_terrain_tex.sh, Ordner OHNE .gdignore — ResourceLoader braucht den Index); TerrainArrays-Klasse spiegelgleich in library/ (identischer Pfad wie im Client — .res-Script-Pfad löst in beiden Repos auf); Kontur-Shader bekommt Textur-Sampling + Höhenlinien; V15-Test auf neue Palette (ID 20 abgelehnt, 3 gültig); test_terrain 155/155 2026-10-21 00:48:41 +00:00
Hermes (scopedvr-dev)
338e7152a0 ALLES Trimesh (t_ff7fc919): Registry + 250 Kollisions-Suppen synchron; KolliderBau.hindernis_aabb aus der Suppe (Spiegel Client/Server); Identitäts-Probe um Trimesh-Fälle erweitert (12 IDENT-Zeilen, ALL OK) 2026-10-20 22:58:42 +00:00
Hermes (scopedvr-dev)
1f1a413065 Begehbare Gebäude (t_9558038d): Registry + Kollisionsdateien gezogen
- library/objects.json vom Match-Server (dc9432b): 37 Gebäude jetzt
  shape=trimesh mit collision.quelle -> library/kollisions/<oid>.json
  (36 038 Dreiecke gesamt, objects.json bleibt klein).
- library/kollisions/ (37 Dateien) im Editor-Repo. Editor-Platzhalter nutzt
  weiterhin collision.size — Optik/Anzeige unverändert.
- Suiten nach dem Sync grün: test_library 101, test_object_mirror 74,
  test_library_browser_ui 30, test_editor_svmap 31, test_map_tint 31/0.
2026-10-20 19:50:36 +00:00
Hermes (scopedvr-dev)
c5bdb0518e Pack-Original-Optik (t_279df760): gen_thumbs auf Pack-Palette (Materialname->Demonstration_*.png, Client assets/textures/military_desert) + 345 Thumbs neu gerendert
- _camo_tex_setzen -> Pack-Zuordnung je MATERIALNAME (PACK_TEXTURE_MAPPING.md
  im Client = Quelle der Wahrheit): military_base -> Demonstration_Textures1,
  picture_1/_2 -> Demonstration_picture_1/_2; je Surface ihre Textur
- Thumbs: alle 345 Bibliotheksobjekte neu (Palette-Objekte zeigen Pack-
  Farbfelder, Multicam-Objekte echtes Multicam statt der alten Camo-Box-Projektion)
- Beweis-Thumbs: barrier_001 (weiss/rot wie Pack), cactus_001 (Pack-Gruen
  27,94,32 per UV-Sampling belegt), tent_001 (Palette + Multicam-Flaechen),
  apc_002 (Sand/Multicam)
2026-10-19 23:05:47 +00:00
Hermes Agent
370917f96e D11 (t_c8748efc): Thumb-Neurender mit Camo-Fix — 292 Thumbs neu gerendert, gen_thumbs.gd lädt Multicam-Texturen manuell (GLTFDocument kann externe URIs in Sibling-Repos nicht laden). 2026-10-19 21:31:57 +00:00
Hermes (scopedvr-dev)
366d482a1a A6-Aufraeum (t_a6a96e4c): Beispiel-Faesser entfernt — Thumbs + .import geloescht, Registry-Sync (345 Objekte, note erhalten), probe_store_a6 auf barrel_001 umgezogen 2026-10-19 20:00:52 +00:00
Hermes (scopedvr-dev)
f4748af371 D9 (t_9962eba7): 293 Bibliotheks-Thumbs neu gerendert — Kategorie-Farbe statt ausgewaschen
Folge der Farbraum-Korrektur im Client (f04b515): gen_thumbs laedt die GLBs
direkt aus ../scopedvr-client/assets/objekte, deshalb zeigen die 293
Military-Thumbs jetzt den gewuenschten Anzeige-Wert (Panzer oliv statt fast
weiss, Waende tan, Kisten holzbraun). Alt-Bestand-Thumbs byte-identisch
(Gegenprobe: genau 293 von 347 PNG geaendert).
2026-10-19 19:08:59 +00:00
Hermes (scopedvr-dev)
ccf1c43f2e D8 (t_ba4278f8): Thumbs neu gerendert (347 Objekte, 27 Bilder neu) nach dem Alt-Bestand-Fusspunkt-Bake
Stichprobe angesehen: baum_kiefer_1, stein_mittel_2, box_018, tank_001 - Objekt vollstaendig und mittig im Bild.
2026-10-19 19:04:34 +00:00
Hermes (scopedvr-dev)
91e2b03843 PROBE entfernt (t_f73a1cc5): Nachweis abgeschlossen 2026-10-19 18:41:56 +00:00
Hermes (scopedvr-dev)
2bd1e671e4 PROBE (t_f73a1cc5): lose-Datei-Kollision nachstellen — wird nach dem Beweis entfernt 2026-10-19 18:41:27 +00:00
Hermes (scopedvr-dev)
3e07e91f5a Revert "Pack-Texturen (t_9675e48d): Editor-Viewport + Thumbs texturiert"
This reverts commit c0cbe4bb0c.
2026-10-19 18:33:15 +00:00
Hermes (godot-vr)
785a858ae0 Thumb-.import vervollstaendigt (30 Fahrzeug-Thumbs, t_9675e48d Nachziehen) 2026-10-19 18:31:42 +00:00
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
Hermes (scopedvr-dev)
e1e07e57b0 D6 (t_31e800f2): Editor-Sync — 30 Fahrzeug-Thumbs + Map-Builder-Nachweis
- library/objects.json = 347 Objekte (Merge-Stand Match-Server)
- library/thumbs/: 30 neue Thumbs (tank/apc/air_defense/antenna), in
  Kategorie-Farbe Oliv (D0-Muster) — uebrige 317 Thumbs byte-identisch
- tests/probe_d6_mapbuilder.gd: 3 Fahrzeuge ueber den ECHTEN Map Builder
  platziert (Panzer + Turm exakt auf dem Turm-Ring 1,5929 m + Transportpanzer,
  dazu die Kanone auf 2,1273 m), Kollisionsboxen als Drahtgitter,
  PNG 1600x1000 — PROBE_D6_MAPBUILDER_OK
2026-10-19 18:25:15 +00:00
Hermes (scopedvr-dev)
6572f1e10c D0 (t_47f05319): 317 Thumbs mit Kategorie-Farben neu gerendert + Thumb-Licht entschärft
- gen_thumbs: ambient 0.7->0.35, sun 1.1->0.85 — helle Albedos überstrahlten
  sonst zu Weiss im 128px-Thumb
- alle 317 Thumbs neu (263 Military-Desert-GLBs mit baseColorFactor-Farben)
2026-10-19 18:22:32 +00:00
Hermes (scopedvr-dev)
6f81add8f4 D7 (t_f77bc681): Editor-Notiz wiederhergestellt + .import-Dateien der Thumbs vervollstaendigt
* library/objects.json: D4's Sync (6c65b13) hatte die Editor-eigene `note` mit
  der Server-Notiz ueberschrieben (c92d35d/29b1668/0f86182 tragen alle die
  Editor-Notiz). Registry-Inhalt unveraendert: 317 Objekte, Merge --check gruen.
* library/thumbs: 147 fehlende .import-Dateien nachgezogen (88 Natur-Thumbs aus
  D5 + 59 Prop-Thumbs aus D4) — Godot regeneriert sie sonst bei jedem Lauf neu
  und hinterlaesst ungetrackte Dateien. Die Thumb-PNGs selbst sind unveraendert
  (317 PNG, Thumb-Zahl == Objekt-Zahl).
2026-10-19 18:15:22 +00:00
Hermes (scopedvr-dev)
6c65b13a8f D4 (t_691b51ce): Editor-Sync — 59 neue Prop-Thumbs + Map-Builder-Probe (3 Props mit Kollisionsboxen) 2026-10-19 18:11:07 +00:00
Hermes (scopedvr-dev)
29b1668f57 D3 (t_6690c59c): Gebaeude in der Editor-Bibliothek (93 Objekte, 37 neue Thumbs) + Map-Builder-Render-Probe 2026-10-19 18:08:05 +00:00
Hermes (scopedvr-dev)
56a808f052 D1 (t_78746c97): Waende in der Editor-Bibliothek (Registry-Kopie + 50 Thumbs) + Render-Probe 2026-10-19 18:07:02 +00:00
Hermes (scopedvr-dev)
c0d426152e D2 (t_33250710): Editor-Bibliothek 83 Objekte + 27 Absperrungs-Thumbs + Renderprobe
- library/objects.json: Editor-Kopie (note behalten), 83 Objekte.
- library/thumbs: 27 neue Thumbs (echte GLB-Meshes), Alt-Thumbs unveraendert.
- tests/probe_d2_barriers_render.gd: Map-Builder-Beweis — 3 Objekte ueber
  map_view_builder platziert, PNG gerendert, Fußpunkt/Groesse gemessen.
2026-10-19 18:06:55 +00:00
Hermes (scopedvr-dev)
0f86182a2c D5 (t_e81aed01): Editor-Sync — Bibliothek 144 Objekte + 88 Natur-Thumbs (gen_thumbs) 2026-10-19 18:05:41 +00:00
Hermes (scopedvr-dev)
310aa695e6 A6 (t_c5a27ca7): Editor loest Kategorie-GLBs aus der Registry auf (GlbMeshStore + gen_thumbs), Thumbs fuer Beispiel-Objekte 2026-10-19 18:02:12 +00:00
Hermes (scopedvr-dev)
9dca88e10e A6 Fundament (t_c5a27ca7): Fragment-System + Merge + Editor-Sync fuer Baukasten-Objekte
library/objects.json ist generiert: library/objects.d/*.json (ein Fragment pro
Kategorie) + tools/merge_object_library.py (idempotent, --check, --aabb-Messung,
--new-fragment). base.json = Alt-Bestand (54 Objekte) unveraendert. Beispiel-
Kategorie beispiel_fass_01/02 beweist die Kette end-to-end. Doku:
docs/objekt_fragmente.md.
2026-10-19 18:00:24 +00:00
Hermes (godot-vr)
ffb27645d4 Terrain-Relief lesbar machen (t_3ebe4086) — Sly-Befund 17.10. "Erhoehungen/Vertiefungen kaum erkennbar, alles knallgruen und hell".
1) Hoehen-Faktor kontrastreicher kalibriert: S-Kurve t*t*(3-2t) statt linear, Spanne 0.72..1.15 -> 0.58..1.28 (Senken deutlich dunkler, Huegel deutlich heller).
2) Pseudo-Licht (Hillshade) in den Vertex-Farben: Terrain-Normale x feste Sonnenrichtung RELIEF_SUN=(0.45,0.75,0.5) (seitlich-hinten fuer den Default-Blick), Licht-Faktor 0.62..1.22, Gesamtklemme 0.40..1.35. Formel/Konstanten IDENTISCH zum Match-Client (svmap_terrain.gd im scopedvr-client-Repo) — relief_color() static, Material-Farben unangetastet.
3) Editor-only Extra: Hoehenlinien alle 1 m + kraeftige 5-m-Indexlinie (terrain_contour.gdshader, UV2.x = Vertex-Hoehe, fwidth-stabil, unshaded). Der Quest-3-Vertrag "kein Custom-Shader" gilt fuer das SPIEL — der Editor darf teurer sein (DECISIONS-Konvention); der Match-Client bleibt StandardMaterial3D. Flach-Map-Schutz: Linien erst ab 2 m Gesamtrelief, UI-Toggle "≈ Hoehenlinien" (Default AN, nach jedem Rebuild re-synchronisiert).
Material unshaded: das gebackene Shading ist exakt das sichtbare (kein Doppel-Shading mit dem Viewport-Sonnenlicht), deterministisch fuer die Render-Probe.

Tests: test_terrain +19 Relief-Checks (99 gesamt): Tal/Huegel-Delta > 0.10 UND > 1.2x alte Kalibrierung, Hang-zur-Sonne heller, Stufen-Kanten-Delta > 0.08 UND > 1.2x alt, Materialfarben (Gras/Sand/Fels) unterscheidbar, Alpha=1.0, Kontur-Toggle + Flach-Map-Schutz. Suite 11 Suiten ALL OK: test_ux 137, shortcuts 198, editor_svmap 31, terrain 99, library 94, glb_view 28, spawns 52, testrun 14, bauen 87, gui_smoke 68, rmb_vorrang 32. (Hinweis: gui_smoke-F5 schlug in DIESEM Workspace nur wegen des scopedvr-client-Symlinks neben dem Editor auf — TestRun.find_client findet den Client dann wirklich; ohne Symlink = Standard-Layout: 68/68.)
Renderprobe (xvfb, opengl3): tests/probe_terrain_relief_render.gd — Stufen-Delta 0.149 (>0.10), Hoehenlinien Pixel-Diff 0.167, Huegel/Senke-Fenster-Delta 0.225 — ALL OK 3/3; PNGs im Scratch (terrain_relief_stufe.png, terrain_relief_demo.png).
Housekeeping: fehlende .png.import-Sidecars der M2-Natur-Thumbs nachgereicht.
2026-10-17 18:05:20 +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
slyphax
84bc08145b M2: Map-Editor MVP App-Skelett — svmap laden/speichern (V1-V14), Viewport-Grundgeruest, Neue-Map-Dialog (t_5badf371) 2026-10-15 11:34:32 +02:00