LifePlay-Revival/Docs/Migration/etat/CAM/CAM-B2p-G-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

5.5 KiB
Raw Blame History

CAM-B2p-G-IMPL (partie C++) : recadrage, suivi du couple, C3 côté C++, témoin G3 (2026-10-14)

GO : Big Boss, 2026-10-14 (« GO pour B2p-G, option 1 » ; C++ tout de suite, sans jeton ; PC par MCP après l'UE-GO). SPEC : CAM-B2p-G-SPEC.md. Écriture sans compilation (l'essai COMMUN-11 est en cours).

Instantané : D:\Game\LifePlay_Backup_5.5\CAM-B2p-G\ (.cpp 03D85D28…, .h 4AE65994…).

Fichier Avant Après
Source/LifePlay/LPCameraModeSubsystem.cpp 03D85D282A6306E6D2494D7DC2C253FC, 1437 lignes A5F041FFA8562F9E75560EAD01725E2B, 1575 lignes (après la reprise N1/N2 ; première version 6D88EDDA…, 1570 lignes)

Reprise après la VAL (CAM-B2p-G-VAL.md, N1 et N2) :

  • N1 : le seuil de suivi passe de 0,5 cm à 0,01 cm. Le pivot est la place des acteurs, que l'animation ne bouge pas : tout pas compte, même lent (flèches).
  • N2 : après un obstacle, la caméra est placée devant lui mais jamais à moins de 50 cm de la cible (RecenterMinDistance). Elle ne passe plus de l'autre côté.
  • N3 à N6 laissés en l'état, non bloquants :
    • un recadrage pendant une prise est défait par la caméra figée ;
    • un front de SexC3 hors de la vue Scene est perdu ;
    • la lecture de SexC3 hors sexe coûte peu ;
    • la borne de 900 cm ne joue que hors prise ;
    • le fondu reste à voir à l'essai. | Source/LifePlay/LPCameraModeSubsystem.h | 4AE6599447750371CFF7E0AAC74EB93E, 132 lignes | 00D439937DBCEAB44F459C4A834F34F0, 141 lignes |

Fins de ligne : LF (0 CR).

1. Écritures

  • Constantes :
    • PCSexC3 (SexC3, la variable du PC qui sera ajoutée par MCP) ;
    • recadrage : 300 cm de distance, 120 cm de hauteur, cible à la racine + 60 cm, marge de 20 cm aux murs ;
    • suivi : 900 cm au plus, pas minimal de 0,5 cm.
  • ComputeLabel : pendant le sexe, hors POV, si PC.SexC3 est vrai, l'indicateur affiche « Camera: C3 Couple ». Sans la variable (PC pas encore modifié), ReadBool rend faux et rien ne change.
  • TickCoupleBounds :
    • hors sexe : LastSexView et bSexC3Was sont oubliés, et PC.SexC3 est remis à faux s'il était vrai (scène finie en C3) ;
    • appelle TickSceneCamera dans le chemin de la pièce cachée et en fin de chemin normal, avant la mise à jour de LastCouplePivot.
  • TickSceneCamera (nouveau), seulement si la vue est Room.SceneCamera :
    • G-b : à l'entrée en Scene (la vue de l'image précédente n'était pas SceneCamera), RecenterSceneCamera (« entree en Scene ») ;
    • G-d (C++) : au front montant de PC.SexC3, RecenterSceneCamera (« C3 ») ;
    • G-c : sinon, hors prise et hors image de fin de prise, la caméra se déplace du même vecteur que le pivot depuis l'image précédente (au-delà de 0,5 cm). Puis la distance est ramenée à 900 cm au plus.
  • RecenterSceneCamera (nouveau, G-a) :
    • cible : XY du pivot, Z = racine du maillage la plus basse + 60 cm ;
    • position : azimut actuel de la caméra autour de la cible (sinon derrière le meneur), à 300 cm, 120 cm plus haut ;
    • dans une pièce non cachée : bornée à l'intérieur F1 (marge 20 cm) et entre sol + 30 et plafond − 20 ;
    • tracé Visibility de la cible vers la caméra (couple, SceneCamera, Wall et CamRoom ignorés) : en cas d'obstacle, la caméra est ramenée 20 cm devant lui ;
    • regard sur la cible ;
    • ligne Sexe : vue recadree sur le couple (<raison>) a <d> cm, cible (x, y, z)[, rapprochee devant un obstacle].
  • G3, témoin côté appelant (point 4 de Big Boss), dans le bloc « relâcher » de TickCoupleMouse : quand le meneur a bougé de plus de 1 cm, une ligne par appel, Sexe : G3 NotifyCoupleTeleported appele|non appele, sous-systeme absent (meneur deplace de <d> cm par la prise), puis l'appel. Il n'y a aucun changement de condition.
  • .h : TickSceneCamera, RecenterSceneCamera, LastSexView, bSexC3Was.

2. G3 : lecture de LPShowCoupleSubsystem.cpp (STE, rien écrit)

  • KeepTogether (l. 750-805) se termine à chaque image par LastSafe = Who->GetActorLocation(); (l. 804).
  • NotifyCoupleTeleported (l. 807-824) n'écrit « place reprise » que si Now − LastSafe n'est pas nul.
  • Confirmé : pendant un glisser, KeepTogether passe à chaque image après le déplacement de CAM et remet déjà LastSafe à la place du meneur. Au relâcher, la place est donc déjà reprise : l'appel est sans effet visible. C'est normal, et c'est ce qui s'est passé à COMMUN-11. Le nouveau témoin montrera que l'appel part.
  • Conséquence : G3 ne change le résultat que si KeepTogether a refusé ou ramené un pas du glisser, et que la place sûre est restée en arrière. Le cas du couple coincé (dégagement) se jugera en jeu, avec ce témoin et la ligne « bloque par » de STE.

3. Écarts

  • La partie PC de G-d (variable SexC3 et 2 branches) reste à faire par MCP, sous UE-GO. Le C++ est prêt à la lire.
  • Le recadrage à l'entrée en Scene remplace, à chaque retour depuis le POV, le cadrage d'origine du jeu (pickPreset). C'est voulu (SPEC G-b).

4. Points à confirmer en V7

  • Lignes « vue recadree » à l'entrée en Scene et en C3.
  • Avec les flèches et la molette, la caméra suit le couple.
  • Distance de 900 cm au plus.
  • Ligne « G3 NotifyCoupleTeleported appele » à chaque pose qui déplace le meneur.
  • Compilation.
  • Essais CAM-76 à CAM-80.

5. Fichiers à commiter

A Source/LifePlay/LPCameraModeSubsystem.cpp et .h ; A CAM-B2p-G-SPEC.md, CAM-B2p-G-IMPL.md, CAM-B2p-G-VAL.md.