LifePlay-Revival/Docs/Migration/etat/CAM/CAM-B2p-C-IMPL.md
edujiro5972 8084622450 LifePlay UE 5.8 : état de développement au 2026-10-19
Tickets : REP1-T4

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 22:57:42 +02:00

70 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# CAM-B2p-C-IMPL : ZQSD pour la caméra pendant le sexe, molette en réserve, témoin des touches (C++, 2026-10-14)
GO : « go » de l'utilisateur dans la session CAM (2026-10-14), après le compte rendu qui attendait le GO de B2p et la
décision sur Q8. Lu comme : GO sur B2p, **option A retenue** (vue de scène = `SceneCamera` pendant le sexe, ce qui
revient sur Q8). Écriture sans UE ni compilation, comme B2r. La compilation se fera au prochain passage sous jeton UE.
SPEC : `CAM-B2p-SPEC.md` (P3, P3 bis, témoin).
Instantané : `D:\Game\LifePlay_Backup_5.5\CAM-B2p-C\` (`.cpp` `124336D3…`, `.h` `61A3E062…`, état B2r).
| Fichier | Avant (B2r) | Après |
|---|---|---|
| `Source/LifePlay/LPCameraModeSubsystem.cpp` | `124336D3293EF06BEFCF076D10956234`, 662 lignes | `8E35E07AE08F3F208A24DC4CF2B3338F`, 820 lignes (après la reprise VAL ; première version `E5DA8299…`) |
| `Source/LifePlay/LPCameraModeSubsystem.h` | `61A3E06280BF7226ADB52ECFDD9173DE`, 77 lignes | `9E20981F8C768371A0935E2C7CE9E134`, 84 lignes |
Fins de ligne : LF (0 CR).
## Écritures
- `LPCameraModeLocal` :
- noms d'axes `MoveForward`, `MoveRight`, `LeftRight`, `DownUp`, `ScrollDownUp` ; `GISexPersons`,
`GISexCameraIndex`, `RoomMoveObject` ;
- constantes :
- orbite 90°/s, avance ou recul 200 cm/s, distance de 80 à 800 cm ;
- regard POV 90°/s, tangage borné à ±80° ;
- `bSexWheelZoom = false` (P3 bis désactivé), cran de molette 40 cm ;
- témoin au plus une ligne par seconde ;
- aides `ReadInt`, `ReadActors` (acteurs valides d'un tableau d'objets) et `AxisValue` (copie de celle de STG :
état brut des touches mappées, remappages suivis).
- `Tick` : garde le résultat de `MenuOnScreen` dans `bMenuOnScreen`, pour ne pas parcourir les widgets à chaque
image.
- `TickSwitchKey` (à chaque image) appelle `TickSexCamera`.
- **`TickSexCamera`** : rien si `SexOn` est faux ou si un menu est à l'écran.
- Pivot : moyenne des positions des `SexPersons` valides.
- **Vue = `Room.SceneCamera`** (mode Scene, posé par P1 de B2p-R) :
- Q/D : la position tourne autour du pivot (axe vertical), et le lacet de la caméra tourne du même angle ;
- Z/S : avance ou recul vers le pivot, borné de 80 à 800 cm. Les bornes ne s'appliquent que pendant l'avance ou
le recul : l'orbite seule ne déplace pas une caméra que le jeu a posée plus loin ;
- D tourne vers la droite (angle = −côté × vitesse × dt, convention de lacet d'UE).
- **Vue = une des `SexPersons`** (POV) : sur `FirstPersonSM` de la personne en vue (le même composant que la souris
en POV), Q/D règlent le lacet et Z/S le tangage, borné à ±80°.
- Autre vue : aucun mouvement.
- **Témoin**, au plus une ligne par seconde, tant que ZQSD, une flèche ou Maj est tenu :
`Sexe : touches avant=… cote=… fleches=…/… Maj=… MoveObject=… MoveCamera=… ; vue … ; index POV … ;
couple N a (x, y, z)`.
- `.h` : `TickSexCamera`, `bMenuOnScreen`, `SexKeysCooldown`.
## Écarts à la SPEC
- Le menu Clavier est testé par `MenuOnScreen` (qui inclut `ULPKeyboardSubsystem::IsMenuOpen` et les menus du jeu),
gardé à 0,1 s, au lieu d'`IsMenuOpen` seul : c'est plus large, donc plus sûr.
- P3 bis est écrit mais désactivé (`bSexWheelZoom = false`), comme le prévoit la SPEC.
- Déclarés après la VAL (`CAM-B2p-C-VAL.md`, constats 3 et 4) :
- le format du témoin diffère du texte de la SPEC : `avant` et `cote` au lieu de Z/Q/S/D séparés, et `couple N a`
(nombre de personnes du couple) ;
- en POV, la rotation est posée en angles monde (lacet + tangage borné, `SetWorldRotation`), au lieu
d'`AddWorldRotation` avec un tangage autour de l'axe droit local. Le résultat est le même tant que le roulis
reste nul ; on le vérifie en V7 ;
- sens de D : en mode Scene, la caméra se déplace vers sa droite autour du couple (son lacet diminue) ; en POV, le
regard tourne vers la droite (le lacet augmente). À l'écran, les deux donnent « vers la droite ». Ressenti à
confirmer en V7.
- Reprise après la VAL (constat 2) : le pas de temps est borné à 0,05 s (`SexMaxStep`). Un à-coup d'image ne fait
plus tourner ni avancer la caméra d'un coup. Trois lignes de plus, MD5 `.cpp` `8E35E07A…` ; diff revu par le même
validateur.
- Laissé en l'état (constat 1, conforme à la SPEC) : au premier appui sur Z/S, une caméra posée par le jeu hors de
80 à 800 cm saute à la borne.
## Ce qui ne marche qu'avec B2p-R
Sans P1 (Room), la vue en mode Scene reste `CamRoom` (sauf départ en C3), et ZQSD n'agit pas en mode Scene. Le POV
marche sans P1.
## Non fait (hors GO)
Compilation, et B2p-R (Room, MCP) : à faire sous UE-GO.