LifePlay-Revival/Docs/Migration/etat/CAM/CAM-B2s-FICHE.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.9 KiB

CAM-B2s : orientation de C1 recalée à chaque passage, et pose avant le retour de la vue (Room, fiche lp-mcp-bp, 2026-10-14)

Origine : CAM-COMMUN6-DIAG.md § 9 (priorité 2 : C1 à côté de la tête après un lever, à-coup à la sortie de CharGen, § 10.3) et § 7 (priorité 3 : vue au plafond après une scène). Ce lot reprend les parties P5 et P6 de CAM-B2p-SPEC.md, sorties de B2p pour passer tout de suite. Room seul. Aucune écriture sans UE-GO.

Barème

a0 b1 c0 d0 e1 f1 = 3 → N1, ajusté à N3 (MCP, lp-mcp-bp) ; S = C3 1 (procédure lp-mcp, gabarit B2k) + f 0 = 1 : une fiche. 4 nœuds, 11 liens, environ 35 appels. Case C9a : état de Room relu le jour même (dump CAM-B2kmn-VAL_LPDumpFunction_20261014-011706.txt, Room 3A451FDDF991AC01A699AF7BD1FBDC12).

Conditions d'entrée

  • UE-GO de Big Boss ; UeState = 0 ; aucun jeu en cours.
  • Room = 3A451FDDF991AC01A699AF7BD1FBDC12 ; GI, PC et Person non touchés.
  • Instantané : pris le 2026-10-14 (D:\Game\LifePlay_Backup_5.5\CAM-B2s\, Room 3A451FDDF991AC01A699AF7BD1FBDC12). À l'UE-GO, revérifier que le MD5 de Room est toujours celui-là ; sinon, reprendre l'instantané.
  • Si l'éditeur demande de recompiler des modules au lancement : arrêt et compte rendu.

État attendu avant écriture (préfixe /Game/BPs/Room.Room:EventGraph.)

Nœud Attendu
K2Node_CallFunction_512 K2_SetWorldLocation ; execute ← IfThenElse_83.then ; then vide ; self ← VariableGet_265.FirstPersonSM ; NewLocation ← PromotableOperator_2
K2Node_CallFunction_514 BreakRotator, InRot ← CallFunction_524 (GetControlRotation, self ← VariableGet_262.PC) ; Yaw → PromotableOperator_28.A, _30.A
K2Node_VariableGet_265 FirstPersonSM, self ← VariableGet_261.PlayerCharacter ; sorties 430, 431, 433, 446, 512 .self
K2Node_CallFunction_449 DelayUntilNextFrame ; execute ← VariableSet_53.then ; then → CallFunction_434.execute
K2Node_CallFunction_434 SetViewTargetWithBlend(PlayerCharacter) ; execute ← 449.then et IfThenElse_80.then ; then → 329
K2Node_PromotableOperator_2 sorties 446.NewLocation, 512.NewLocation

Tout écart : arrêt avant écriture.

Écritures (un appel MCP par message)

  1. load_asset /Game/BPs/Room ; get_node_infos sur les 6 nœuds du tableau. Relever les PinID et les positions.

  2. Types : K2_SetWorldRotation (SceneComponent, filtre « SetWorldRotation », voisin de Transformation|SetWorldLocation) et MakeRotator (filtre « MakeRotator » ; Room en a déjà un : 148). Contrôle par get_node_infos après création ; sinon, arrêt.

  3. P5 (orientation à chaque passage de la minuterie C1) :

    • créer MakeRotator R1 et K2_SetWorldRotation W1, à droite de 512 ;
    • L1 : 512.then → W1.execute ;
    • L2 : 265.FirstPersonSM → W1.self ;
    • L3 : R1.ReturnValue → W1.NewRotation ;
    • L4 : 514.Yaw → R1.Yaw ;
    • R1 : Pitch et Roll à 0 (défaut). W1 : bSweep et bTeleport faux (défaut).
  4. P6 (pose avant le retour de la vue, supprime l'à-coup) :

    • créer K2_SetWorldLocation L6 et K2_SetWorldRotation W6, entre 449 et 434 ;
    • L5 : 449.then → L6.execute (remplace le lien vers 434) ;
    • L6 : L6.then → W6.execute ;
    • L7 : W6.then → 434.execute. 434 garde aussi son entrée depuis 80.then ;
    • L8 : 265.FirstPersonSM → L6.self ; L9 : PO_2.ReturnValue → L6.NewLocation ;
    • L10 : 265.FirstPersonSM → W6.self ; L11 : R1.ReturnValue → W6.NewRotation.

    R1 est pur : il est réévalué à chaque appel.

  5. Relecture :

    • 512 : then → W1 ;
    • 265 : sorties 430, 431, 433, 446, 512, W1, L6, W6 ;
    • 514.Yaw : PO_28, PO_30, R1 ;
    • PO_2 : 446, 512, L6 ;
    • 449 : then → L6 ; 434 : execute ← W6.then et 80.then ;
    • aucun autre lien de 80, 81, 82, 83, 329, 440 ou 441 modifié.
  6. AssetTools.is_dirty = vrai (sinon procédure B2f-a) ; compile_blueprint avec warnings_as_errors = true ; save_assets [/Game/BPs/Room] seul ; Saving Package: /Game/BPs/Room ; MD5 ≠ 3A451FDD… ; GI, PC et Person inchangés.

P6 est séparable : si Big Boss ne le veut pas, ne faire que les étapes 1, 2, 3, 5 (partie P5) et 6. Cela fait 2 nœuds et 4 liens.

Effets attendus

  • C1 a toujours une vue horizontale, dans la direction de contrôle, quelle que soit la pose de la tête : fin de scène, assis, couché, lever, sortie de CharGen.
  • Assis, la souris tourne aussi la vue : le lacet de contrôle est réglé par B2h, et le corps assis ne tourne pas.
  • Hors C1 et pendant le sexe : rien ne change (81, 82, 83, et voie C1 d'ApplyRoomCamera seulement).
  • Limite : pas de tangage à la souris en C1 (vue toujours horizontale). C'est une demande à part si l'utilisateur la veut.

Garde Accessed None

FirstPersonSM (265) et GetControlRotation (524) sont déjà lus sans garde par 512 et la voie C2 sur ces mêmes chemins : comportement inchangé.

VAL (lp-validator distinct, éditeur fermé)

  • V5 : dump Room ; diff contre CAM-B2kmn-VAL_LPDumpFunction_20261014-011706.txt. Attendu : EventGraph 1272 → 1276 nœuds (1274 sans P6) ; seules différences : les nœuds créés et les liens ci-dessus.
  • V6 : CompileAllBlueprints = référence (3 erreurs CR_FaceExpRig, 420 compilations réussies).
  • V7 (build suivant) :
    • CAM-49 (CAM-B2p-SPEC.md) ;
    • au bar : s'asseoir, C1, se lever, marcher. Vue aux yeux, horizontale, sans épaule visible ;
    • après une scène lancée depuis C1 : vue horizontale ;
    • sortie de CharGen en C1 : pas d'à-coup de pose (une image de Birdview peut rester, elle vient de GI).

Retour arrière

.\Tools\Restore.ps1 -Lot CAM-B2s -Only Content\BPs\Room.uasset, éditeur fermé, sur accord.

Estimation

Fiche prête. Passage UE : environ 35 min d'éditeur (lp-mcp-bp), puis VAL V5 et V6 environ 15 min. Correctif simple : il peut passer avant ORG4. Il peut partager le même jeton que B2r : compilation C++ d'abord, puis éditeur.