Bug racine : NullPointerException sur bullet.getPhysicsSpace()
Dans initialize(), on appelait :
bullet = new BulletAppState();
sm.attach(bullet); // bullet ajoute en attente
bullet.getPhysicsSpace().add(rbc); // NPE ! physicsSpace = null jusqu'au prochain frame
AppStateManager.attach() ne fait QUE ajouter l’etat en file d’attente.
Il est initialise au debut du PROCHAIN sm.update(), pas immediatement.
Donc getPhysicsSpace() retourne null → NPE → initialize() s’arrete
→ camera jamais positionnee → ecran noir.
Fix : setup physique differee
Nouvel ordre :
1. initialize() : charge .j3o, attache scene, eclairage, camera au spawn, input, attach(bullet)
2. update() frame 1 : bullet.isInitialized() == false → attend, camera libre (noclip)
3. update() frame 2+ : bullet.isInitialized() == true → setupPhysics() (collider + CharacterControl)
Fix : camera positionnee des initialize()
positionCameraAtSpawn() appele AVANT l’attach(bullet) → scene visible
des la premiere frame, meme si les physiques ne sont pas encore actives.
Fix : spawn Y calcule depuis floorH de la zone
Avant : y = 3.0f → camera = y+1.5 = 4.5 → au-dessus du plafond (4.0) → noir
Apres : y = getSpawnFloorY() + 1.0f → zone 3 (floorH=0) : y=1.0, camera=2.5 → OK