Scene View Symbole als SVG/PNG #175

Closed
opened 2026-09-19 16:32:50 +02:00 by admin · 2 comments

momentan werden Symbole per switch case gezeichnet. Angenehme wäre wenn die Symbole als SVG files abgelegt sind, und diese dargestellt werden.

momentan werden Symbole per switch case gezeichnet. Angenehme wäre wenn die Symbole als SVG files abgelegt sind, und diese dargestellt werden.
admin added this to the Development project 2026-09-19 16:32:50 +02:00
admin moved this to Next in Development on 2026-09-19 16:32:55 +02:00
Owner

Umgesetzt in 1c212b1

  • Fünf Symbole kommen jetzt aus SVG-Dateien in src/viewport/icons/: behavior, container, rigidbody, camera, particles. Ein Icon ändern: Datei bearbeiten, npm run build.
  • Code bleibt, was vom Objekt abhängt: Kamerarahmen, Collider-Umriss, One-Way-Kegel.

Selbst entschieden

  • SVG statt PNG: scharf bei jedem Zoom, Farbe aus dem Theme.
  • Farben: currentColor in der Datei wird beim Laden zur Theme-Farbe des Symbols; Weiß beim Behavior steht fest in der Datei.
  • Koordinaten: Ursprung in der Mitte, zentrierte viewBox, gleiche Einheiten wie vorher. In Gitea erscheinen die Dateien schwarz, weil currentColor dort keine Farbe hat.
  • Mitgebaut statt zur Laufzeit geladen: einmal geparst, kein Flackern, kein zusätzlicher Request.

Worauf man beim Zeichnen achten muss

Pixis SVG-Parser ignoriert viewBox und transform, liest polygon-Punkte nur als Ganzzahlen und füllt eine Form ohne fill gar nicht (der Browser füllt schwarz). Die Unit-Tests halten die Dateien auf das, was beide gleich zeichnen; steht auch im Wiki (Scene editing).

Tests

npm run check                    → 115 Files, 1643 Tests (vorher 1631), CHECK EXIT 0
GM_STEPS=5,31 (frisch geseedet)  → ALL PASSED – 45 checks
  • Pixelvergleich alt gegen neu (48×48 um jedes Symbol): 0 abweichende Pixel. Gegenprobe mit umgefärbtem SVG: 60 Pixel, nur beim Behavior.
  • 12 Unit-Tests in tests/viewport/symbol-icons.test.ts, Gegenprobe mit 7 eingebauten Fehlern, alle gefangen.
  • e2e 5c: liest 10 Punkte der fünf Symbole in der Theme-Farbe; Gegenprobe mit rotem Block im Container-SVG meldet genau diesen Punkt.

Check-Summe 1093 (1092 + 1) in README und Wiki (ff4b219). Die Zahl ist gerechnet, CI zu 1c212b1 läuft noch.

## Umgesetzt in `1c212b1` - **Fünf Symbole kommen jetzt aus SVG-Dateien** in `src/viewport/icons/`: `behavior`, `container`, `rigidbody`, `camera`, `particles`. Ein Icon ändern: Datei bearbeiten, `npm run build`. - **Code bleibt**, was vom Objekt abhängt: Kamerarahmen, Collider-Umriss, One-Way-Kegel. ### Selbst entschieden - **SVG statt PNG:** scharf bei jedem Zoom, Farbe aus dem Theme. - **Farben:** `currentColor` in der Datei wird beim Laden zur Theme-Farbe des Symbols; Weiß beim Behavior steht fest in der Datei. - **Koordinaten:** Ursprung in der Mitte, zentrierte `viewBox`, gleiche Einheiten wie vorher. In Gitea erscheinen die Dateien schwarz, weil `currentColor` dort keine Farbe hat. - **Mitgebaut statt zur Laufzeit geladen:** einmal geparst, kein Flackern, kein zusätzlicher Request. ### Worauf man beim Zeichnen achten muss Pixis SVG-Parser ignoriert `viewBox` und `transform`, liest `polygon`-Punkte nur als Ganzzahlen und füllt eine Form ohne `fill` gar nicht (der Browser füllt schwarz). Die Unit-Tests halten die Dateien auf das, was beide gleich zeichnen; steht auch im Wiki (*Scene editing*). ### Tests ``` npm run check → 115 Files, 1643 Tests (vorher 1631), CHECK EXIT 0 GM_STEPS=5,31 (frisch geseedet) → ALL PASSED – 45 checks ``` - **Pixelvergleich alt gegen neu** (48×48 um jedes Symbol): 0 abweichende Pixel. Gegenprobe mit umgefärbtem SVG: 60 Pixel, nur beim Behavior. - **12 Unit-Tests** in `tests/viewport/symbol-icons.test.ts`, Gegenprobe mit 7 eingebauten Fehlern, alle gefangen. - **e2e 5c:** liest 10 Punkte der fünf Symbole in der Theme-Farbe; Gegenprobe mit rotem Block im Container-SVG meldet genau diesen Punkt. Check-Summe **1093** (1092 + 1) in README und Wiki (`ff4b219`). Die Zahl ist gerechnet, CI zu `1c212b1` läuft noch.
admin moved this to Done in Development on 2026-09-19 17:10:17 +02:00
Owner

CI-Nachtrag zu 1c212b1

  • Gate (Task 160): 115 Testdateien grün, CHECK EXIT 0, Job succeeded
  • Suite (Task 161): ALL PASSED – 1093 checks, Smokes 24 / 19 / 21, Job succeeded

Die Check-Summe 1093 ist damit bestätigt.

## CI-Nachtrag zu `1c212b1` - Gate (Task 160): 115 Testdateien grün, `CHECK EXIT 0`, `Job succeeded` - Suite (Task 161): `ALL PASSED – 1093 checks`, Smokes 24 / 19 / 21, `Job succeeded` Die Check-Summe 1093 ist damit bestätigt.
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#175