Aller au contenu principal

Session 30 — Fix textures (clipIdx/ZWGC) + PointLights + AmbientLight

Bug critique : mauvais index texture (texIndex vs clipIdx)

Depuis LevelED.txt (AMOS BASIC) :

ZWG(A,B,0) = ZWG  = fromTile = POSITION X dans le strip de texture (PAS l'index fichier)
ZWG(A,B,2) = ZWGC = chunk file = INDEX DU FICHIER .256wad = VRAI index texture

Dans le binaire (ZoneGraphAdds) :
– HIGH SHORT de LK[W+VO] = ZWG(A,B,0) = texIndex dans JSON = fromTile
– WORD DK[ZWG(A,B,2)] = ZWGC = clipIdx dans JSON = fichier .256wad a utiliser

Fix dans LevelSceneBuilder.parseWalls() :
– w[6] = clipIdx = ZWGC = vrai index -> utilise pour selection du materiau
– w[2] = texIndex = fromTile -> ignore pour la selection de texture
– Si JSON ancien sans clipIdx : fallback sur w[2]

Action requise : ./gradlew convertLevels buildScenes pour regenerer JSON avec clipIdx.

Lumieres de zones : PointLight reelles dans le .j3o

Avant : proxy Nodes avec UserData (lumieres crees a la main dans GameAppState)
Apres : node.addLight(PointLight) dans LevelSceneBuilder -> serialise dans le .j3o

Chaque zone lumineuse (brightness >= 40) genere une PointLight attachee a un
noeud proxy dans lights. Couleur chaude, radius proportionnel a la luminosite.

AmbientLight par defaut dans le .j3o

root.addLight(new AmbientLight(0.35, 0.32, 0.38)) serialisee dans le .j3o.
GameAppState detecte si l’AmbientLight est deja presente, sinon ajoute un fallback.

Workflow obligatoire apres ce fix :

./gradlew convertLevels   # regenere JSON avec clipIdx correct
./gradlew buildScenes     # regenere .j3o avec bonnes textures + PointLights

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *