Pourquoi ce patch
Apres s13f, les logs runtime de l’utilisateur ne montrent aucun message
[DoorControl]. Or les logs ne s’impriment que quand canPass change
d’etat. Donc soit :
- Aucune porte ne s’ouvre vraiment (logique
wantOpenjamais vraie) - Les portes s’ouvrent mais pas assez pour franchir le seuil
canPass - Le
controlUpdatene tourne pas du tout - Le
rbcest null (mesh degenere a l’init -> exception silencieuse)
Impossible de patcher a l’aveugle. On installe des logs qui couvrent les
4 hypotheses et on ré-teste.
Logs ajoutes
Au demarrage (apres setSpatial, par porte) :
[DoorControl INIT] door zone=N : closedRoofY=X.XXX openRoofY=X.XXX \
corridorFloorY=X.XXX corridorRoofY=X.XXX panCount=N rbc=OK/NULL \
raise=N lower=N openSpeedJ=X.XXX closeSpeedJ=X.XXX triggerDist=X.XXX
Permet de verifier :
– Les valeurs Y (sont-elles dans le bon ordre ?)
– Le nombre de panneaux (panCount > 0 ?)
– Si rbc a ete cree (= collision shape OK)
– La vitesse d’ouverture, le triggerDist
Au runtime (toutes les 0.5s, pour les portes proches) :
[DoorControl RUN] zone=N dist=X.XX trigger=X.XX currentRoofY=X.XXX \
want=true/false canPass=true/false rbcInSpace=true/false \
player=(X.XX, Y.YY, Z.ZZ)
Permet de verifier :
– Distance joueur a la porte (pour savoir si on est dans triggerDist)
– Si la porte essaie d’ouvrir (want=true)
– Si currentRoofY evolue
– Si canPass est correctement calcule
– Si le rbc est bien dans le space ou pas
A l’ouverture/fermeture (deja present en s13f, on garde) :
[DoorControl] door zone=N : OPEN, collision REMOVED (currentRoofY=...)
[DoorControl] door zone=N : CLOSED, collision ADDED
Properties pour controler les logs
-Dab3d2.dumpDoorInit=true # logs INIT (ON par defaut)
-Dab3d2.dumpDoorRun=true # logs RUN periodiques (ON par defaut)
-Dab3d2.dumpDoorCol=true # logs OPEN/CLOSED collision (ON par defaut)
Mettre =false pour desactiver une fois le diagnostic termine.
Fichiers modifies
DoorControl.java:- Logs INIT a la fin de
setSpatial - Logs RUN au debut de
controlUpdate(throttled a 0.5s) - Catch + log d’erreur dans le
createMeshShape(avant on swallow)
Action utilisateur attendue
./gradlew buildScenes./gradlew run- Rejoindre une porte (s’approcher a moins de 3-4m)
- M’envoyer TOUS les logs
[DoorControl ...]qui apparaissent
(au moins 5-10 secondes apres etre proche de la porte)
A partir de ces logs on saura precisement pourquoi la porte ne se laisse
pas traverser. Promis, on debloque ensuite !