# CAM-B2m : lacet POV à la souris (PC, fiche lp-mcp-bp, 2026-10-14) Origine : `CAM-COMMUN5-DIAG.md` § 3. Défaut d'origine : en POV, le mouvement horizontal de la souris fait pencher l'image au lieu de la tourner. Gel des scènes levé par l'utilisateur pour l'alpha (relayé par Big Boss). PC seul. ## Barème a0 b1 c0 d1 e1 f0 = 3 → N1, ajusté à N3 (écriture MCP par `lp-mcp-bp`) ; S = C3 1 + f 0 = 1 : une fiche. Aucun nœud créé, 1 coupure, 3 liens, environ 12 appels. Case C9a : état du PC relu le jour même. ## Cause (dump PC `CAM-B1-VAL_LPDumpFunction_20261013-085611.txt`, PC `A19510E613F31905437BAB48F38C6154`, inchangé depuis CHG-339) - Horizontal : - `IfThenElse_136` then et else → `K2Node_CallFunction_951` = `FirstPersonSM.K2_AddRelativeRotation(312)` ; - `312` = `MakeRotator(Roll ← CommutativeAssociativeBinaryOperator_108, Pitch 0, Yaw 0)` ; - `108` = `leftright` × −1 (`VariableGet_115`). Un Roll relatif tourne autour de l'axe de visée du composant : l'image penche. - Vertical, qui marche : `IfThenElse_164` → `316` = `FirstPersonSM.K2_AddWorldRotation(314 = MakeRotator(Pitch ← 109))`. - Nœud mort `K2Node_CallFunction_204` = `FirstPersonSM.K2_AddWorldRotation(312)` : execute et then vides, self ← `VariableGet_67.FirstPersonSM`, DeltaRotation ← 312. Il est déjà câblé pour devenir le lacet monde. ## Écritures (préfixe `/Game/BPs/PC.PC:EventGraph.`, un appel MCP par message) 1. `load_asset` `/Game/BPs/PC`. `get_node_infos` sur 136, 951, 204, 312, 108 et 316. Tout écart avec la section « Cause » : arrêt avant écriture. Relever les PinID (312 : Roll, Pitch, Yaw ; 204 : execute). 2. `break_pins` `108.ReturnValue` → `312.Roll`. 3. `connect_pins` `108.ReturnValue` → `312.Yaw`. Le rotateur 312 devient un **lacet** ; il alimente 951 et 204. 4. `connect_pins` `IfThenElse_136.then` → `204.execute`, puis `IfThenElse_136.else` → `204.execute`. Une sortie d'exécution n'a qu'un lien : cela remplace les liens vers 951. 5. Relecture : - 136 then et else → 204 ; - 951 : execute vide (laissé en place, mort ; pas de suppression dans cette fiche) ; - 204 : execute ← 136.then et 136.else, self ← 67, DeltaRotation ← 312 ; - 312 : Yaw ← 108, Roll 0 non relié ; - 316 et 164 inchangés. 6. `AssetTools.is_dirty` `/Game/BPs/PC` = vrai ; `compile_blueprint` avec warnings_as_errors = true ; `save_assets` [`/Game/BPs/PC`] seul ; `Saving Package: /Game/BPs/PC` ; MD5 du PC ≠ `a19510e6…` ; Room, GI et Person inchangés par cette fiche. ## Réserve et contournement - Le sens peut être inversé (−1 de 108, hérité du Roll). Si l'essai montre une rotation à l'envers : `set_pin_value` `108.B` = `1` (fiche courte, même passage UE si possible). - Le tangage (316, `AddWorldRotation` d'un Pitch) tourne autour de l'axe Y du monde, pas autour de l'axe droit de la caméra. Il est juste face à X, faux face à Y. Non traité ici : l'utilisateur ne signale que l'horizontal. À noter pour l'essai. ## VAL (lp-validator distinct) - V5 : `LPDumpFunction -BP=PC -Fn=EventGraph -Pins -Exec`, diff contre le dump de B1-VAL. Seules différences : 312 (Yaw au lieu de Roll), liens d'exécution de 136, 951 et 204. - V6 : `CompileAllBlueprints` = référence. - V7 (COMMUN-6) : voir `CAM-COMMUN-6-TESTS.md`. ## Retour arrière `.\Tools\Restore.ps1 -Lot CAM-B2m -Only Content\BPs\PC.uasset`, éditeur fermé, sur accord.