The inspector already marked an asset value that differs from its schema default, but the Assets panel gave no hint, so a changed asset looked like an untouched one until you opened it. The rule sits next to the existing objectDeviates as a pure function: assetDeviates asks whether any marked property differs, markedAssetSchema says which rows the inspector marks at all. buildAssetSection now builds its rows from that same list, replacing the behavior/rest split it used to carry, so the list cannot claim a deviation the inspector then fails to show. A behavior's variables are deliberately not in it. Their default is declared on the variable itself, which means the asset value *is* that default; counting them would paint the fixture's Mover gold while the inspector beside it marks nothing.
2.4 KiB
die textfarbe beim asset soll auch in diesem gold dargestellt werden, falls ein property des assets einen override hat. ist somit relativ simpel: im prinzip genau das checken was im inspector erscheint wenn man das asset auswählt => gibt es wo einen override (gold) dann auch den assetname links im panel gold darstellen.
Umgesetzt (2026-09-09). Der Name einer Asset-Zeile im Assets-Panel ist gold, solange das Asset irgendeine Property traegt, die der Inspector gold malen wuerde — dieselbe Farbe und dasselbe Kriterium wie in der Hierarchie.
Die Regel steht als reine Funktion in src/core/properties/deviation.ts, neben dem schon
vorhandenen objectDeviates:
markedAssetSchema(asset)— die Zeilen, die der Asset-Inspector als "modified" markiert.assetDeviates(asset)— ob davon eine von ihrem Schema-Default abweicht (isModified).
Panel und Inspector benutzen dieselbe Liste, statt die Bedingung zweimal zu formulieren:
buildAssetSection baut seine Property-Zeilen jetzt aus markedAssetSchema(asset) (das ersetzt
die Fallunterscheidung Behavior/Rest, die dort vorher stand). Damit kann die Liste keine
Abweichung behaupten, die der Inspector danach nicht zeigt.
Ein Sonderfall, der eine Entscheidung brauchte: die Variablen eines Behaviors. Sie sind Teil
von schemaForAsset, aber der Inspector markiert sie bewusst nie (setModified ist dort ein
No-op) — ihr Default ist auf der Variablen selbst deklariert, der Asset-Wert ist dieser
Default. Ein Behavior mit speed = 200 ist deshalb nicht gold. Sonst waere im E2E-Fixture der
"Mover" gold gewesen, ohne dass der Inspector irgendwo etwas markiert haette — genau der
Widerspruch, den die Notiz ausschliesst.
Belegt (E2E-Modul 04, sechs neue Checks ueber den Test-Hook __gm.assetRowColor, der die
tatsaechliche Label-Farbe der Zeile liest):
- Crate (Hoehe 60 statt 100, eigene Farbe) →
#f2c84b, Main camera (alles auf Default) →#e6e8ee - Mover (Variable
speed= 200 gegen deklarierten Default 0) →#e6e8ee, wie der Inspector - ein ↺ zurueckgesetzt → bleibt gold, weil die zweite Abweichung noch steht
- die zweite auch zurueckgesetzt → wird schlicht, ohne Reload; Undo bringt die Marke zurueck
Screenshot 15-asset-reset: im Panel sind "Level 1" (Hintergrundfarbe), "Crate" und
"Crate collider" gold, "Main camera", "Mover", "Spawner" und das frisch angelegte "Sprite" weiss.