Aus #156, Durchgang 6. In #402 und #404 als Folge-Issue vorgemerkt, angelegt wurde es nie.
Herkunft
#402, Nicht dabei (vorerst): „Graph-Nodes zum Steuern (Play, Pause, Seek, ‚Video ended‘): eigenes Folge-Issue“.
#402, Abschluss 4314, Folge-Issues: „Graph-Nodes zum Steuern (Play, Pause, Seek, ‚Video ended‘): noch kein Issue angelegt“.
#404, Nicht dabei: „Graph-Nodes zum Steuern …, wie in #402 als Folge-Issue vorgemerkt“.
Stand
Der einzige Node rund um Video ist die Aufnahme aus #405 (src/core/graph/nodes/action/recordingNodes.ts). Ein Behavior kann ein Video weder anhalten noch an eine Stelle setzen, und es erfährt nicht, wann ein Clip zu Ende ist.
Freie Videos (Video clock: Free) laufen ab dem Start der Szene von selbst. Es gibt einen Player je Clip (videoKey, src/core/model/video.ts:107), zwei Sprites mit demselben Clip teilen sich also Bild und Zeit.
Gesteuerte Videos (Driven, #404) folgen Video time. Ein Behavior kann diese Zahl heute schon schreiben. Damit lässt sich Pause und Seek nachbauen, aber nur, wenn das Behavior die Zeit jeden Frame selbst weiterzählt.
Vorschlag
Play video / Pause video (Action, Eingang target, Standard Owner): setzt das Video des Sprites fort bzw. hält es an.
Seek video (Action, target, time in Sekunden ab Clip-Start): springt dorthin. Die Regel für eine Zeit hinter dem Clip-Ende ist dieselbe wie bei Video time (Loop im Kreis, sonst letztes Bild).
On video finished (Ereignis, Feld Video leer = jedes, Ausgang object): kommt, wenn ein Video ohne Loop sein letztes Bild erreicht. Vorbild ist On animation finished (src/core/graph/nodes/events/OnAnimationFinished.ts).
Video time als Daten-Node zum Abfragen (Sekunden ab Clip-Start, dazu length).
Die Nodes wirken im Editor-Play und im exportierten Spiel gleich.
Offen (mit Vorschlag)
Geteilter Player bei Free: Ein Pause video an Sprite A würde auch Sprite B mit demselben Clip anhalten. Vorschlag: Ein Sprite, das einer dieser Nodes anfasst, bekommt einen eigenen Player, wie ein gesteuertes Sprite (Schlüssel mit der Id des Trägers). Alle anderen bleiben beim gemeinsamen Player.
Gesteuerte Videos: Vorschlag: Die Nodes tun dort nichts und schreiben eine Zeile ins Log. Die Zeit gehört dort der Animation. Wer im Behavior steuern will, schreibt Video time.
Pause der Partie: Vorschlag: so wie heute, eine angehaltene Partie hält jedes Video an. Ein per Node pausiertes Video bleibt nach dem Fortsetzen der Partie pausiert.
Ton: Vorschlag: Pause video macht stumm, Play video hörbar, wie das Video vorher eingestellt war. Keine eigene Lautstärke am Node.
Fertig, wenn
Unit-Test: Seek hinter das Clip-Ende mit und ohne Loop, Ereignis genau einmal pro Durchlauf ohne Loop, nie mit Loop. Dazu eine Gegenprobe.
e2e 66: Ein Behavior hält ein Video an, setzt es auf 0,5 s (Testvideo grün) und spielt es weiter. Gemessen per Pixel, dazu On video finished in der Liste der Ereignisse.
Das Wiki unter Videos und Behaviors nennt die Nodes.
Aus #156, Durchgang 6. In #402 und #404 als Folge-Issue vorgemerkt, angelegt wurde es nie.
## Herkunft
- #402, *Nicht dabei (vorerst)*: „Graph-Nodes zum Steuern (Play, Pause, Seek, ‚Video ended‘): eigenes Folge-Issue“.
- #402, Abschluss 4314, *Folge-Issues*: „Graph-Nodes zum Steuern (Play, Pause, Seek, ‚Video ended‘): noch kein Issue angelegt“.
- #404, *Nicht dabei*: „Graph-Nodes zum Steuern …, wie in #402 als Folge-Issue vorgemerkt“.
## Stand
- Der einzige Node rund um Video ist die Aufnahme aus #405 (`src/core/graph/nodes/action/recordingNodes.ts`). Ein Behavior kann ein Video weder anhalten noch an eine Stelle setzen, und es erfährt nicht, wann ein Clip zu Ende ist.
- **Freie Videos** (`Video clock: Free`) laufen ab dem Start der Szene von selbst. Es gibt einen Player je Clip (`videoKey`, `src/core/model/video.ts:107`), zwei Sprites mit demselben Clip teilen sich also Bild und Zeit.
- **Gesteuerte Videos** (`Driven`, #404) folgen `Video time`. Ein Behavior kann diese Zahl heute schon schreiben. Damit lässt sich Pause und Seek nachbauen, aber nur, wenn das Behavior die Zeit jeden Frame selbst weiterzählt.
## Vorschlag
- **`Play video`** / **`Pause video`** (Action, Eingang `target`, Standard Owner): setzt das Video des Sprites fort bzw. hält es an.
- **`Seek video`** (Action, `target`, `time` in Sekunden ab Clip-Start): springt dorthin. Die Regel für eine Zeit hinter dem Clip-Ende ist dieselbe wie bei `Video time` (Loop im Kreis, sonst letztes Bild).
- **`On video finished`** (Ereignis, Feld *Video* leer = jedes, Ausgang `object`): kommt, wenn ein Video ohne Loop sein letztes Bild erreicht. Vorbild ist `On animation finished` (`src/core/graph/nodes/events/OnAnimationFinished.ts`).
- **`Video time`** als Daten-Node zum Abfragen (Sekunden ab Clip-Start, dazu `length`).
- Die Nodes wirken im Editor-Play und im exportierten Spiel gleich.
## Offen (mit Vorschlag)
1. **Geteilter Player bei `Free`:** Ein `Pause video` an Sprite A würde auch Sprite B mit demselben Clip anhalten. Vorschlag: **Ein Sprite, das einer dieser Nodes anfasst, bekommt einen eigenen Player**, wie ein gesteuertes Sprite (Schlüssel mit der Id des Trägers). Alle anderen bleiben beim gemeinsamen Player.
2. **Gesteuerte Videos:** Vorschlag: **Die Nodes tun dort nichts und schreiben eine Zeile ins Log.** Die Zeit gehört dort der Animation. Wer im Behavior steuern will, schreibt `Video time`.
3. **Pause der Partie:** Vorschlag: so wie heute, eine angehaltene Partie hält jedes Video an. Ein per Node pausiertes Video bleibt nach dem Fortsetzen der Partie pausiert.
4. **Ton:** Vorschlag: `Pause video` macht stumm, `Play video` hörbar, wie das Video vorher eingestellt war. Keine eigene Lautstärke am Node.
## Fertig, wenn
- Unit-Test: Seek hinter das Clip-Ende mit und ohne Loop, Ereignis genau einmal pro Durchlauf ohne Loop, nie mit Loop. Dazu eine Gegenprobe.
- e2e 66: Ein Behavior hält ein Video an, setzt es auf 0,5 s (Testvideo grün) und spielt es weiter. Gemessen per Pixel, dazu `On video finished` in der Liste der Ereignisse.
- Das Wiki unter *Videos* und *Behaviors* nennt die Nodes.
meleki
added the new label 2026-10-11 21:24:18 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Aus #156, Durchgang 6. In #402 und #404 als Folge-Issue vorgemerkt, angelegt wurde es nie.
Herkunft
Stand
src/core/graph/nodes/action/recordingNodes.ts). Ein Behavior kann ein Video weder anhalten noch an eine Stelle setzen, und es erfährt nicht, wann ein Clip zu Ende ist.Video clock: Free) laufen ab dem Start der Szene von selbst. Es gibt einen Player je Clip (videoKey,src/core/model/video.ts:107), zwei Sprites mit demselben Clip teilen sich also Bild und Zeit.Driven, #404) folgenVideo time. Ein Behavior kann diese Zahl heute schon schreiben. Damit lässt sich Pause und Seek nachbauen, aber nur, wenn das Behavior die Zeit jeden Frame selbst weiterzählt.Vorschlag
Play video/Pause video(Action, Eingangtarget, Standard Owner): setzt das Video des Sprites fort bzw. hält es an.Seek video(Action,target,timein Sekunden ab Clip-Start): springt dorthin. Die Regel für eine Zeit hinter dem Clip-Ende ist dieselbe wie beiVideo time(Loop im Kreis, sonst letztes Bild).On video finished(Ereignis, Feld Video leer = jedes, Ausgangobject): kommt, wenn ein Video ohne Loop sein letztes Bild erreicht. Vorbild istOn animation finished(src/core/graph/nodes/events/OnAnimationFinished.ts).Video timeals Daten-Node zum Abfragen (Sekunden ab Clip-Start, dazulength).Offen (mit Vorschlag)
Free: EinPause videoan Sprite A würde auch Sprite B mit demselben Clip anhalten. Vorschlag: Ein Sprite, das einer dieser Nodes anfasst, bekommt einen eigenen Player, wie ein gesteuertes Sprite (Schlüssel mit der Id des Trägers). Alle anderen bleiben beim gemeinsamen Player.Video time.Pause videomacht stumm,Play videohörbar, wie das Video vorher eingestellt war. Keine eigene Lautstärke am Node.Fertig, wenn
On video finishedin der Liste der Ereignisse.