# CAM-B2-IMPL : C2 en poursuite lissée, confinement, pilotage et Third Person (B2, B2b, B2d, B2e) (2026-10-13) Lot CAM, sous-lots B2 (`CAM-SPEC.md` § CAM-B2), B2b (§ CAM-B2b), B2d (§ CAM-B2d), B2e (amendement de B2b-1, `CAM-B2e-FICHE.md`). Room seul. Journal brut des appels et des décisions : `CAM-B2-journal.txt` (ignoré par git, archivé par TRACE1). Rapports des fiches : `CAM-B2b-IMPL-F1.md` à `-F7.md`, `CAM-B2d-IMPL.md`, `CAM-B2e-IMPL.md`. ## 1. Enchaînement | Étape | Exécutant | Résultat | Room (MD5) | |---|---|---|---| | B2 (B2-1 à B2-7) | session CAM, appels MCP directs | `CamRoom`, `EnsureCamRoom`, `ComputeC2Target` (cible derrière le MC, Z = tête + 60, balayage 12 cm), `PlaceC2`, voie C2, poursuite `VInterpTo` / `RInterpTo` vitesse 8 dans `UpdateRoomCam`, `ReceiveEndPlay` ; 55 nœuds, 240 supprimé | `50E736F8` → `A5FA970E` | | Essais B2 | utilisateur (archive `…_CAM-B2_Development`) | « caméra trop proche près d'un mur » ; perte de la commande de la caméra ; perte de la marche (hors CAM, confiée à STG) ; caméras de sexe inchangées | — | | B2b (F1 à F7) | `lp-mcp-bp`, un appel par message | confinement dans `ComputeRoomBox`, rayon 20, repli vers le haut à moins de 80 cm, trajectoire protégée, option 1 (flèches, souris, molette) ; 95 nœuds | `A5FA970E` → `E0517C63` | | Essais B2b | utilisateur (archive `COMMUN-1`) | « camera est hors de la pièces » ; « le personnage est difficile à manier » | — | | B2d | `lp-mcp-bp` | C2 derrière la rotation de contrôle du PC ; la souris et les flèches tournent cette rotation (`SetControlRotation`) ; alignement à l'entrée en C2 | (en mémoire) | | B2e | `lp-mcp-bp` | boîte calculée sur les faces intérieures des 4 murs (`GetComponentBounds`) et sous `WallT` ; un seul enregistrement avec B2d | `E0517C63` → `CA2A9A0B` | ## 2. VAL | Contrôle | B2 | B2b | B2d + B2e | |---|---|---|---| | V3 relecture `get_node_infos` | conforme | chaque fiche contre-vérifiée par la session | contre-vérifié | | V4 compilation stricte | aucun message | aucune exception | aucune exception | | V5 dump Room (`CAM-*-VAL_LPDumpFunction_*.txt`) | 1084 → 1138 nœuds | 1138 → 1233 | 1233 → 1260 ; `SetControlRotation` 3, `GetComponentBounds` 6 | | V6 CompileAllBlueprints | = référence (3 erreurs externes `CR_FaceExpRig`) | = référence | = référence | | V7 build | `…_CAM-B2_Development`, CheckPackage 4/4 | `COMMUN-1` (STG), CheckPackage 4/4 | dans `COMMUN-2` | | V8 journal du jeu | PASS (0 ligne caméra) | PASS (0 ligne caméra ; 4 `Accessed None` nouveaux via `Person.PlayIdle`, hors CAM, signalés à STG) | essai commun à venir | ## 3. Écarts et décisions (détail : journal) - 3 écarts « deux appels MCP dans un message » (B0, B1, B2), sans effet. Ensuite, écritures par `lp-mcp-bp` (consigne de Big Boss). - SPEC : simplification Z = tête + 60 (B2) ; correction E3 (`C2Dist` = décalage, B2b) ; `GetWorldScale` au lieu de `RelativeScale3D` (B2b, E2) ; `declaring_class` Controller pour `GetControlRotation` (B2d, E1). - Décisions de l'utilisateur : option 1 de pilotage ; caméra toujours dans la pièce ; build commun et fiche de tests commune ; « on ne change plus rien pour les scènes de sexe avant la release » (B1e limité à C1, B5 gelé). - Points ouverts : risque R-B1f (masquages de C1 actifs si une scène de sexe démarre en C1 ; test CAM-16) ; pièces supposées de lacet 0 et sans garde Min ≤ Max (B2e) ; réponse de `Wall2-4` au canal Camera non lue. ## 4. Fichiers à commiter `Content/BPs/Room.uasset` (`CA2A9A0B`), `Source/LifePlay/LPCameraModeSubsystem.h` / `.cpp` (B2c, voir `CAM-B2c-IMPL.md`), et les livrables `.md` de `Docs/Migration/etat/CAM/` (liste : `CAM-B2-DOC.md`).