Aus #158 (Fund beim Messen: „Eine laufende Behavior-Instanz behält den Graph, mit dem sie gestartet ist … Bestehendes Verhalten, kein Teil dieser Änderung.“). Steht heute als Hinweis im Wiki unter Colliders.
Befund
Ein Behavior mit Run in editor (#12) läuft, während man im Editor arbeitet. Der Interpreter hält den Graph, mit dem die Instanz begonnen hat.
Ändert man währenddessen den Graph (Node-Einstellung, neue Kante, anderer Wert), läuft die Instanz mit dem alten weiter, bis man Run in editor aus- und wieder einschaltet oder Play drückt.
Gerade das Hin und Her zwischen „ändern“ und „zusehen“ ist der Grund für Run in editor. Heute sieht es so aus, als hätte die Änderung nicht gewirkt. In #158 hat das einen Test blind gemacht, der Test schaltet seitdem aus und wieder an.
Zu bauen (Vorschlag)
Ändert sich der Graph eines Behavior-Assets (oder eines per Call eingebundenen Graphen), werden die laufenden Editor-Instanzen dieses Assets neu gestartet: On start feuert erneut, lokale Variablen beginnen bei ihren Defaults. Globale Variablen und State Machines bleiben.
Neu gestartet wird nach dem Loslassen einer Geste (Kommando ausgeführt), nicht bei jeder Vorschau während des Ziehens.
Play bleibt unberührt, dort läuft ohnehin eine Wegwerf-Kopie.
Tests: Unit im EditorRun, dass nach einer Graph-Änderung die neue Einstellung wirkt. e2e: Raycast-Ebene im laufenden Editor-Run umstellen (der Fall aus #158), ohne Aus-/Einschalten.
Offen (mit Vorschlag)
Neustart oder Weiterlaufen mit dem neuen Graph (Zustand behalten)? Vorschlag: Neustart. Weiterlaufen scheitert, sobald Nodes mit eigenem Zustand (Timer, Sequence) wegfallen oder dazukommen.
Was im Editor-Run schon ins Modell geschrieben wurde (#12: Positionen usw.), bleibt. Vorschlag: ja, das ist die bestehende Unity-Semantik.
Aus #158 (Fund beim Messen: „Eine laufende Behavior-Instanz behält den Graph, mit dem sie gestartet ist … Bestehendes Verhalten, kein Teil dieser Änderung.“). Steht heute als Hinweis im Wiki unter *Colliders*.
## Befund
- Ein Behavior mit **Run in editor** (#12) läuft, während man im Editor arbeitet. Der Interpreter hält den Graph, mit dem die Instanz begonnen hat.
- Ändert man währenddessen den Graph (Node-Einstellung, neue Kante, anderer Wert), läuft die Instanz mit dem alten weiter, bis man *Run in editor* aus- und wieder einschaltet oder Play drückt.
- Gerade das Hin und Her zwischen „ändern“ und „zusehen“ ist der Grund für *Run in editor*. Heute sieht es so aus, als hätte die Änderung nicht gewirkt. In #158 hat das einen Test blind gemacht, der Test schaltet seitdem aus und wieder an.
## Zu bauen (Vorschlag)
- Ändert sich der Graph eines Behavior-Assets (oder eines per Call eingebundenen Graphen), werden die laufenden Editor-Instanzen dieses Assets **neu gestartet**: `On start` feuert erneut, lokale Variablen beginnen bei ihren Defaults. Globale Variablen und State Machines bleiben.
- Neu gestartet wird nach dem Loslassen einer Geste (Kommando ausgeführt), nicht bei jeder Vorschau während des Ziehens.
- Play bleibt unberührt, dort läuft ohnehin eine Wegwerf-Kopie.
- Tests: Unit im `EditorRun`, dass nach einer Graph-Änderung die neue Einstellung wirkt. e2e: Raycast-Ebene im laufenden Editor-Run umstellen (der Fall aus #158), ohne Aus-/Einschalten.
## Offen (mit Vorschlag)
1. **Neustart oder Weiterlaufen mit dem neuen Graph** (Zustand behalten)? Vorschlag: Neustart. Weiterlaufen scheitert, sobald Nodes mit eigenem Zustand (Timer, Sequence) wegfallen oder dazukommen.
2. **Was im Editor-Run schon ins Modell geschrieben wurde** (#12: Positionen usw.), bleibt. Vorschlag: ja, das ist die bestehende Unity-Semantik.
meleki
added the new label 2026-09-23 07:05:35 +02:00
Geschlossen ohne Umbau: Der Befund stimmt nicht mehr.
Was ich gemessen habe
Eine Graph-Änderung kommt beim laufenden Run-in-editor-Behavior schon im nächsten Frame an, ohne Aus- und Einschalten. Das gilt für eine Node-Einstellung, eine neue oder entfernte Kante, einen neuen oder entfernten Node und für Undo.
Gemessen mit einem Unit-Test und im Browser mit Modul 43 (der Raycast-Fall aus #158), beides bevor ich etwas gebaut habe.
Seit wann das so ist, habe ich nicht ermittelt.
Entscheidung
Der Neustart aus dem Vorschlag („vorschläge passen“) wird nicht gebaut. Das habe ich am 2026-10-02 mit den Messwerten rückgefragt, die Antwort war „so lassen“.
Das Behavior läuft weiter. Variablen und Timer behalten ihren Stand, On start feuert nicht neu.
Grund: Ein Neustart ließe bei jeder Graph-Änderung On destroy und On start erneut laufen. Was On start schreibt oder spawnt, landet im Editor-Run jedes Mal im gespeicherten Projekt.
Neu starten geht wie bisher: Run in editor aus und wieder an, oder Play.
Was sich ändert
Am Code nichts.
Modul 43 schaltet das Behavior vor der Messung nicht mehr aus und an.
Wiki: Der Hinweis in Colliders („erst nach einem Neustart“) ist ersetzt. Concepts hat den neuen Absatz „Editing the graph while it runs“.
Under the hood
Ein Command löst das Projekt-Event aus, EditorRun frischt auf, und syncFromModel im BehaviorSystem leert den Graph-Cache. Einstellungen eines Nodes werden ohnehin an Ort und Stelle geändert.
Vier neue Unit-Tests in tests/editor/editor-run.test.ts: geänderte Einstellung, Node dazu und Node weg, ein Fluss an On start, der erst nach Aus und An feuert, und Undo.
Eine Gegenprobe: Ohne das Leeren des Caches fällt der Kanten-Test. Der Einstellungs-Test fällt dabei nicht, weil Einstellungen an Ort und Stelle geändert werden.
Kein neuer e2e-Check, die Summe bleibt 1676. Der bestehende Check in Modul 43 hält jetzt ohne den Workaround.
e2e lief auf dem Baum dieses und des nächsten Commits zusammen. Volle Suite und Smokes liefen nicht, das macht der CI-Lauf.
Nebenbei, eigener Commit
Auf Wunsch gibt es zwei neue Nodes neben Key is down, ohne eigenes Issue:
Key was pressed ist genau in dem Frame true, in dem die Taste hinuntergeht (derselbe Frame wie On key down).
Key was released ist genau in dem Frame true, in dem sie losgelassen wird (wie On key up).
Selbst festgelegt: keine Wiederholung bei gehaltener Taste, und verliert das Fenster den Fokus, gelten alle gehaltenen Tasten in dem Frame als losgelassen.
Gate für beide Commits zusammen: 213 Files, 3278 Tests (3264 + 14). Acht Gegenproben greifen. Im Browser habe ich die Nodes nicht angesehen, weder in der Palette noch mit echter Tastatur.
Commits: b45bbcc (#216) und b5339b9 (Nodes). Wiki: Colliders, Concepts (beide #216) und Behaviors (die zwei Nodes).
Geschlossen ohne Umbau: Der Befund stimmt nicht mehr.
## Was ich gemessen habe
- **Eine Graph-Änderung kommt beim laufenden Run-in-editor-Behavior schon im nächsten Frame an**, ohne Aus- und Einschalten. Das gilt für eine Node-Einstellung, eine neue oder entfernte Kante, einen neuen oder entfernten Node und für Undo.
- Gemessen mit einem Unit-Test und im Browser mit Modul 43 (der Raycast-Fall aus #158), beides bevor ich etwas gebaut habe.
- Seit wann das so ist, habe ich nicht ermittelt.
## Entscheidung
Der Neustart aus dem Vorschlag („vorschläge passen“) wird **nicht** gebaut. Das habe ich am 2026-10-02 mit den Messwerten rückgefragt, die Antwort war „so lassen“.
- **Das Behavior läuft weiter.** Variablen und Timer behalten ihren Stand, `On start` feuert nicht neu.
- **Grund:** Ein Neustart ließe bei jeder Graph-Änderung `On destroy` und `On start` erneut laufen. Was `On start` schreibt oder spawnt, landet im Editor-Run jedes Mal im gespeicherten Projekt.
- **Neu starten** geht wie bisher: *Run in editor* aus und wieder an, oder Play.
## Was sich ändert
- Am Code nichts.
- **Modul 43** schaltet das Behavior vor der Messung nicht mehr aus und an.
- **Wiki:** Der Hinweis in *Colliders* („erst nach einem Neustart“) ist ersetzt. *Concepts* hat den neuen Absatz „Editing the graph while it runs“.
## Under the hood
Ein Command löst das Projekt-Event aus, `EditorRun` frischt auf, und `syncFromModel` im `BehaviorSystem` leert den Graph-Cache. Einstellungen eines Nodes werden ohnehin an Ort und Stelle geändert.
## Tests (auf `melektaus-atx`)
```
Gate → 212 Files, 3264 Tests, CHECK EXIT 0 (3260 + 4)
e2e 18,20,43 → ALL PASSED – 57 checks
```
- **Vier neue Unit-Tests** in `tests/editor/editor-run.test.ts`: geänderte Einstellung, Node dazu und Node weg, ein Fluss an `On start`, der erst nach Aus und An feuert, und Undo.
- **Eine Gegenprobe:** Ohne das Leeren des Caches fällt der Kanten-Test. Der Einstellungs-Test fällt dabei nicht, weil Einstellungen an Ort und Stelle geändert werden.
- **Kein neuer e2e-Check**, die Summe bleibt 1676. Der bestehende Check in Modul 43 hält jetzt ohne den Workaround.
- e2e lief auf dem Baum dieses und des nächsten Commits zusammen. Volle Suite und Smokes liefen nicht, das macht der CI-Lauf.
## Nebenbei, eigener Commit
Auf Wunsch gibt es zwei neue Nodes neben `Key is down`, ohne eigenes Issue:
- **`Key was pressed`** ist genau in dem Frame `true`, in dem die Taste hinuntergeht (derselbe Frame wie `On key down`).
- **`Key was released`** ist genau in dem Frame `true`, in dem sie losgelassen wird (wie `On key up`).
- **Selbst festgelegt:** keine Wiederholung bei gehaltener Taste, und verliert das Fenster den Fokus, gelten alle gehaltenen Tasten in dem Frame als losgelassen.
- Gate für beide Commits zusammen: 213 Files, 3278 Tests (3264 + 14). Acht Gegenproben greifen. Im Browser habe ich die Nodes nicht angesehen, weder in der Palette noch mit echter Tastatur.
Commits: `b45bbcc` (#216) und `b5339b9` (Nodes). Wiki: *Colliders*, *Concepts* (beide #216) und *Behaviors* (die zwei Nodes).
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 #158 (Fund beim Messen: „Eine laufende Behavior-Instanz behält den Graph, mit dem sie gestartet ist … Bestehendes Verhalten, kein Teil dieser Änderung.“). Steht heute als Hinweis im Wiki unter Colliders.
Befund
Zu bauen (Vorschlag)
On startfeuert erneut, lokale Variablen beginnen bei ihren Defaults. Globale Variablen und State Machines bleiben.EditorRun, dass nach einer Graph-Änderung die neue Einstellung wirkt. e2e: Raycast-Ebene im laufenden Editor-Run umstellen (der Fall aus #158), ohne Aus-/Einschalten.Offen (mit Vorschlag)
vorschläge passen
Geschlossen ohne Umbau: Der Befund stimmt nicht mehr.
Was ich gemessen habe
Entscheidung
Der Neustart aus dem Vorschlag („vorschläge passen“) wird nicht gebaut. Das habe ich am 2026-10-02 mit den Messwerten rückgefragt, die Antwort war „so lassen“.
On startfeuert nicht neu.On destroyundOn starterneut laufen. WasOn startschreibt oder spawnt, landet im Editor-Run jedes Mal im gespeicherten Projekt.Was sich ändert
Under the hood
Ein Command löst das Projekt-Event aus,
EditorRunfrischt auf, undsyncFromModelimBehaviorSystemleert den Graph-Cache. Einstellungen eines Nodes werden ohnehin an Ort und Stelle geändert.Tests (auf
melektaus-atx)tests/editor/editor-run.test.ts: geänderte Einstellung, Node dazu und Node weg, ein Fluss anOn start, der erst nach Aus und An feuert, und Undo.Nebenbei, eigener Commit
Auf Wunsch gibt es zwei neue Nodes neben
Key is down, ohne eigenes Issue:Key was pressedist genau in dem Frametrue, in dem die Taste hinuntergeht (derselbe Frame wieOn key down).Key was releasedist genau in dem Frametrue, in dem sie losgelassen wird (wieOn key up).Commits:
b45bbcc(#216) undb5339b9(Nodes). Wiki: Colliders, Concepts (beide #216) und Behaviors (die zwei Nodes).