LifePlay-Revival/Docs/Migration/etat/CAM/CAM-B2p-E-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-E-IMPL : borne dure du couple pendant le sexe (C++, 2026-10-14)

GO : Big Boss, 2026-10-14 (« GO pour B2p-E (E1 à E4) », plafond borné si c'est facile). DIAG : CAM-COMMUN9-DIAG.md § 4. Écriture sans UE ni compilation ; le lot entre dans COMMUN-10.

Instantané : D:\Game\LifePlay_Backup_5.5\CAM-B2p-E\ (.cpp D6063264…, .h 6585D7F6…, état B2r + B2p-C + B2p-D).

Fichier Avant Après
Source/LifePlay/LPCameraModeSubsystem.cpp D60632646BF1CF7D200E3BEA833D8D72, 1044 lignes FFF0FBB45D493B931B08780BF09547C8, 1163 lignes (après la reprise B1 ; première version 6192495E…)
Source/LifePlay/LPCameraModeSubsystem.h 6585D7F67A7BE3AEA377B8E93CFA14D8, 112 lignes 0EDC1F76B7EEC0D135EA046DA2269BE0, 121 lignes

Fins de ligne : LF (0 CR).

1. Écritures

  • Constantes :
    • tolérance sous le sol : 5 cm (CoupleFloorTolerance) ;
    • plafond estimé à 350 cm au-dessus du sol (CoupleCeilingHeight) ;
    • seuil du témoin : 5 cm par image (CoupleMoveWitness) ;
    • au plus une ligne par seconde (CoupleBoundsLogInterval).
  • TickSwitchKey (à chaque image) appelle TickCoupleBounds après TickSexCamera.
  • TickCoupleBounds (nouveau, E1 et E4) : tant que SexOn est vrai, menus compris.
    • Pivot = moyenne des SexPersons valides.
    • E4 : si le pivot a bougé de plus de 5 cm depuis l'image précédente sans prise B2p-D, une ligne Sexe : couple deplace hors prise de (dx, dy, dz) ; fleches=… Maj=… molette=… ; Room cachee=….
    • Si Room est cachée (IsHidden, scène d'extérieur) ou n'a pas de Box : aucune borne, une ligne par scène Sexe : pas de borne du couple (Room cachee=…, sol …).
    • E1 :
      • pivot XY borné aux limites de Room.Box moins 30 cm (la même marge que B2p-D) ;
      • Z : la racine du maillage (Z du composant Mesh) la plus basse du couple ne descend pas sous le dessus de Box − 5 cm. Sinon, le couple est remonté jusqu'au dessus du sol ;
      • la racine la plus haute ne dépasse pas le dessus de Box + 350 cm (plafond estimé). Sinon, le couple est redescendu ;
      • un seul vecteur de correction pour toutes les SexPersons ; ligne Sexe : couple ramene dans la piece de (dx, dy, dz) ; sol …, plafond estime … ; prise=…, au plus une par seconde.
    • Hors sexe : état oublié, aucune action.
  • E2 (dans TickCoupleMouse, tracé vertical de B2p-D) : au-dessus du sol de Room.Box (Room non cachée), la surface retenue n'est jamais plus basse que le dessus du sol. Sans impact au-dessus du sol, la surface est le dessus du sol.
  • E3 (flèches) : aucun changement de Room ; E1 retient le couple au bord.
  • .h : TickCoupleBounds, LastCouplePivot, bHasLastPivot, bHiddenRoomWarned, CoupleBoundsCooldown, CoupleMoveCooldown.

2. Écarts au DIAG

  • E4 : Room.bHidden, la molette et Maj sont écrits sur la ligne « couple deplace hors prise », et non sur la ligne « Sexe : touches ». C'est la ligne qui sert à désigner la source ; la ligne des touches reste inchangée.

  • Plafond : Room n'expose pas de plafond. On prend une hauteur estimée de 350 cm au-dessus du sol (Maj + molette avait monté le couple à environ 154 cm au-dessus du sol en COMMUN-7). À régler si une pièce est plus haute.

  • La borne s'applique aussi pendant une prise B2p-D, avec la même marge XY : aucun conflit, le glisser est déjà borné.

  • Reprise après la VAL (B1, bloquant) : dans TickCoupleBounds, le local Root masquait le membre TSharedPtr<SWidget> Root (C4458, mis en erreur par /we4458 en BuildSettingsVersion V7). Il est renommé RootZ, sur 3 lignes. Diff et recherche des autres masquages revus par le même validateur.

  • Non déclarés dans la première version, relevés par la VAL :

    • l'appel est placé dans TickSwitchKey, et non à la fin de TickSexCamera. C'est nécessaire, parce que TickSexCamera s'arrête pendant les menus ;
    • la ligne E1 écrit prise= au lieu d'une « source probable ». La source se lit sur la ligne E4.

3. Points à confirmer en VAL et en V7

  • Compilation (COMMUN-10) : AActor::IsHidden, TNumericLimits<double>, FBox(ForceInit).
  • En jeu :
    • Box.Bounds.Max.Z est bien le dessus du sol (LPDebug : −102,2) ;
    • les limites XY de Box couvrent tout le sol de la pièce ;
    • aucune pose légitime n'est remontée à tort.
  • Essais CAM-64 à CAM-68 (CAM-COMMUN9-DIAG.md § 5).

4. Fichiers à commiter

A Source/LifePlay/LPCameraModeSubsystem.cpp et .h ; A CAM-COMMUN9-DIAG.md, CAM-B2p-E-IMPL.md, CAM-B2p-E-VAL.md.