Animation: Zielreichweite – Scene-Properties und Objekte in platzierten Containern #109

Closed
opened 2026-09-16 21:23:31 +02:00 by meleki · 1 comment
Owner

Aus #97, Entscheidung 10 und zwei Festlegungen aus Teil (a), die dort als Einschränkung stehen:

  1. Eigene Properties einer Scene (backgroundColor, Kamera-Eigenschaften, die an der Scene hängen) sind heute nicht animierbar, nur ihre Objekte. Der Dialog müsste die Scene selbst als Ziel mit ihren Schema-Properties anbieten.
  2. Objekte in einem platzierten Container innerhalb einer Scene sind heute nicht erreichbar (Auswahl endet am platzierten Container). Die Laufzeit-Ids dieser Kinder sind über die Instanz-Edits eindeutig, also ist der Pfad Scene → Container-Instanz → Kind darstellbar; der Picker müsste in die Instanz hinein.

Offen bei 2: Was passiert mit der Zeile, wenn die Container-Vorlage das Kind verliert? Vorschlag: „missing“ wie bei allen gelöschten Zielen.

Aus #97, Entscheidung 10 und zwei Festlegungen aus Teil (a), die dort als Einschränkung stehen: 1. **Eigene Properties einer Scene** (`backgroundColor`, Kamera-Eigenschaften, die an der Scene hängen) sind heute nicht animierbar, nur ihre Objekte. Der Dialog müsste die Scene selbst als Ziel mit ihren Schema-Properties anbieten. 2. **Objekte in einem platzierten Container innerhalb einer Scene** sind heute nicht erreichbar (Auswahl endet am platzierten Container). Die Laufzeit-Ids dieser Kinder sind über die Instanz-Edits eindeutig, also ist der Pfad `Scene → Container-Instanz → Kind` darstellbar; der Picker müsste in die Instanz hinein. **Offen bei 2:** Was passiert mit der Zeile, wenn die Container-Vorlage das Kind verliert? Vorschlag: „missing“ wie bei allen gelöschten Zielen.
admin added this to the Development project 2026-09-16 21:24:30 +02:00
admin moved this to Next in Development on 2026-09-17 06:46:45 +02:00
Author
Owner

Umgesetzt in f68941f, Wiki f0255f2.

Scene-eigene Properties: Eine Scene-Animation bietet unter „(itself)" jetzt Background an (backgroundColor, linear überblendet). X/Y gibt es dort nicht, eine Scene ist nirgends platziert. Kamera-Properties an der Scene existieren nicht – das Scene-Schema kennt nur backgroundColor; die Kamera ist ein platziertes Objekt und war schon erreichbar.

Objekte in platzierten Containern, beliebig tief: Der Objekt-Picker im Zeilen-Dialog listet den Inhalt von Containern eingerückt mit.

  • Scene-Wurzel: die Zeile speichert die Laufzeit-Id instanz~pfad – gleich, ob Play den Inhalt einbackt oder der Edit-Modus ihn auflöst (per Test für beide Fälle belegt).
  • Container-Wurzel: die Zeile speichert einen Pfad aus Template-Ids (a/b), jede Instanz löst ihn unter sich selbst auf. Bestehende Zeilen sind Pfade der Länge 1 – Format unverändert.

Offene Frage aus dem Issue: wie vorgeschlagen – verliert die Vorlage das Kind, steht die Zeile auf (missing), Keys bleiben, beim Abspielen wird sie übersprungen.

Umbau: animationTargets() ist die einzige Zielauflösung (Dialog, Label, Commands, Usages). Die Vorschau schreibt über objectRef in eine Kopie, derselbe Weg wie Edits im Scene-Tab. Zur Laufzeit hält World ein sceneProps-Bag; der AnimationSystem schreibt über Lese-/Schreibfunktionen, Entity und Scene über denselben Code.

Belegt:

  • npm run check → 92 Files, 1189 Tests (vorher 1180), CHECK EXIT 0
  • 9 neue Unit-Tests; Gegenprobe mit drei gezielten Mutationen (Scene-Ziele ohne Instanz-Inhalt → 3 rot, Laufzeit ignoriert Scene-Zeilen → 1 rot, Vorschau ohne Scene-Properties → 1 rot)
  • lokal GM_STEPS=24,25,26 → ALL PASSED – 101 checks
  • CI Task 74 gate: CHECK EXIT 0; Task 75 suite: ALL PASSED – 943 checks, Smokes 24 / 19 / 21, beide auf f68941f

Keine neuen e2e-Checks, die Summe bleibt 943.

Umgesetzt in `f68941f`, Wiki `f0255f2`. **Scene-eigene Properties:** Eine Scene-Animation bietet unter „(itself)" jetzt **Background** an (`backgroundColor`, linear überblendet). `X`/`Y` gibt es dort nicht, eine Scene ist nirgends platziert. Kamera-Properties an der Scene existieren nicht – das Scene-Schema kennt nur `backgroundColor`; die Kamera ist ein platziertes Objekt und war schon erreichbar. **Objekte in platzierten Containern, beliebig tief:** Der Objekt-Picker im Zeilen-Dialog listet den Inhalt von Containern eingerückt mit. - Scene-Wurzel: die Zeile speichert die Laufzeit-Id `instanz~pfad` – gleich, ob Play den Inhalt einbackt oder der Edit-Modus ihn auflöst (per Test für beide Fälle belegt). - Container-Wurzel: die Zeile speichert einen Pfad aus Template-Ids (`a/b`), jede Instanz löst ihn unter sich selbst auf. Bestehende Zeilen sind Pfade der Länge 1 – Format unverändert. **Offene Frage aus dem Issue:** wie vorgeschlagen – verliert die Vorlage das Kind, steht die Zeile auf *(missing)*, Keys bleiben, beim Abspielen wird sie übersprungen. **Umbau:** `animationTargets()` ist die einzige Zielauflösung (Dialog, Label, Commands, Usages). Die Vorschau schreibt über `objectRef` in eine Kopie, derselbe Weg wie Edits im Scene-Tab. Zur Laufzeit hält `World` ein `sceneProps`-Bag; der `AnimationSystem` schreibt über Lese-/Schreibfunktionen, Entity und Scene über denselben Code. **Belegt:** - `npm run check` → 92 Files, 1189 Tests (vorher 1180), `CHECK EXIT 0` - 9 neue Unit-Tests; Gegenprobe mit drei gezielten Mutationen (Scene-Ziele ohne Instanz-Inhalt → 3 rot, Laufzeit ignoriert Scene-Zeilen → 1 rot, Vorschau ohne Scene-Properties → 1 rot) - lokal `GM_STEPS=24,25,26` → `ALL PASSED – 101 checks` - CI Task 74 `gate`: `CHECK EXIT 0`; Task 75 `suite`: `ALL PASSED – 943 checks`, Smokes 24 / 19 / 21, beide auf `f68941f` Keine neuen e2e-Checks, die Summe bleibt 943.
admin moved this to Done in Development on 2026-09-17 07:08:15 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#109