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

4.6 KiB
Raw Blame History

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.