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\, Room3A451FDDF991AC01A699AF7BD1FBDC12). À 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)
-
load_asset/Game/BPs/Room;get_node_infossur les 6 nœuds du tableau. Relever les PinID et les positions. -
Types :
K2_SetWorldRotation(SceneComponent, filtre « SetWorldRotation », voisin deTransformation|SetWorldLocation) etMakeRotator(filtre « MakeRotator » ; Room en a déjà un : 148). Contrôle parget_node_infosaprès création ; sinon, arrêt. -
P5 (orientation à chaque passage de la minuterie C1) :
- créer
MakeRotatorR1 etK2_SetWorldRotationW1, à 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 :
bSweepetbTeleportfaux (défaut).
- créer
-
P6 (pose avant le retour de la vue, supprime l'à-coup) :
- créer
K2_SetWorldLocationL6 etK2_SetWorldRotationW6, 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 depuis80.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.
- créer
-
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é.
-
AssetTools.is_dirty= vrai (sinon procédure B2f-a) ;compile_blueprintavec 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'
ApplyRoomCameraseulement). - 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 erreursCR_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
Birdviewpeut rester, elle vient de GI).
- CAM-49 (
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.