52 lines
3.4 KiB
Markdown
52 lines
3.4 KiB
Markdown
|
|
# 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.
|