7 KiB
CAM-B2p-R : vue de scène = SceneCamera pendant le sexe (P1) et flèches = couple sans Maj (P2) (Room, fiche lp-mcp-bp, 2026-10-14)
SPEC : CAM-B2p-SPEC.md, P1 et P2. GO de l'utilisateur sur B2p (« go », 2026-10-14) ; option A : on revient sur Q8
pendant le sexe. Room seul. Aucune écriture sans UE-GO de Big Boss. Va avec B2p-C (C++, CAM-B2p-C-IMPL.md).
Barème
a0 b1 c1 d0 e1 f1 = 4 → N1, ajusté à N3 (MCP) ; S = C3 1 + f 1 = 2, moins de 3 : une fiche. 3 nœuds, 13 liens,
environ 40 appels. Case C9a : état relu le jour même dans CAM-B2s-VAL_LPDumpFunction_20261014-084441.txt (Room
C5AB724101FA898457293D64059D21A9, EventGraph 1276 nœuds).
Conditions d'entrée
- UE-GO ;
UeState= 0 ; aucun jeu en cours ; MD5 de Room =C5AB724101FA898457293D64059D21A9(sinon : relecture et compte rendu). - Instantané au moment de l'UE-GO :
.\Tools\Snapshot.ps1 -Lot CAM-B2p-R -Path Content\BPs\Room.uasset. - unreal-mcp connecté dans la session. S'il ne l'est pas, l'utilisateur fait
/mcp→ Reconnect. - Si l'éditeur demande de recompiler des modules : arrêt et compte rendu.
État attendu avant écriture (préfixe /Game/BPs/Room.Room:EventGraph.)
| Nœud | Attendu |
|---|---|
K2Node_CustomEvent_43 (ApplyRoomCamera) |
then → IfThenElse_77.execute |
K2Node_IfThenElse_77 |
execute ← 43.then ; Condition ← VariableGet_269.CamC1On ; then → 78 ; else → 79 |
K2Node_CustomEvent_45 (UpdateRoomCam) |
OutputDelegate → 329.Delegate ; then → IfThenElse_91.execute |
K2Node_IfThenElse_91 |
execute ← 45.then ; Condition ← PromotableOperator_8 ; then → 92 ; else → 81 |
K2Node_VariableGet_258 |
SexOn, self ← VariableGet_257.GI ; sorties 78 et 81 .Condition |
K2Node_CallFunction_394 |
SetViewTargetWithBlend ; execute ← 79.then ; then → 303 ; NewViewTarget ← GetArrayItem_9 |
K2Node_CallFunction_303 |
RestoreC1 ; execute ← 394.then ; then vide |
K2Node_CallFunction_441 |
K2_ClearAndInvalidateTimerHandle ; execute ← 440.then ; Handle ← VariableGet_274.RoomCamTimer |
K2Node_IfThenElse_14 |
Condition ← VariableGet_62.MoveObject ; then → 27 ; else → 281 |
K2Node_IfThenElse_17 |
Condition ← VariableGet_62.MoveObject ; then → 23 ; else → 45 |
K2Node_VariableGet_62 |
MoveObject ; sorties 12, 14, 17 .Condition |
K2Node_VariableGet_85 |
SexOn, self ← VariableGet_40.GI ; sorties OR_17.B, 24, 27, 23 |
Tout écart : arrêt avant écriture.
Écritures (un appel MCP par message)
-
load_asset/Game/BPs/Room;get_node_infossur les 12 nœuds du tableau. Relever les PinID et les positions. -
Types :
- Branche :
Utilitaires|ContrôleDeFlux|Branche; - OU :
Math|Booléen|ORBoolean.
Contrôle par
get_node_infosaprès création. - Branche :
-
P1 (vue de scène pendant le sexe) :
- créer la Branche S1, près de 43 ;
- L1 :
43.then→S1.execute(remplace 43.then → 77) ; - L2 :
258.SexOn→S1.Condition; - L3 :
S1.then→394.execute(394 garde aussi 79.then) ; - L4 :
S1.else→77.execute;
- L1 :
- créer la Branche S2, près de 45 ;
- L5 :
45.then→S2.execute(remplace 45.then → 91) ; - L6 :
258.SexOn→S2.Condition; - L7 :
S2.then→394.execute; - L8 :
S2.else→91.execute;
- L5 :
- L9 :
303.then→441.execute(441 garde 440.then) : la minuterie s'arrête après la pose de la vue de scène.
- créer la Branche S1, près de 43 ;
-
P2 (flèches = couple sans Maj pendant le sexe) :
- créer l'OU O1, près de 14 ;
- L10 :
62.MoveObject→O1.A; - L11 :
85.SexOn→O1.B; - L12 :
O1.ReturnValue→14.Condition(remplace 62 → 14) ; - L13 :
O1.ReturnValue→17.Condition(remplace 62 → 17) ; - 62 garde sa sortie vers 12 : la molette avec Maj reste inchangée.
-
Relecture :
- 43.then → S1 ; 45.then → S2 ; 45.OutputDelegate → 329 inchangé ;
- 394.execute ← 79.then, S1.then, S2.then ;
- 77.execute ← S1.else ; 91.execute ← S2.else ;
- 258 : sorties 78, 81, S1, S2 ;
- 303.then → 441 ; 441.execute ← 440.then et 303.then ;
- 62 : sorties 12, O1.A ; 85 : sorties OR_17.B, 24, 27, 23, O1.B ;
- 14 et 17 : Condition ← O1 ;
- aucun autre lien de 78, 79, 80, 81, 92, 329, 440, 539 à 542 modifié.
-
is_dirty= vrai ;compile_blueprintavec warnings_as_errors = true ;save_assets[/Game/BPs/Room] seul ;Saving Package: /Game/BPs/Room; MD5 ≠C5AB7241…; GI, PC et Person inchangés.
Effets attendus
- Pendant le sexe :
- à l'entrée (la minuterie tourne en C1 et en C2) et à chaque retour en Scene (PC 353 → 140), la vue est
SceneCamera, et la minuterie s'arrête ; - la souris (B2n), ZQSD (B2p-C) et la molette (zoom d'origine, nœud 125) agissent sur la caméra en vue ;
- les flèches déplacent le couple sans Maj.
- à l'entrée (la minuterie tourne en C1 et en C2) et à chaque retour en Scene (PC 353 → 140), la vue est
- Hors sexe : rien ne change (S1.else et S2.else reprennent les voies actuelles ; O1 vaut
MoveObject). Le mode C3 passe déjà par 394, qui mène maintenant aussi à 441 : il arrête la minuterie tout de suite au lieu du passage suivant (82.else → 440 → 441). Le résultat est le même. - Fin du sexe : le crochet B1-11 (GI 2699 →
ApplyRoomCamera), avecSexOnfaux, rend C1, C2 ou C3 et relance la minuterie.SexOnest déjà faux à ce moment-là : à 05:18:57, au journal COMMUN-6, ce crochet a rendu la voie C1 (78.else), ce qui n'est possible qu'avecSexOnfaux. On le revérifie en V7. Repli si le cas change : un appelApplyRoomCameradifféré côté C++ quandSexOnredevient faux. Ce repli n'est pas écrit.
Exigence confirmée à COMMUN-7 (utilisateur, relayé par Big Boss)
« je veux que ZQSD en mode scène déplace la caméra aussi », quel que soit le mode de départ (C1, C2 ou C3).
- COMMUN-7 : L1 et L2 OK (B2r) ; L5 OK (ZQSD en POV, B2p-C).
- ZQSD en mode Scene (B2p-C) n'agit que si la vue est
Room.SceneCamera. P1 (S1 et S2) l'assure dans les trois cas :- à l'entrée en sexe, la minuterie de C1 ou de C2 passe par S2 → 394 (
SceneCamera), puis s'arrête ; - au départ en C3, la vue est déjà
SceneCamera; - à chaque retour en Scene, le PC (353 → 140) passe par S1 → 394.
- à l'entrée en sexe, la minuterie de C1 ou de C2 passe par S2 → 394 (
- Aucune partie C++ de plus. V7 : CAM-42 depuis C1, C2 et C3, dès l'entrée et après POV → Scene.
Garde Accessed None
ChargenCameras[0] (394) et SexOn (258) sont déjà lus sans garde sur ces voies. Rien de nouveau n'est lu.
VAL (lp-validator distinct, éditeur fermé)
- V5 : dump Room ; diff contre
CAM-B2s-VAL_LPDumpFunction_20261014-084441.txt; EventGraph 1276 → 1279 nœuds ; seules différences : S1, S2, O1 et les liens ci-dessus. - V6 :
CompileAllBlueprints= référence. - V7 : CAM-41 à CAM-49 et CAM-54, CAM-55 de
CAM-B2p-SPEC.md, avec B2p-C compilé.
Retour arrière
.\Tools\Restore.ps1 -Lot CAM-B2p-R -Only Content\BPs\Room.uasset, éditeur fermé, sur accord.
Estimation
Environ 40 min d'éditeur et 15 min de VAL. À passer dans le même jeton que la compilation de B2r et de B2p-C.