Inspector: Texture-Auswahl bietet noch Animationen an #143

Closed
opened 2026-09-18 11:47:41 +02:00 by meleki · 2 comments
Owner

Befund

Im Inspector bietet die Texture-Auswahl eines Sprites ganz oben noch alle Animationen an, als „ (animation)“. Seit dem Animations-Rework (#97) ergibt das keinen Sinn mehr: Ein Sprite trägt eine Animation nicht mehr über texture, sie wird über Play animation auf einem Objekt abgespielt (Commit 193378e: „A sprite no longer wears an animation through texture“).

Übrig geblieben ist das in src/core/properties/textureRef.ts, das #97 nicht angefasst hat:

  • textureRefChoices() (Z. 31–38) setzt die Animationen vor die Bilder. Das ist die Liste für die Feldart texture (fieldFactory.ts:233). Sie gilt also überall, wo ein texture-Feld steht: Sprite, Particle-Texture und Graph-Felder/Literale der Art Texture.
  • textureRefLabel() (Z. 26) zeigt für eine Animations-Id deren Namen, als wäre der Verweis gültig.
  • TextureChoice.asset ist noch als TextureAsset | AnimationAsset typisiert.

Folge heute: Wählt man eine Animation, zeigt der Sprite im Scene- und im Game-View nichts. resolvePicture() (src/core/model/texture.ts:89) liefert für jede Id außer Textur oder Frame null. Das Feld zeigt aber einen normalen Namen statt eines fehlenden Verweises, man sieht also nicht, warum der Sprite leer ist.

Zu bauen

  • Die Texture-Auswahl bietet nur noch Texturen und ihre Frames an: textureRefChoices fällt weg, das Feld nutzt pictureChoices (die Liste, die schon die Tile-Bilder benutzen).
  • textureRefLabel behandelt eine Animations-Id wie jeden anderen ungültigen Verweis: <id>?.
  • TextureChoice.asset wird zu TextureAsset, Kommentare zu Animationen in textureRef.ts gehen raus.
  • Unit-Test: Die Auswahl enthält keine Animation, das Label zeigt eine Animations-Id als fehlend. e2e: In der Texture-Auswahl eines Sprites steht kein „(animation)“ mehr.

Offen (mit Vorschlag)

  1. Alte Projekte, in denen ein Sprite noch eine Animations-Id in texture hat: Beim Laden stillschweigend leeren, oder so lassen und als <id>? anzeigen?
    Vorschlag: so lassen. Das ist dieselbe Regel wie bei anderen hängenden Verweisen (Tile-Bilder, Animations-Root): sichtbar als fehlend, nichts wird still weggeworfen. Gezeichnet wird ohnehin nichts, am Aussehen ändert sich also nichts.
  2. Hinweis im Feld? z. B. „Animation – use Play animation“ statt <id>?.
    Vorschlag: nein, <id>? reicht. Der Fall kommt nur aus Projekten von vor #97.
## Befund Im Inspector bietet die Texture-Auswahl eines Sprites ganz oben noch alle Animationen an, als „<Name> (animation)“. Seit dem Animations-Rework (#97) ergibt das keinen Sinn mehr: Ein Sprite trägt eine Animation nicht mehr über `texture`, sie wird über *Play animation* auf einem Objekt abgespielt (Commit `193378e`: „A sprite no longer wears an animation through `texture`“). Übrig geblieben ist das in `src/core/properties/textureRef.ts`, das #97 nicht angefasst hat: - `textureRefChoices()` (Z. 31–38) setzt die Animationen vor die Bilder. Das ist die Liste für die Feldart `texture` (`fieldFactory.ts:233`). Sie gilt also überall, wo ein `texture`-Feld steht: **Sprite**, **Particle-Texture** und Graph-Felder/Literale der Art Texture. - `textureRefLabel()` (Z. 26) zeigt für eine Animations-Id deren Namen, als wäre der Verweis gültig. - `TextureChoice.asset` ist noch als `TextureAsset | AnimationAsset` typisiert. **Folge heute:** Wählt man eine Animation, zeigt der Sprite im Scene- und im Game-View **nichts**. `resolvePicture()` (`src/core/model/texture.ts:89`) liefert für jede Id außer Textur oder Frame `null`. Das Feld zeigt aber einen normalen Namen statt eines fehlenden Verweises, man sieht also nicht, warum der Sprite leer ist. ## Zu bauen - Die Texture-Auswahl bietet nur noch **Texturen und ihre Frames** an: `textureRefChoices` fällt weg, das Feld nutzt `pictureChoices` (die Liste, die schon die Tile-Bilder benutzen). - `textureRefLabel` behandelt eine Animations-Id wie jeden anderen ungültigen Verweis: `<id>?`. - `TextureChoice.asset` wird zu `TextureAsset`, Kommentare zu Animationen in `textureRef.ts` gehen raus. - Unit-Test: Die Auswahl enthält keine Animation, das Label zeigt eine Animations-Id als fehlend. e2e: In der Texture-Auswahl eines Sprites steht kein „(animation)“ mehr. ## Offen (mit Vorschlag) 1. **Alte Projekte, in denen ein Sprite noch eine Animations-Id in `texture` hat:** Beim Laden stillschweigend leeren, oder so lassen und als `<id>?` anzeigen? *Vorschlag:* so lassen. Das ist dieselbe Regel wie bei anderen hängenden Verweisen (Tile-Bilder, Animations-Root): sichtbar als fehlend, nichts wird still weggeworfen. Gezeichnet wird ohnehin nichts, am Aussehen ändert sich also nichts. 2. **Hinweis im Feld?** z. B. „Animation – use Play animation“ statt `<id>?`. *Vorschlag:* nein, `<id>?` reicht. Der Fall kommt nur aus Projekten von vor #97.
  1. vorschlag passt
  2. vorschlag passt
1. vorschlag passt 2. vorschlag passt
admin added this to the Development project 2026-09-18 11:48:21 +02:00
admin moved this to Next in Development on 2026-09-18 11:48:28 +02:00
Author
Owner

Erledigt in c2fd536 (Wiki 2f2ccdf).

Umgesetzt

  • Das Texture-Feld bietet nur noch Bilder an: jede Textur mit ihren Frames darunter. Es nutzt jetzt dieselbe Liste pictureChoices wie die Tile-Bilder; textureRefChoices ist entfernt. Gilt für jedes Texture-Feld (Sprite, Particle, Graph-Felder).
  • Antwort 1: Eine Animations-Id aus einem älteren Projekt bleibt stehen und erscheint als fehlender Verweis <id>?. Beim Laden wird nichts still geleert.
  • Antwort 2: Kein eigener Hinweistext im Feld.
  • TextureChoice.asset ist nur noch TextureAsset.

Tests

  • npm run check: 1349 Tests (vorher 1347), CHECK EXIT 0.
  • 2 neue Unit-Tests (tests/core/texture.test.ts): Auswahl enthält Textur und Frame, keine Animation; Label zeigt eine Animations-Id als <id>?.
  • 2 neue e2e-Checks in Modul 12, Schritt 12e-ii: Feld zeigt tex-anim?, Dropdown zeigt ["None","pasted"]. Der Schritt stellt den alten Feldwert wieder her.
  • Lokal: GM_STEPS=1-12 → ALL PASSED – 367 checks, GM_STEPS=1-21 → ALL PASSED – 585 checks.
  • Gegenproben: Animation im Label wieder eingebaut → 1 Unit-Test rot; alte Liste im Feld wieder eingebaut → e2e rot ("● Walk (animation)"). Originale per cmp bestätigt.

Doku

  • Wiki Textures.md: Absatz zur Texture-Auswahl und zu alten Animations-Ids.
  • Check-Summe 1034 in README und Development.md (rechnerisch, CI-Bestätigung ausstehend).
Erledigt in c2fd536 (Wiki 2f2ccdf). ## Umgesetzt - Das Texture-Feld bietet nur noch Bilder an: jede Textur mit ihren Frames darunter. Es nutzt jetzt dieselbe Liste `pictureChoices` wie die Tile-Bilder; `textureRefChoices` ist entfernt. Gilt für jedes Texture-Feld (Sprite, Particle, Graph-Felder). - **Antwort 1:** Eine Animations-Id aus einem älteren Projekt bleibt stehen und erscheint als fehlender Verweis `<id>?`. Beim Laden wird nichts still geleert. - **Antwort 2:** Kein eigener Hinweistext im Feld. - `TextureChoice.asset` ist nur noch `TextureAsset`. ## Tests - `npm run check`: 1349 Tests (vorher 1347), CHECK EXIT 0. - 2 neue Unit-Tests (`tests/core/texture.test.ts`): Auswahl enthält Textur und Frame, keine Animation; Label zeigt eine Animations-Id als `<id>?`. - 2 neue e2e-Checks in Modul 12, Schritt 12e-ii: Feld zeigt `tex-anim?`, Dropdown zeigt `["None","pasted"]`. Der Schritt stellt den alten Feldwert wieder her. - Lokal: `GM_STEPS=1-12` → ALL PASSED – 367 checks, `GM_STEPS=1-21` → ALL PASSED – 585 checks. - Gegenproben: Animation im Label wieder eingebaut → 1 Unit-Test rot; alte Liste im Feld wieder eingebaut → e2e rot (`"● Walk (animation)"`). Originale per `cmp` bestätigt. ## Doku - Wiki `Textures.md`: Absatz zur Texture-Auswahl und zu alten Animations-Ids. - Check-Summe 1034 in README und `Development.md` (rechnerisch, CI-Bestätigung ausstehend).
admin moved this to Done in Development on 2026-09-18 12:14:56 +02:00
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#143