Composition: Texture- und Video-Assets direkt auf eine Spur ziehen #419

Closed
opened 2026-10-12 06:11:05 +02:00 by meleki · 3 comments
Owner

Folge-Issue zu #417 (Composition), Wunsch vom 2026-10-12 im Kommentar zu #417:

texture/video assets direkt droppen: ist wahrscheinlich die sauberere variante zu "droppt man ein sprite mit einem video" aber lassen wir erstmal auch als folge issue

Was gewünscht ist

  • Ein Texture-, Vector-art-, Pixel-art- oder Video-Asset (auch ein Video-Clip) lässt sich direkt auf eine Spur der Composition ziehen, ohne vorher ein Sprite-Asset anzulegen.
  • Daraus entsteht ein Item, das dieses Bild bzw. Video trägt. Bei einem Video ist die Länge die des Videos bzw. Clips (fitMedia an), und die Video time folgt dem Item, wie beim Sprite mit Video aus #417.

Offen

  • Was das Item im Modell ist. Naheliegend: ein Objekt eines eingebauten Sprites, bei dem texture als Override gesetzt ist. Dafür bräuchte es ein Sprite ohne eigenes Asset, das gibt es heute nicht.
  • Wie es im Inspector aussieht und ob man es später in ein echtes Sprite-Asset umwandeln kann.

Gebaut wird erst, wenn #417 steht.

Folge-Issue zu #417 (Composition), Wunsch vom 2026-10-12 im Kommentar zu #417: > texture/video assets direkt droppen: ist wahrscheinlich die sauberere variante zu "droppt man ein sprite mit einem video" aber lassen wir erstmal auch als folge issue ## Was gewünscht ist - Ein **Texture-, Vector-art-, Pixel-art- oder Video-Asset** (auch ein Video-Clip) lässt sich direkt auf eine Spur der Composition ziehen, ohne vorher ein Sprite-Asset anzulegen. - Daraus entsteht ein Item, das dieses Bild bzw. Video trägt. Bei einem Video ist die Länge die des Videos bzw. Clips (`fitMedia` an), und die Video time folgt dem Item, wie beim Sprite mit Video aus #417. ## Offen - Was das Item im Modell ist. Naheliegend: ein Objekt eines eingebauten Sprites, bei dem `texture` als Override gesetzt ist. Dafür bräuchte es ein Sprite ohne eigenes Asset, das gibt es heute nicht. - Wie es im Inspector aussieht und ob man es später in ein echtes Sprite-Asset umwandeln kann. Gebaut wird erst, wenn #417 steht.
meleki added the new label 2026-10-12 06:11:05 +02:00
admin added this to the Development project 2026-10-12 15:17:36 +02:00

eingebautes sprite mit texture als override klingt eigentlich gut, aber jetzt haben wir den einzigen fall mit scene object ohne asset: ist das trotzdem in ordnung?

eingebautes sprite mit texture als override klingt eigentlich gut, aber jetzt haben wir den einzigen fall mit scene object ohne asset: ist das trotzdem in ordnung?
admin moved this to Next in Development on 2026-10-12 15:21:33 +02:00
admin removed the new label 2026-10-12 15:21:35 +02:00
Author
Owner

Plan (abgestimmt am 2026-10-12)

Kein Szenen-Objekt ohne Asset. „Asset nicht gefunden“ heißt heute überall „gelöscht“ (assetId wird an 658 Stellen in 117 Dateien gelesen). Eine Ausnahme dafür wäre eine teure Sonderregel.

Stattdessen bekommt die Composition eigene Sprites, mit demselben Mechanismus, mit dem ein Song seit #355 eigene Sounds und Patterns hält (owner):

  • Das Item ist ein Objekt eines echten Sprite-Assets mit owner = Composition und texture = das gezogene Bild oder Video. Für den restlichen Code ist es ein normales Sprite.
  • In der Asset-Liste und den Pickern erscheint es nicht. Im Inspector steht es mit Punkt davor (• Intro).
  • Löschen der Composition nimmt es mit, Duplizieren kopiert es mit.
  • „Make project asset“ (aus #355) macht daraus ein normales Sprite.

Entscheidungen

  1. Ein Sprite pro Bild und Composition. Dasselbe Video zweimal hineingezogen: beide Items teilen sich das Sprite. Was ein Item anders haben soll, steht als Override am Objekt. Ein Sprite, das kein Item mehr nutzt, verschwindet im selben Undo-Schritt.
  2. Einfügen in eine Szene macht das Sprite automatisch zum Projekt-Asset, sonst nähme das Löschen der Composition das Objekt in der Szene mit. Einfügen in eine andere Composition gibt dieser eine eigene Kopie.
  3. Video-Clips: Gezogen wird das ganze Video, den Clip wählt man danach über die Texture-Zeile im Inspector. Clips direkt aus dem Video-Tab ziehen ist nicht Teil dieses Issues.

Bauschritte

  1. Kern: owner darf eine Composition sein, Titel, Duplizieren, Aufräumen ungenutzter Sprites, Einfügen in Szene/andere Composition.
  2. Drop von Texture, Vector art, Pixel art und Video aus der Asset-Liste auf eine Spur (Sprite + Item in einem Undo-Schritt, Video mit fitMedia).
  3. Menü und Inspector („Make project asset“), Wiki Compositions.
## Plan (abgestimmt am 2026-10-12) **Kein Szenen-Objekt ohne Asset.** „Asset nicht gefunden“ heißt heute überall „gelöscht“ (`assetId` wird an 658 Stellen in 117 Dateien gelesen). Eine Ausnahme dafür wäre eine teure Sonderregel. Stattdessen bekommt die Composition **eigene Sprites**, mit demselben Mechanismus, mit dem ein Song seit #355 eigene Sounds und Patterns hält (`owner`): - Das Item ist ein Objekt eines echten Sprite-Assets mit `owner` = Composition und `texture` = das gezogene Bild oder Video. Für den restlichen Code ist es ein normales Sprite. - In der Asset-Liste und den Pickern erscheint es nicht. Im Inspector steht es mit Punkt davor (`• Intro`). - Löschen der Composition nimmt es mit, Duplizieren kopiert es mit. - „Make project asset“ (aus #355) macht daraus ein normales Sprite. ### Entscheidungen 1. **Ein Sprite pro Bild und Composition.** Dasselbe Video zweimal hineingezogen: beide Items teilen sich das Sprite. Was ein Item anders haben soll, steht als Override am Objekt. Ein Sprite, das kein Item mehr nutzt, verschwindet im selben Undo-Schritt. 2. **Einfügen in eine Szene** macht das Sprite automatisch zum Projekt-Asset, sonst nähme das Löschen der Composition das Objekt in der Szene mit. Einfügen in eine andere Composition gibt dieser eine eigene Kopie. 3. **Video-Clips:** Gezogen wird das ganze Video, den Clip wählt man danach über die Texture-Zeile im Inspector. Clips direkt aus dem Video-Tab ziehen ist nicht Teil dieses Issues. ### Bauschritte 1. **Kern:** `owner` darf eine Composition sein, Titel, Duplizieren, Aufräumen ungenutzter Sprites, Einfügen in Szene/andere Composition. 2. **Drop** von Texture, Vector art, Pixel art und Video aus der Asset-Liste auf eine Spur (Sprite + Item in einem Undo-Schritt, Video mit `fitMedia`). 3. **Menü und Inspector** („Make project asset“), Wiki *Compositions*.
Author
Owner

Erledigt

Umgesetzt wie im Plan oben (Kommentar 4512), Commit b16fe8c, Wiki 9060878 (Compositions → Sprites of its own).

  • Texture, Vector art, Pixel art und Video lassen sich aus der Asset-Liste auf eine Spur ziehen. Es entstehen ein Sprite mit owner = Composition und das Item in einem Undo-Schritt. Ein Video-Item ist so lang wie das Video und hat fitMedia an.
  • Ein Sprite pro Bild und Composition. Das letzte Item weg → Sprite weg, im selben Undo-Schritt. Löschen und Duplizieren der Composition nehmen die Sprites mit.
  • Einfügen in Szene oder Container macht das Sprite zum Projekt-Asset, Einfügen in eine andere Composition gibt ihr eine eigene Kopie. Ausschneiden und Einfügen verliert nichts.
  • „Make project asset“ im Rechtsklick-Menü in Timeline und Hierarchy. Im Inspector steht das Sprite als • Name.
  • Ziehen auf eine Szene wird mit Hinweis abgelehnt, wie bei Patterns.

Fund dabei: Beim Laden ging der owner eines Sprites verloren, er galt bisher nur für Song-Assets. Mit behoben.

Mit drin: die fehlende obere Linie über der ersten Spur im Composition-Tab.

Danach, beim Ausprobieren gefunden

  • 33891ac: Verschieben, Drehen und Skalieren im Bild des Composition-Tabs wirken wieder live beim Ziehen. Die Vorschau hatte ihre Kopie jeden Frame neu gebaut und die Bewegung so verworfen (e2e 69l).
  • 64d0d47: Ein Item, dessen On start eine Animation spielt, zeigt schon im ersten Frame Frame 0 statt des Ursprungszustands. Gilt auch für den Spawn-Node, dort lief On start bisher erst nach dem ersten Zeichnen. Wiki Behaviors → Lifecycle (a4de2a9).

Tests

  • Unit composition-sprites 11 neu, e2e 69k (Drop eines Videos, geteiltes Sprite, Undo).
  • Gate grün zu jedem der drei Commits (beim letzten auf stein2, melektaus-atx war mitten im Lauf weg).
  • Nicht im Browser geprüft: Einfügen in eine Szene oder andere Composition und Duplizieren, das ist nur per Unit-Test belegt.
  • CI: Zu 33891ac und 64d0d47 gab es keinen Lauf, ci.yml steht in Gitea unter den deaktivierten Workflows.

Offen bleiben die Folge-Themen #418 (Sounds und Songs auf einer Spur) und Clips direkt aus dem Video-Tab ziehen (nicht Teil dieses Issues).

## Erledigt Umgesetzt wie im Plan oben (Kommentar 4512), Commit `b16fe8c`, Wiki `9060878` (*Compositions* → *Sprites of its own*). - Texture, Vector art, Pixel art und Video lassen sich aus der Asset-Liste auf eine Spur ziehen. Es entstehen ein Sprite mit `owner` = Composition und das Item in einem Undo-Schritt. Ein Video-Item ist so lang wie das Video und hat `fitMedia` an. - Ein Sprite pro Bild und Composition. Das letzte Item weg → Sprite weg, im selben Undo-Schritt. Löschen und Duplizieren der Composition nehmen die Sprites mit. - Einfügen in Szene oder Container macht das Sprite zum Projekt-Asset, Einfügen in eine andere Composition gibt ihr eine eigene Kopie. Ausschneiden und Einfügen verliert nichts. - „Make project asset“ im Rechtsklick-Menü in Timeline und Hierarchy. Im Inspector steht das Sprite als `• Name`. - Ziehen auf eine Szene wird mit Hinweis abgelehnt, wie bei Patterns. **Fund dabei:** Beim Laden ging der `owner` eines Sprites verloren, er galt bisher nur für Song-Assets. Mit behoben. **Mit drin:** die fehlende obere Linie über der ersten Spur im Composition-Tab. ### Danach, beim Ausprobieren gefunden - `33891ac`: Verschieben, Drehen und Skalieren im Bild des Composition-Tabs wirken wieder live beim Ziehen. Die Vorschau hatte ihre Kopie jeden Frame neu gebaut und die Bewegung so verworfen (e2e 69l). - `64d0d47`: Ein Item, dessen `On start` eine Animation spielt, zeigt schon im ersten Frame Frame 0 statt des Ursprungszustands. Gilt auch für den `Spawn`-Node, dort lief `On start` bisher erst nach dem ersten Zeichnen. Wiki *Behaviors* → *Lifecycle* (`a4de2a9`). ### Tests - Unit `composition-sprites` 11 neu, e2e 69k (Drop eines Videos, geteiltes Sprite, Undo). - Gate grün zu jedem der drei Commits (beim letzten auf stein2, `melektaus-atx` war mitten im Lauf weg). - **Nicht im Browser geprüft:** Einfügen in eine Szene oder andere Composition und Duplizieren, das ist nur per Unit-Test belegt. - **CI:** Zu `33891ac` und `64d0d47` gab es keinen Lauf, `ci.yml` steht in Gitea unter den deaktivierten Workflows. Offen bleiben die Folge-Themen #418 (Sounds und Songs auf einer Spur) und Clips direkt aus dem Video-Tab ziehen (nicht Teil dieses Issues).
admin moved this to Done in Development on 2026-10-13 06:57:43 +02:00
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#419