allShaderParamRows (src/editor/inspector/portSection.ts) sammelt die Property-Zeilen aller Shader-Assets des Projekts und bietet sie im Port-Picker des Properties-Nodes fuer jedes Sprite an. An einem Sprite mit Shader B ist deshalb glow aus Shader A waehlbar. Zur Laufzeit wird der Wert in den Bag geschrieben, read() des Filters ignoriert ihn, nichts meldet das.
Vorschlag
Zeigt der Port fest auf ein Sprite (Asset bekannt): nur die Params dessen Shaders anbieten.
Sonst (Ziel erst zur Laufzeit bekannt): die Params nach Shader gruppieren, damit sichtbar ist, wohin ein Eintrag gehoert.
Ob ein Node-Problem angezeigt werden soll, wenn ein Param gewaehlt ist, den der Shader des Ziels nicht kennt, ist offen; mindestens eine Konsolenzeile beim Schreiben waere sinnvoll.
## Befund
`allShaderParamRows` (`src/editor/inspector/portSection.ts`) sammelt die Property-Zeilen **aller** Shader-Assets des Projekts und bietet sie im Port-Picker des `Properties`-Nodes fuer jedes Sprite an. An einem Sprite mit Shader B ist deshalb `glow` aus Shader A waehlbar. Zur Laufzeit wird der Wert in den Bag geschrieben, `read()` des Filters ignoriert ihn, nichts meldet das.
## Vorschlag
- Zeigt der Port fest auf ein Sprite (Asset bekannt): nur die Params **dessen** Shaders anbieten.
- Sonst (Ziel erst zur Laufzeit bekannt): die Params nach Shader gruppieren, damit sichtbar ist, wohin ein Eintrag gehoert.
Ob ein Node-Problem angezeigt werden soll, wenn ein Param gewaehlt ist, den der Shader des Ziels nicht kennt, ist offen; mindestens eine Konsolenzeile beim Schreiben waere sinnvoll.
meleki
added the shader label 2026-09-13 11:27:43 +02:00
admin
added this to the Development project 2026-09-13 13:29:59 +02:00
admin
moved this to Next in Development on 2026-09-13 13:39:15 +02:00
Die Sprite-eigenen Zeilen (enabled, width, texture, ...) bleiben unbeschriftet -- die Beschriftung markiert genau das, was vorher verwirrte.
Zuschnitt wie abgestimmt: nur der Picker. Keine Laufzeitmeldung, wenn ein Wert an ein Sprite geschrieben wird, dessen Shader den Param nicht kennt (writeTyped schreibt in target.props, read() ignoriert ihn still) -- und kein neues Setting.
Eine Stelle, die leicht schiefgegangen waere
Die Notiz haengt an einer Map auf das Def-Objekt, nicht auf den Namen. Ein Sprite-Property und ein Shader-Param duerfen denselben Namen tragen (das ist #63) -- ein Schluessel auf den Namen haette dann die falsche Zeile beschriftet.
Beweise
./check.sh
=== CHECK EXIT 0 ===, 850 Tests (849 + 1 neuer)
e2e Modul 24 allein
ALL PASSED - 22 Checks (vorher 20), Exit 0
Angesehen
Screenshot des offenen Menues: die vier Shader-Zeilen benannt, die Sprite-Zeilen nicht -- der Shot gehoert jetzt dauerhaft zum Schritt
Gueltigkeit
keine Datei in src/ juenger als das Bundle; Neubau nach den Gegenproben md5-gleich mit dem des gruenen Laufs
Zwei Gegenproben, jede beisst an ihrer Stelle: zweiter Shader-Name verworfen -> genau der neue Unit-Test faellt, 15 andere bleiben gruen. Menue-Notiz abgeklemmt und neu gebaut -> genau die zwei neuen e2e-Checks fallen, die uebrigen 20 bleiben gruen.
Ein Fund am Messgeraet, kein Produktfehler
Eine Port-Sektion nimmt ihre Auswahl beim Bauen des Inspectors, nicht beim Oeffnen des Menues. Ein mutate(), das einen zweiten Shader anlegt, aendert das Menue also nicht, und select() auf denselben Node ist wegen sameSelection ein No-op. Der Schritt waehlt jetzt ab und wieder an.
Gebaut und gemessen. Commit **5c1c3c6**, Wiki **46d30db**.
## Was der Picker jetzt zeigt
Jeder Shader-Param im `+ Property`-Menue des `Properties`-Nodes nennt seinen Shader; ein von zwei Shadern geteilter Name nennt beide:
```
brightness (Adjust colors, Neon glow)
contrast (Adjust colors)
glow (Neon glow)
```
Die Sprite-eigenen Zeilen (`enabled`, `width`, `texture`, ...) bleiben unbeschriftet -- die Beschriftung markiert genau das, was vorher verwirrte.
Zuschnitt wie abgestimmt: **nur der Picker**. Keine Laufzeitmeldung, wenn ein Wert an ein Sprite geschrieben wird, dessen Shader den Param nicht kennt (`writeTyped` schreibt in `target.props`, `read()` ignoriert ihn still) -- und kein neues Setting.
## Eine Stelle, die leicht schiefgegangen waere
Die Notiz haengt an einer Map **auf das Def-Objekt**, nicht auf den Namen. Ein Sprite-Property und ein Shader-Param duerfen denselben Namen tragen (das ist #63) -- ein Schluessel auf den Namen haette dann die falsche Zeile beschriftet.
## Beweise
| | |
|---|---|
| `./check.sh` | `=== CHECK EXIT 0 ===`, **850 Tests** (849 + 1 neuer) |
| e2e Modul 24 allein | **ALL PASSED - 22 Checks** (vorher 20), Exit 0 |
| Angesehen | Screenshot des offenen Menues: die vier Shader-Zeilen benannt, die Sprite-Zeilen nicht -- der Shot gehoert jetzt dauerhaft zum Schritt |
| Gueltigkeit | keine Datei in `src/` juenger als das Bundle; Neubau nach den Gegenproben **md5-gleich** mit dem des gruenen Laufs |
**Zwei Gegenproben, jede beisst an ihrer Stelle:** zweiter Shader-Name verworfen -> genau der neue Unit-Test faellt, 15 andere bleiben gruen. Menue-Notiz abgeklemmt und **neu gebaut** -> genau die zwei neuen e2e-Checks fallen, die uebrigen 20 bleiben gruen.
## Ein Fund am Messgeraet, kein Produktfehler
Eine Port-Sektion nimmt ihre Auswahl beim **Bauen** des Inspectors, nicht beim Oeffnen des Menues. Ein `mutate()`, das einen zweiten Shader anlegt, aendert das Menue also nicht, und `select()` auf denselben Node ist wegen `sameSelection` ein No-op. Der Schritt waehlt jetzt ab und wieder an.
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.
Befund
allShaderParamRows(src/editor/inspector/portSection.ts) sammelt die Property-Zeilen aller Shader-Assets des Projekts und bietet sie im Port-Picker desProperties-Nodes fuer jedes Sprite an. An einem Sprite mit Shader B ist deshalbglowaus Shader A waehlbar. Zur Laufzeit wird der Wert in den Bag geschrieben,read()des Filters ignoriert ihn, nichts meldet das.Vorschlag
Ob ein Node-Problem angezeigt werden soll, wenn ein Param gewaehlt ist, den der Shader des Ziels nicht kennt, ist offen; mindestens eine Konsolenzeile beim Schreiben waere sinnvoll.
Gebaut und gemessen. Commit
5c1c3c6, Wiki 46d30db.Was der Picker jetzt zeigt
Jeder Shader-Param im
+ Property-Menue desProperties-Nodes nennt seinen Shader; ein von zwei Shadern geteilter Name nennt beide:Die Sprite-eigenen Zeilen (
enabled,width,texture, ...) bleiben unbeschriftet -- die Beschriftung markiert genau das, was vorher verwirrte.Zuschnitt wie abgestimmt: nur der Picker. Keine Laufzeitmeldung, wenn ein Wert an ein Sprite geschrieben wird, dessen Shader den Param nicht kennt (
writeTypedschreibt intarget.props,read()ignoriert ihn still) -- und kein neues Setting.Eine Stelle, die leicht schiefgegangen waere
Die Notiz haengt an einer Map auf das Def-Objekt, nicht auf den Namen. Ein Sprite-Property und ein Shader-Param duerfen denselben Namen tragen (das ist #63) -- ein Schluessel auf den Namen haette dann die falsche Zeile beschriftet.
Beweise
./check.sh=== CHECK EXIT 0 ===, 850 Tests (849 + 1 neuer)src/juenger als das Bundle; Neubau nach den Gegenproben md5-gleich mit dem des gruenen LaufsZwei Gegenproben, jede beisst an ihrer Stelle: zweiter Shader-Name verworfen -> genau der neue Unit-Test faellt, 15 andere bleiben gruen. Menue-Notiz abgeklemmt und neu gebaut -> genau die zwei neuen e2e-Checks fallen, die uebrigen 20 bleiben gruen.
Ein Fund am Messgeraet, kein Produktfehler
Eine Port-Sektion nimmt ihre Auswahl beim Bauen des Inspectors, nicht beim Oeffnen des Menues. Ein
mutate(), das einen zweiten Shader anlegt, aendert das Menue also nicht, undselect()auf denselben Node ist wegensameSelectionein No-op. Der Schritt waehlt jetzt ab und wieder an.