Tilemap: Malbereich aus dem Inspector in ein eigenes Panel im Scene-View #142

Closed
opened 2026-09-18 10:57:27 +02:00 by meleki · 2 comments
Owner

Befund

Der Malbereich einer Tilemap steht heute im Inspector, unter den Properties des Objekts (buildTilemapSection, aufgerufen aus objectSection.ts:210). Dazu gehören PAINTING (Select/Brush/Erase/Rect), TILES (Palette), LAYERS (Liste, Name, Show) und „Add layer“. Der Inspector wird dadurch sehr lang, und wer malt, scrollt ständig zwischen Transform/Properties und dem Malbereich hin und her.

Auf dem Screenshot des Users ist markiert, wo der Bereich hin soll: in die mittlere Spalte, rechts im Scene-View, über der Console. Der Inspector bleibt rechts daneben.

Zu bauen

  • Ein eigenes Panel „Tilemap“ (Arbeitstitel), rechts im Bereich des Scene-View. Die Console bleibt darunter und läuft wie bisher über die ganze Breite der mittleren Spalte.
  • Ins Panel ziehen PAINTING, TILES und LAYERS (mit Name, Show und Add layer) um, und zwar vollständig. Im Inspector bleibt davon nichts übrig.
  • Im Inspector bleiben die Properties der Tilemap (Columns, Rows, Tile size) sowie Name, Asset, Position, Transform und Editor-Offset. Das sind Daten des Objekts und keine Malwerkzeuge.
  • Sichtbar ist das Panel nur, wenn im Scene-View eine platzierte Tilemap ausgewählt ist. In jedem anderen Fall ist es verschwunden, und der Scene-View bekommt die volle Breite zurück.
  • Die Test-Hooks (currentTilemapSection(), tilemap* in debugHook.ts) zeigen danach auf das Panel. Die e2e-Schritte in Modul 40 laufen unverändert weiter und prüfen zusätzlich, ob das Panel erscheint und wieder verschwindet.

Offen (jeweils mit Vorschlag)

  1. Eigene Spalte oder Overlay? Das Panel kann eine eigene Spalte neben dem Scene-View sein (der Scene-View wird schmaler) oder schwebend über dem Scene-View liegen (die Karte läuft darunter weiter).
    Vorschlag: eigene Spalte. Dann verdeckt nichts die Karte, auf der man malt, und das Panel sieht aus wie die anderen Panels (Header, Rahmen, Scroll-Bereich).
  2. Breite: Vorschlag: ziehbar über einen Splitter('x'), wie bei den Spalten links und rechts. Nicht gespeichert, wie die übrigen Splitter. Startbreite etwa wie der Inspector.
  3. Nur im Scene-Tab? Bei einer ausgewählten Tilemap in einem anderen Tab (Game, Graph …) wird nicht gemalt.
    Vorschlag: ja, das Panel gehört zum Scene-Pane. Wechselt man den Tab, verschwindet es mit dem Scene-View.
  4. Tilemap-Asset im Assets-Panel ausgewählt, aber keine Platzierung: Vorschlag: kein Panel. Gemalt wird immer auf einer platzierten Tilemap im Scene-View, genau so wie heute.
  5. Werkzeug beim Abwählen: Heute greift man mit einem Klick auf eine Kachel von selbst zum Pinsel. Wird die Tilemap abgewählt, verschwindet das Panel.
    Vorschlag: Beim Abwählen fällt das Werkzeug auf Select zurück, damit nach dem Verschwinden des Panels kein unsichtbarer Pinsel aktiv bleibt. Das Tile und der aktive Layer bleiben gemerkt.
  6. Mehrere Tilemaps ausgewählt: Vorschlag: Das Panel zeigt sich nur, wenn genau eine Tilemap ausgewählt ist.

Doku

Wiki Tilemaps.md (wo der Malbereich zu finden ist), Architecture.md (neues Panel), README und Development.md, falls sich die Summe der Checks ändert.

## Befund Der Malbereich einer Tilemap steht heute im Inspector, unter den Properties des Objekts (`buildTilemapSection`, aufgerufen aus `objectSection.ts:210`). Dazu gehören PAINTING (Select/Brush/Erase/Rect), TILES (Palette), LAYERS (Liste, Name, Show) und „Add layer“. Der Inspector wird dadurch sehr lang, und wer malt, scrollt ständig zwischen Transform/Properties und dem Malbereich hin und her. Auf dem Screenshot des Users ist markiert, wo der Bereich hin soll: in die mittlere Spalte, rechts im Scene-View, über der Console. Der Inspector bleibt rechts daneben. ## Zu bauen - **Ein eigenes Panel „Tilemap“ (Arbeitstitel)**, rechts im Bereich des Scene-View. Die Console bleibt darunter und läuft wie bisher über die ganze Breite der mittleren Spalte. - Ins Panel ziehen **PAINTING, TILES und LAYERS (mit Name, Show und Add layer)** um, und zwar vollständig. Im Inspector bleibt davon nichts übrig. - Im Inspector bleiben die **Properties der Tilemap** (Columns, Rows, Tile size) sowie Name, Asset, Position, Transform und Editor-Offset. Das sind Daten des Objekts und keine Malwerkzeuge. - **Sichtbar ist das Panel nur, wenn im Scene-View eine platzierte Tilemap ausgewählt ist.** In jedem anderen Fall ist es verschwunden, und der Scene-View bekommt die volle Breite zurück. - Die Test-Hooks (`currentTilemapSection()`, `tilemap*` in `debugHook.ts`) zeigen danach auf das Panel. Die e2e-Schritte in Modul 40 laufen unverändert weiter und prüfen zusätzlich, ob das Panel erscheint und wieder verschwindet. ## Offen (jeweils mit Vorschlag) 1. **Eigene Spalte oder Overlay?** Das Panel kann eine eigene Spalte neben dem Scene-View sein (der Scene-View wird schmaler) oder schwebend über dem Scene-View liegen (die Karte läuft darunter weiter). *Vorschlag:* eigene Spalte. Dann verdeckt nichts die Karte, auf der man malt, und das Panel sieht aus wie die anderen Panels (Header, Rahmen, Scroll-Bereich). 2. **Breite:** *Vorschlag:* ziehbar über einen `Splitter('x')`, wie bei den Spalten links und rechts. Nicht gespeichert, wie die übrigen Splitter. Startbreite etwa wie der Inspector. 3. **Nur im Scene-Tab?** Bei einer ausgewählten Tilemap in einem anderen Tab (Game, Graph …) wird nicht gemalt. *Vorschlag:* ja, das Panel gehört zum Scene-Pane. Wechselt man den Tab, verschwindet es mit dem Scene-View. 4. **Tilemap-Asset im Assets-Panel ausgewählt**, aber keine Platzierung: *Vorschlag:* kein Panel. Gemalt wird immer auf einer platzierten Tilemap im Scene-View, genau so wie heute. 5. **Werkzeug beim Abwählen:** Heute greift man mit einem Klick auf eine Kachel von selbst zum Pinsel. Wird die Tilemap abgewählt, verschwindet das Panel. *Vorschlag:* Beim Abwählen fällt das Werkzeug auf Select zurück, damit nach dem Verschwinden des Panels kein unsichtbarer Pinsel aktiv bleibt. Das Tile und der aktive Layer bleiben gemerkt. 6. **Mehrere Tilemaps ausgewählt:** *Vorschlag:* Das Panel zeigt sich nur, wenn genau eine Tilemap ausgewählt ist. ## Doku Wiki `Tilemaps.md` (wo der Malbereich zu finden ist), `Architecture.md` (neues Panel), README und `Development.md`, falls sich die Summe der Checks ändert.
  1. vorschlag passt
  2. vorschlag passt, breite genauso wie inspector
  3. vorschlag passt, nur im scene-tab und nur sichtbar wenn tilemap ausgewählt
  4. richtig, nur bei platziertem tilemap
  5. vorschlag passt, abwählen zurück zu select
  6. vorschlag passt, nur eine tilemap ausgewählt macht panel sichtbar / malen möglich
1. vorschlag passt 2. vorschlag passt, breite genauso wie inspector 3. vorschlag passt, nur im scene-tab und nur sichtbar wenn tilemap ausgewählt 4. richtig, nur bei platziertem tilemap 5. vorschlag passt, abwählen zurück zu select 6. vorschlag passt, nur eine tilemap ausgewählt macht panel sichtbar / malen möglich
admin added this to the Development project 2026-09-18 11:17:33 +02:00
admin moved this to Next in Development on 2026-09-18 11:17:40 +02:00
Author
Owner

Umgesetzt in 5046ddb (Wiki 9b9cfb0).

Was gebaut wurde

  • Neues Panel „Tilemap · “ rechts im Scene-Tab, zwischen Scene-View und Inspector, über der Console (die weiter die ganze Breite hat).
  • PAINTING, TILES und LAYERS (mit Name, Show, Add layer) sind vollständig umgezogen. Im Inspector endet eine Tilemap bei Columns, Rows und Tile size.
  • Deine Antworten:
    1. eigene Spalte
    2. Startbreite wie der Inspector (350 px), eigener Splitter, Breite nicht gespeichert
    3. nur im Scene-Tab
    4. nur bei einer platzierten Tilemap
    5. Abwählen → Werkzeug fällt auf Select, Tile und Layer bleiben gemerkt
    6. nur bei genau einer ausgewählten Tilemap
  • „Genau eine“ gilt auch fürs Malen selbst: Pinsel, Zellraster und Show nutzen dieselbe Funktion paintedTilemap. Vorher hat eine Mehrfachauswahl auf der primären Tilemap gemalt.
  • Code: inspector/tilemapSection.ts → panels/TilemapPanel.ts (per git mv), Debug-Hook tilemap.panel().

Nachtrag: Scene-View springt nicht mehr

Beim Ein-/Ausblenden rutschte der Inhalt um die halbe Panelbreite, weil der View seinen Mittelpunkt festhielt. FreeViewport.resize() hält jetzt den Inhalt am Bildschirm fest. Das gilt auch für Console-Höhe, Spalten-Splitter, Container-Tab und Animations-Vorschau. Folge: Beim Öffnen des Panels kann die rechte Hälfte einer Karte hinter dem Panel liegen, einmal pannen.

Tests

npm run check                                          → 99 Files, 1347 Tests (vorher 1343), CHECK EXIT 0
npm run build                                          → BUILD EXIT 0
GM_STEPS=39,40 (frisch geseedet)                       → ALL PASSED – 60 checks
GM_STEPS=1-16,19,23-26,31,33,36-40 (frisch geseedet)   → ALL PASSED – 768 checks
  • 4 neue Unit-Tests (tests/editor/painted-tilemap.test.ts). Gegenprobe: „Mehrfachauswahl zählt“ wird gefangen. Eine Szenen-Prüfung, deren Wegnahme kein Test bemerkte, war wirkungslos und ist entfernt.
  • 5 neue e2e-Checks in Modul 40: Panel erscheint an der richtigen Stelle, „PAINTING“ nur im Panel · Abwählen schließt es und fällt auf Select · zwei Objekte bzw. Behavior-Tab blenden es aus · Splitter · Karte bleibt beim Öffnen stehen.

Doku

Wiki Tilemaps.md (Abschnitt Painting), Architecture.md, Development.md. Check-Summe 1032, gerechnet, CI steht noch aus.

Umgesetzt in `5046ddb` (Wiki `9b9cfb0`). ## Was gebaut wurde - **Neues Panel „Tilemap · <Name>“** rechts im Scene-Tab, zwischen Scene-View und Inspector, über der Console (die weiter die ganze Breite hat). - **PAINTING, TILES und LAYERS** (mit Name, Show, Add layer) sind vollständig umgezogen. Im Inspector endet eine Tilemap bei Columns, Rows und Tile size. - Deine Antworten: 1. eigene Spalte 2. Startbreite wie der Inspector (350 px), eigener Splitter, Breite nicht gespeichert 3. nur im Scene-Tab 4. nur bei einer platzierten Tilemap 5. Abwählen → Werkzeug fällt auf Select, Tile und Layer bleiben gemerkt 6. nur bei **genau einer** ausgewählten Tilemap - „Genau eine“ gilt auch fürs Malen selbst: Pinsel, Zellraster und Show nutzen dieselbe Funktion `paintedTilemap`. Vorher hat eine Mehrfachauswahl auf der primären Tilemap gemalt. - Code: `inspector/tilemapSection.ts` → `panels/TilemapPanel.ts` (per `git mv`), Debug-Hook `tilemap.panel()`. ## Nachtrag: Scene-View springt nicht mehr Beim Ein-/Ausblenden rutschte der Inhalt um die halbe Panelbreite, weil der View seinen Mittelpunkt festhielt. `FreeViewport.resize()` hält jetzt den Inhalt am Bildschirm fest. Das gilt auch für Console-Höhe, Spalten-Splitter, Container-Tab und Animations-Vorschau. Folge: Beim Öffnen des Panels kann die rechte Hälfte einer Karte hinter dem Panel liegen, einmal pannen. ## Tests ``` npm run check → 99 Files, 1347 Tests (vorher 1343), CHECK EXIT 0 npm run build → BUILD EXIT 0 GM_STEPS=39,40 (frisch geseedet) → ALL PASSED – 60 checks GM_STEPS=1-16,19,23-26,31,33,36-40 (frisch geseedet) → ALL PASSED – 768 checks ``` - 4 neue Unit-Tests (`tests/editor/painted-tilemap.test.ts`). Gegenprobe: „Mehrfachauswahl zählt“ wird gefangen. Eine Szenen-Prüfung, deren Wegnahme kein Test bemerkte, war wirkungslos und ist entfernt. - 5 neue e2e-Checks in Modul 40: Panel erscheint an der richtigen Stelle, „PAINTING“ nur im Panel · Abwählen schließt es und fällt auf Select · zwei Objekte bzw. Behavior-Tab blenden es aus · Splitter · Karte bleibt beim Öffnen stehen. ## Doku Wiki `Tilemaps.md` (Abschnitt *Painting*), `Architecture.md`, `Development.md`. Check-Summe **1032**, gerechnet, CI steht noch aus.
admin moved this to Done in Development on 2026-09-18 11:48:32 +02:00
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#142