6.1 KiB
6.1 KiB
KEY2-DIAG-02 : V / X sans effet et flèches haut / bas sans effet en scène (essai COMMUN-16)
Fiche KEY2-DIAG-02 — Niveau N3 — Modèle prévu opus (Medium) | utilisé Opus 5.5 — Session « Medium · KEY2 » — Skills : sk-protocol.
Date : 2026-10-20. Ordre de Big Boss local_104ff22d. Lecture seule du code, du journal de COMMUN-16 et de KEY2-CART-02 ; aucune écriture hors de ce livrable (dégel non donné).
Journal : D:\Game\LifePlay_Build_5.8_Development_COM16\Windows\LifePlay\Saved\Logs\LifePlay.log (noté « J » ci-dessous).
1. Constat (cité par Big Boss)
« V/X pas d'action en vue. pour les flèches seul droite /gauche fonctionnent haut/bas ne fonctionnent pas » (en scène).
2. Question 1 : CoupleMoveY (V / X) n'a aucun effet (cause établie)
- Le code de KEY2 (
LPCameraModeSubsystem.cpp, fin deTickSceneKeys(:1344), bloc « KEY2 (§ 8c, 4) ») s'arrête avant tout déplacement si la pièce n'est pas cachée :if (bGrabbing || FMath::IsNearlyZero(MoveAxis) || Couple.Num() == 0 || !MoveRoom || !MoveRoom->IsHidden()) return;. Cette garde a été reprise de celle dePCpour le X (KEY2-CART-02 § 5 ; SPEC § 8c, 4). - Dans la scène de l'essai, la pièce est visible : J l. 10478, « Sexe : couple deplace hors prise de (+0, +0, +9) ; … ; Room cachee=0 ».
- La garde rend donc la main à chaque image : V et X sont lus (
AxisValue), mais le couple ne bouge jamais. Aucune ligne de journal n'existe pour ce bloc, d'où le silence relevé par Big Boss. - Ce n'est ni un axe non lié ni un consommateur absent :
- les liaisons existent :
LPKeyboard.inide COMMUN-16, l. 64-65 (CoupleMoveYV +1 / X −1) ; - le C++ lit l'axe par interrogation (
AxisValue, qui appellePlayerInput->IsPressed), sansInputComponentni consommation.
- les liaisons existent :
3. Question 2 : flèches haut / bas sans effet (comportement d'origine, pas une régression de KEY2)
- Entrée intacte (établi) :
git diff HEAD -- Config/DefaultInput.inine touche aucune ligneDownUpniLeftRight;- les flèches arrivent au jeu : J l. 10440-10451,
fleches=-1/+0,+0/-1,+0/+1, etc. ; - KEY2 ne consomme pas ces axes : le C++ les lit seulement pour le journal (
:1241-1250de la révision d'origine) ; - l'option
CoupleDragne joue que sur le clic gauche (TickCoupleMouse).
- Routage d'origine dans
PC(établi par KEY2-CART-02 § 5) :K2Node_InputAxisEvent_3(DownUp) ne déplace le couple sur X que siGI.Room.bHiddenest vrai. Sinon, il appelleBirdview.DownUpBirdview.LeftRightappelleCircleSexPersonssi la pièce est cachée, sinonBirdview.LeftRightBirdView. Dans une pièce visible (cas de l'essai,Room cachee=0), aucune des deux flèches n'agit donc sur le couple parPC. - Ce que montre J (établi) : pendant les appuis sur les flèches (l. 10440-10451), le lacet du couple reste à −90. Gauche et droite ne le font donc pas tourner non plus dans cette scène. Ce que l'utilisateur voit « fonctionner » à gauche et à droite est sans doute la vue
Birdviewou la caméra de scène (estimé, non lu :Birdview.LeftRightBirdView). Les petits écarts de position du couple entre deux lignes (quelques dizaines d'unités) ont lieu aussi sans touche (l. 10466, 10471) : ils ne sont pas attribuables aux flèches. - La molette, elle, déplace le couple en Z dans une pièce visible (J l. 10478 : « molette=+1.0 », Z +9). C'est le code « B2p-R » de
Roomcité par le C++ (commentaire deBuildControlsHelp). L'aide du jeu, qui affiche « flèches : déplacer le couple », ne vaut donc que pour une pièce cachée. - Classement : comportement d'origine de
PC(une pièce visible ne reçoit pas les flèches pour le couple). KEY2 n'y est pour rien. Le défaut de KEY2 est d'avoir reproduit la même garde pour V / X.
4. Correctif proposé (à écrire au dégel, dans LPCameraModeSubsystem.cpp, coordonné avec CAM2)
- CoupleMoveY dans les deux cas :
- retirer la condition
!MoveRoom->IsHidden(); - pièce visible : borner la nouvelle position du couple à l'intérieur de la pièce, par
ComputeRoomInterior(déjà utilisé par CAM2,FRoomInterior.Area), avec la margeCoupleFloorMargin(30 cm,:144) ; - pièce cachée : pas de borne, comme le X de
PCaujourd'hui ; - repère : Y du monde, décision 15 ; constante
CoupleMoveSpaceinchangée.
- retirer la condition
- Flèches haut / bas : deux options, à trancher par l'utilisateur (ce comportement est d'origine) :
- (a) ne rien changer : les flèches restent à
Birdviewdans une pièce visible. Seule l'aide est corrigée : « flèches : déplacer le couple (pièce cachée) » ; - (b) ajouter en C++ un déplacement du couple sur X du monde par
DownUpdans une pièce visible, borné comme en 1. Les flèches haut / bas déplaceraient alors le couple partout, et gauche / droite resterait àPC. Risque : un double effet siBirdview.DownUpBirdviewagit lui aussi en scène (non lu ; KEY2-CART-02 § 7). Recommandation : (b), avec une ligne de témoin, si l'utilisateur veut que les flèches déplacent le couple comme l'annonce l'aide ; sinon (a).
- (a) ne rien changer : les flèches restent à
- Témoin de journal (demande de Big Boss) : une ligne par appui, au front montant de l'axe, et non à chaque image :
Scene : CoupleMoveY=%+.0f, Room cachee=%d, couple deplace de (%+.0f, %+.0f) [borne : oui/non];- ou
… ignore (raison : prise / pas de couple / pas de piece). Même forme pour l'option (b) avecDownUp.
5. Preuves exigées après l'IMPL
- Pièce visible : V et X déplacent le couple sur Y du monde ; le couple s'arrête à 30 cm du bord du sol ; une ligne de témoin par appui.
- Pièce cachée (scène d'extérieur) : V et X déplacent le couple sans borne.
- Option (b) seulement : les flèches haut et bas déplacent le couple sur X dans une pièce visible, sans autre effet visible (vérifier
Birdview).
6. Limites
Birdview.DownUpBirdviewetBirdview.LeftRightBirdViewne sont pas lus (aucun MCP dans cette fiche).- Le sens de
Room.bHidden(scène d'extérieur ou autre) vient du commentaire du C++ (« Piece cachee (scene d'exterieur) ») : estimé.
Fichiers écrits : ce livrable. Aucun autre fichier modifié.