Aller au contenu principal

Session 108b — Texture chevron pour les parois du lift

Symptôme

Après session 108, l’entrée du lift est ouverte (fix #1 OK), mais en
entrant dans la cabine on voit que les parois latérales (les lift_side_*)
portent la texture du sol (= floor_02 beige pour zone 104), pas la
texture chevron jaune/noir typique des ascenseurs Alien Breed.

Diagnostic

Les vrais walls de zone 104 dans le JSON ont tous clipIdx=5 (=
wall_05_chevrondoor, la texture chevron), mais le code session 99
créait les sides avec liftMat (= matériau du sol). Le commentaire de
l’époque le notait déjà :

// Pour zone 104 : floor_03 ou similaire (chevron jaune si possible).
// On reutilise liftMat pour la coherence visuelle.

Mais floor_03 n’est pas le bon, et de toutes façons un sol n’a pas
les bonnes proportions (= horizontal) pour servir de paroi.

Fix

Dans la création des liftNodes, juste avant la boucle de création des
sides : récupérer le clipIdx du premier wall de la zone-lift et
utiliser wm[clipIdx] comme matériau des sides :

Material sideMat = liftMat;  // fallback
List<int[]> liftZoneWalls = zw.get(zid);
if (liftZoneWalls != null && !liftZoneWalls.isEmpty()) {
    int sideClipIdx = liftZoneWalls.get(0)[6];
    if (sideClipIdx >= 0 && sideClipIdx < NUM_WALL_TEX && wm[sideClipIdx] != null) {
        sideMat = wm[sideClipIdx];
    }
}

Aussi, normalisation des UV en tile-units (L2 / sideTileSize,
sideHeight / sideTileSize) avec sideTileSize = (wMask + 1) / SCALE
(= 4 JME pour une tile 128px). Sans cette normalisation, la texture
chevron était étirée de plusieurs fois sa taille réelle.

Pour tester

./gradlew buildScenes run

Observation : en entrant dans le lift, les 4 parois latérales ont
maintenant la texture chevron jaune/noir caractéristique. Le pattern
se répète correctement (~1 chevron en largeur d’un seg de 4 JME, ~3
en hauteur sur la course du lift).

Fichiers modifiés

  • tools/LevelSceneBuilder.java : création des liftNodes
  • récupération de sideMat depuis le clipIdx du premier wall
  • normalisation UV par sideTileSize
  • utilisation de sideMat (au lieu de liftMat) dans les Geometry
    lift_side_*

Laisser un commentaire

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