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