10 KiB
CAM-B2p-J : DIAG COMMUN-12 (souris, lit, Espace, hauteurs) et correctif C++ (2026-10-14)
GO : Big Boss, 2026-10-14 (« DIAG puis correctif, avec un seul GO » : glisser et rotation à la souris, panneau sur
Alt, restauration à la sortie, N2 et B2p-I ; GO pour la partie C++ ; le PC attend l'UE-GO). Journal lu sans le
modifier : D:\Game\LifePlay_Backup_5.5\COMMUN-12\essais\commun12_LifePlay.log (UTC).
1. DIAG
1.1 Glisser et rotation sans effet (régression B2p-G, établie)
- Journal :
- les prises existent :
couple pris (deplacement)à 12:36:24, 12:37:39, 12:38:15… ; - mais chaque pose est à la même place, et chaque rotation est de +0 degré (12:36:32, 12:37:41, 12:38:20, 12:38:26) ;
- il n'y a aucune ligne
surface refuseeniplace refusee. Le code de pose n'est donc jamais atteint : le seuil de 5 px du glisser (bGrabMoved) n'est jamais franchi, et l'écart deMouseXvaut 0 ; - le curseur ne bouge pas pendant l'appui.
- les prises existent :
- Cause, établie (dump du PC et moteur 5.8) :
- à la fermeture du panneau, le PC repasse en GameOnly (
CallFunction_1394SetInputMode_GameOnly, l. 1171) ; FInputModeGameOnly::ApplyInputMode(PlayerController.cpp:6439-6451) activeUseHighPrecisionMouseMovementetLockMouseToWidget, puisCapturePermanentlyetLockOnCapture: le curseur est caché, sa position figée ;- le journal montre ces bascules (
LogViewport … CaptureDuringMouseDown -> CapturePermanently, 12:38:21).
- à la fermeture du panneau, le PC repasse en GameOnly (
- Pourquoi c'est une régression de B2p-G : avant G-g, un clic court ouvrait le panneau (
LeftMouseSexOn, puisSetInputMode_GameAndUIEx,DoNotLock, l. 1034-1041). La souris restait donc libre pour les prises suivantes (COMMUN-9 à 11). G-g a coupé cette voie : le panneau reste fermé, la souris reste verrouillée. prise=0 MoveCamera=1(12:41 à 12:43) : la position lue au clic est la position figée, pas celle que voit l'utilisateur. La sélection par projection échoue, et le clic part à l'orbite.- Pistes écartées :
- canal Pawn de H3 : la requête ignore le couple (
Query.AddIgnoredActors(Couple)), et le tracé vertical ne sert qu'aprèsbGrabMoved; - test de pose de H4 : jamais atteint (aucune ligne) ;
- sélection depuis que la caméra suit : le recadrage met le couple au centre, ce qui explique les quelques
prise=1(position figée près du centre).
- canal Pawn de H3 : la requête ignore le couple (
1.2 S3, « le lit nous interdit de se poser »
C'est la même cause : la prise sur le lit (12:38:15, racine a +60 cm … fnt_bed02) n'a rien déplacé, puisque le
curseur était figé. Aucune règle de H3 ou H4 n'a refusé le lit (aucune ligne).
1.3 Hauteurs
- Montée pendant la rotation (+22 cm à chaque prise, 12:38:18 à 12:38:23 ; Z 99, puis 121, puis 144) : CAM n'a
rien bougé (rotation de 0). Le meneur a été déplacé pendant la prise par une autre source, et
G3le mesure au relâcher (meneur deplace de 22 cm). La seule voie connue qui monte le couple est la molette de Room : B2p-R O1 (MoveObjectOUSexOn) la donne au couple pendant le sexe. Preuve à 12:37:57 :deplace hors prise … +9 ; molette=+1.0. Le témoin E4 est muet pendant une prise : c'est estimé. Un nouveau témoin l'écrira. - +180 cm au-dessus du sol (12:38:37 à 12:39:16, Z 165 à 171) : ce sont Maj et la molette de Room
(
Maj=1 MoveObject=1). La borne E ne fixe que la racine à 120 cm sous le plafond (racine au plus 163, sol −102), soit jusqu'à 265 cm au-dessus du sol. Établi. Une borne plus basse est proposée (§ 4), pas faite.
1.4 Espace
Pause = SpaceBar (DefaultInput.ini:97). G-g (PC IfThenElse_134) détourne Espace vers le panneau pendant le
sexe. L'utilisateur le veut sur Alt. Alt est déjà l'action RotateCamera (DefaultInput.ini:107-109, avec le clic
molette). Le retour d'Espace à sa fonction demande le PC : défaire la branche 134 (§ 3).
2. Correctif C++ (LPCameraModeSubsystem, instantané CAM-B2p-I3)
.cpp |
.h |
|
|---|---|---|
| Avant (= B2p-I + D1) | 0F383EF777DED71608347E17D4A0861F, 1976 lignes |
6EDBBCCF61759B8C6EE4890DF9BC5FE7, 179 lignes |
| Après | 9D9291021BBB44BD8AD49448494FAB3A, 2197 lignes |
9D85465E284F626D00212FFAA331C4BB, 203 lignes |
Fins de ligne : LF (0 CR).
- J1, souris libre (
KeepMouseFree, à chaque image pendant le sexe, hors menu, sans bouton tenu) :- si le viewport est en
CapturePermanently(GameOnly du PC), on appliqueFInputModeGameAndUI,DoNotLock,HideCursorDuringCapturefaux, sans widget de focus (le clavier reste au jeu). C'est l'état de COMMUN-11 ; - ligne
Sexe : souris liberee pour le glisser (…), au plus une toutes les 2 s, avec le compte.
- si le viewport est en
- J2, curseur de la prise (
GrabCursor) : position réelle quand elle bouge ; sinon, deltas bruts de la souris (GetKeyValue(MouseX/MouseY)). Le glisser (seuil, visée parDeprojectScreenPositionToWorld) et la rotation ne dépendent plus du mode d'entrée. C'est un filet si J1 ne passe pas. - J3, refus muets rendus visibles :
clic hors du couple, pas de prise (curseur, couple à N px, seuil), toutes les 2 s au plus ;glisser sans effet, curseur deplace de N px (seuil 5), deltas bruts sur N images, curseur avec/sans position;rotation sans effet, …;glisser, le curseur ne vise aucune surface(une fois par prise) ;couple deplace pendant la prise hors CAM de (dx, dy, dz) ; molette=… Maj=…, une par seconde au plus : le témoin de § 1.3.
- J4, panneau sur Alt (
TickPanelClick) : Alt gauche ou droit bref (0,2 s au plus, 5 px au plus) bascule le panneau, comme le clic molette. Un appui tenu ou une glissée reste l'orbite (RotateCamera). Lignepanneau bascule (Alt|clic molette, …). Toujours seulement pendant le sexe, hors menu. - J5, restauration à la sortie (
BeginSexSceneetEndSexScene, au front deGI.SexOn) :- au début : empreinte des mappages (nombre d'actions et d'axes, CRC), ligne
debut de scene, touches …; - à la fin :
- prise levée, clic molette et Alt oubliés ;
- boîte d'aide et icône repliées ;
- opacité de
TextBlock_1rendue (D3 de B2p-I) ; PC.MoveCameraà faux si aucun bouton n'est tenu ;PC.SexC3à faux ;- mode d'entrée rendu à GameOnly si CAM l'avait changé, que la vue est toujours dans l'état posé par CAM et qu'aucun menu n'est ouvert ;
- empreinte des touches comparée ;
- une ligne :
fin de scene, etats rendus : prise=… MoveCamera=… SexC3=… ; mode d'entree … ; 4 lignes … ; icone et aide repliees ; touches inchangees|CHANGEES (…).
- CAM ne change aucun mappage (ZQSD, flèches, clics, Alt, Espace, molette et C sont lus, jamais écrits). Le focus clavier rendu à la vue (H1, H2) n'a pas d'état à rendre.
- au début : empreinte des mappages (nombre d'actions et d'axes, CRC), ligne
- J6, texte d'aide : « Mouse wheel: raise / lower the couple » remis (la molette déplace bien le couple, par
B2p-R O1, § 1.3) ; « Alt or middle click (short press): show / hide this panel ». La constante
ActionPauseest retirée. - N2 (I0) et B2p-I (I1, avec D1) sont déjà dans la base de ce correctif.
3. PC : il faut l'éditeur (UE-GO)
Pour qu'Espace retrouve sa fonction pendant le sexe, on défait G-g (2) dans le PC
(CAM-B2p-G-PC-FICHE.md § 7, amendement a) :
- instantané
CAM-B2p-J-PCdu PC ; connect_pinsIfThenElse_40.then→CallFunction_277.execute(remplace 40 → 134) ;delete_nodeIfThenElse_134(le lienVariableGet_22.SexOnvers 134 part avec lui ; celui versIfThenElse_15reste) ;delete_nodeCallFunction_408;- relecture de 40, 277, 22 et 15 ; compilation stricte ;
save_assetsdu PC seul ; V5 (diff contreCAM-B2p-G-PC-VAL_LPDumpFunction_20261014-135527.txt: 1447 → 1445 nœuds) et V6 par un validateur distinct.
Volume : environ 10 appels. Les coupures G-g (1) (clics gauche et droit sans bascule) restent : l'utilisateur ne les remet pas en cause. Le clic molette et Alt (C++) remplacent Espace.
4. Proposé, non fait (à décider)
- Hauteur du couple : borner la racine à la surface sous le couple (sol ou lit) + 30 cm, plutôt qu'au plafond − 120 cm. Cela défait les montées de la molette de Room au-delà. C'est un changement de règle E.
5. Essais (COMMUN-13)
- CAM-91 : panneau fermé, glisser au clic gauche et rotation au clic droit marchent ; ligne
souris liberee. - CAM-92 : glisser sur le lit : posé dessus (S3) ; sur une commode :
surface refusee. - CAM-93 : Alt bref bascule le panneau, Alt tenu tourne la caméra ; Espace (après le PC) fait sa fonction d'origine.
- CAM-94 : fin de scène : ligne
fin de scene, etats rendus … touches inchangees; marche, souris et touches normales. - CAM-95 : molette pendant une prise : ligne
deplace pendant la prise hors CAM. - CAM-86 à 90 (B2p-I) : l'icône « i » et l'aide.
5 bis. Reprise après la VAL (CAM-B2p-J-VAL.md, FAIL sur D1)
Instantané CAM-B2p-I4 (9D929102… / 9D85465E…) ; après : .cpp 1F10631F904E0EAB74BAA896571F0A57, 2220 lignes ;
.h 9AEE8D04CF35C0C6EEDF226E3B0A86C3, 206 lignes, LF.
- D1 (bloquant) : les deltas bruts passent par
GetRawKeyValue.GetKeyValueapplique la sensibilité du projet (0,07), ce qui rendait les deltas 14 fois trop petits. - D2 :
KeepMouseFreelibère aussi la souris quand la capture se fait à l'appui mais cache le curseur (HideCursorDuringCapturevrai : haute précision à l'appui). C'est l'état vu au journal après le premier relâcher. - D3, D4 :
BeginSexScenegarde l'état de la souris du début de scène (mode de capture, verrou, curseur caché).EndSexScenele rend tel quel (GameOnly seulement si la capture était permanente, puis les trois réglages), au lieu d'imposer GameOnly. Le membreMouseCaptureBeforeest remplacé parbSavedMouseState,SavedCaptureMode,SavedLockModeetbSavedHideCursor. - Note de la VAL :
MoveCameran'est plus remis à faux à la fin si Alt est tenu. - D5 (gabarit, intervalle 12:35:26) et D6 (+22 cm attribués trop vite à la molette) : la DIAG § 1.1 et § 1.3 est
corrigée en lecture comme suit. La cause du § 1.1 est estimée forte et non établie : le curseur est caché à
l'appui (GameOnly, ou
HideCursorDuringCapturevrai), donc sa position est figée. Aucune position n'est au journal. Les +22 cm ont une cause non établie : chaque épisode coïncide avec unpanneau basculependant la prise. Le nouveau témoindeplace pendant la prise hors CAMtranchera.
6. Fichiers à commiter
A Source/LifePlay/LPCameraModeSubsystem.cpp et .h ; A CAM-B2p-J-IMPL.md, CAM-B2p-J-VAL.md.