Shader: Property-Name kann Sprite-Zeilen kapern (width, color, ...) #63

Closed
opened 2026-09-13 11:27:43 +02:00 by meleki · 1 comment
Owner

Befund

isValidPropertyName (src/core/properties/shaders.ts) prueft nur isValidFieldName. Die Sperre gegen die eingebauten Sprite-Keys, die Behavior-Variablen haben (isValidVariableName mit isCommonProp), fehlt.

Eine Property namens width, height, color, texture oder shader erzeugt deshalb eine doppelte Schemazeile: schemaForBag haengt die Shader-Zeilen ungeprueft an die Sprite-Zeilen (PropertySchema.ts). Beide Zeilen teilen sich den Bag-Key, der Uniform u_width liest dann die Sprite-Breite (z. B. 100) statt den Default des Property-Nodes.

Vorschlag

Im Compiler als Node-Problem melden, wie ungueltige und doppelte Namen heute schon: Name is a sprite property. Die gesperrte Liste sind die Keys aus PROPERTY_SCHEMAS.sprite, nicht eine zweite Kopie.

Ein Unit-Test in shaders.test.ts (Gegenprobe: Sperre entfernen, Test faellt).

## Befund `isValidPropertyName` (`src/core/properties/shaders.ts`) prueft nur `isValidFieldName`. Die Sperre gegen die eingebauten Sprite-Keys, die Behavior-Variablen haben (`isValidVariableName` mit `isCommonProp`), fehlt. Eine `Property` namens `width`, `height`, `color`, `texture` oder `shader` erzeugt deshalb eine **doppelte Schemazeile**: `schemaForBag` haengt die Shader-Zeilen ungeprueft an die Sprite-Zeilen (`PropertySchema.ts`). Beide Zeilen teilen sich den Bag-Key, der Uniform `u_width` liest dann die Sprite-Breite (z. B. 100) statt den Default des Property-Nodes. ## Vorschlag Im Compiler als Node-Problem melden, wie ungueltige und doppelte Namen heute schon: `Name is a sprite property`. Die gesperrte Liste sind die Keys aus `PROPERTY_SCHEMAS.sprite`, nicht eine zweite Kopie. Ein Unit-Test in `shaders.test.ts` (Gegenprobe: Sperre entfernen, Test faellt).
meleki added the low-priorityshader labels 2026-09-13 11:27:43 +02:00
admin added this to the Development project 2026-09-13 13:29:59 +02:00
admin removed this from the Development project 2026-09-13 13:30:59 +02:00
admin added this to the Development project 2026-09-13 13:45:44 +02:00
admin moved this to Next in Development on 2026-09-15 13:34:32 +02:00
Author
Owner

Erledigt in c990dbc.

isSpriteProp() sitzt jetzt in src/core/properties/PropertySchema.ts:316 und ist abgeleitet
aus FULL_SCHEMAS.sprite
— keine zweite Liste, die auseinanderlaeuft, sobald eine Sprite-Zeile
dazukommt. Gesperrt sind damit genau die zehn Namen enabled, scale, rotation, mirrorX, mirrorY, width, height, color, texture, shader.

isValidPropertyName (src/core/properties/shaders.ts:36) weist sie ab, und der Compiler meldet
den Fall als eigenes Problem am Node (compile.ts:80): "width" is a sprite property —
unterschieden vom "kein Wort"-Fall und vom Duplikat, damit man weiss, was zu tun ist.

Belegt: npm run check gruen (1090 Tests), e2e Schritt 28 shader mit einem neuen Check fuer
den gekaperten Namen und einem zweiten mit freiem Namen als Gegenprobe. CI-Task 53 auf 7e5003b
gruen, ALL PASSED - 930 checks.

Wiki: Shaders.md nennt die gesperrte Namensliste samt Begruendung an der Property-Zeile.

Erledigt in `c990dbc`. `isSpriteProp()` sitzt jetzt in `src/core/properties/PropertySchema.ts:316` und ist **abgeleitet aus `FULL_SCHEMAS.sprite`** — keine zweite Liste, die auseinanderlaeuft, sobald eine Sprite-Zeile dazukommt. Gesperrt sind damit genau die zehn Namen `enabled, scale, rotation, mirrorX, mirrorY, width, height, color, texture, shader`. `isValidPropertyName` (`src/core/properties/shaders.ts:36`) weist sie ab, und der Compiler meldet den Fall als **eigenes Problem am Node** (`compile.ts:80`): `"width" is a sprite property` — unterschieden vom "kein Wort"-Fall und vom Duplikat, damit man weiss, was zu tun ist. **Belegt:** `npm run check` gruen (1090 Tests), e2e Schritt 28 `shader` mit einem neuen Check fuer den gekaperten Namen und einem zweiten mit freiem Namen als Gegenprobe. CI-Task 53 auf `7e5003b` gruen, `ALL PASSED - 930 checks`. Wiki: `Shaders.md` nennt die gesperrte Namensliste samt Begruendung an der `Property`-Zeile.
admin moved this to Done in Development on 2026-09-16 08:18:46 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#63