61 lines
4.4 KiB
Markdown
61 lines
4.4 KiB
Markdown
# CAM-B2k : recalage de la caméra C1 sur les yeux à chaque passage de la minuterie (fiche lp-mcp-bp, 2026-10-14)
|
|
|
|
Origine : `CAM-COMMUN5-DIAG.md` § 1 (C5-3, caméra C1 dans le buste après une entrée en C1 assise). Room seul, hors
|
|
sexe (la branche C1 de la minuterie est derrière `IfThenElse_81` = `SexOn` faux). Décision de l'utilisateur relayée
|
|
par Big Boss : entre dans COMMUN-6.
|
|
|
|
## Barème
|
|
a0 b1 c0 d0 e1 f1 = 3 → N1, ajusté à N3 (écriture MCP par `lp-mcp-bp`) ; S = C3 1 (procédure `lp-mcp`, gabarits B2h
|
|
et B2i) + f 1 = 2 < 3 : une fiche. 1 nœud, 3 liens, environ 15 appels. Case C9a : état de Room relu le jour même.
|
|
|
|
## Conditions d'entrée
|
|
- UE-GO de Big Boss ; `UeState` = 0 ; aucun jeu en cours.
|
|
- Room = `18565365B1195BF2416A1048BF9051B6`. GI et Person : à ne pas toucher.
|
|
- Instantané au moment de l'UE-GO : `.\Tools\Snapshot.ps1 -Lot CAM-B2k -Path Content\BPs\Room.uasset` (PowerShell,
|
|
depuis la racine).
|
|
- Si l'éditeur demande de recompiler des modules au lancement : arrêt et compte rendu à Big Boss.
|
|
|
|
## État attendu avant écriture (préfixe `/Game/BPs/Room.Room:EventGraph.`, dump `CAM-B2i-VAL_LPDumpFunction_20261013-225125.txt`)
|
|
| Nœud | Attendu |
|
|
|---|---|
|
|
| `K2Node_IfThenElse_83` | execute ← `IfThenElse_82.then` ; Condition ← `PromotableOperator_0` (vue = `PlayerCharacter`) ; **then vide** ; else → `CallFunction_440` (`RestoreC1`) |
|
|
| `K2Node_IfThenElse_82` | Condition ← `VariableGet_269.CamC1On` ; execute ← `IfThenElse_81.else` (81 = `SexOn`, execute ← `IfThenElse_91.else`, 91 = vue = `CamRoom`) |
|
|
| `K2Node_VariableGet_265` | variable `FirstPersonSM`, self ← `VariableGet_261.PlayerCharacter` ; sortie → 430, 431, 433, 446 `.self` |
|
|
| `K2Node_PromotableOperator_2` | `Multiply_VectorVector`, A ← `PromotableOperator_1` (= `GetSocketLocation(lEye)` + `GetSocketLocation(rEye)`, nœuds 447 et 448), B = 0,5 ; sortie → `CallFunction_446.NewLocation` |
|
|
| Minuterie en C1 (relecture de l'étape 1) | voie C1 d'`ApplyRoomCamera` : `VariableSet_53` (`C1Hidden`) → `CallFunction_449` (`DelayUntilNextFrame`) → `434` (`SetViewTargetWithBlend(PlayerCharacter)`) → **`329` `K2_SetTimerDelegate(UpdateRoomCam, 0,016, en boucle)`** → `VariableSet_54` (`RoomCamTimer`) |
|
|
Tout écart à ce tableau : arrêt avant écriture.
|
|
|
|
## Écritures (un appel MCP par message)
|
|
1. `load_asset` `/Game/BPs/Room` ; lecture groupée des nœuds du tableau (`get_node_infos`), avec `CallFunction_329`,
|
|
`_434`, `_449` et `_446`. Relever les PinID et les positions de 83 et 446.
|
|
2. Type : le même que `K2Node_CallFunction_446` (`SceneComponent::K2_SetWorldLocation`). Prendre son `type_id` par
|
|
`get_node_infos` et `find_node_types` (filtre « SetWorldLocation »), avec `context_pins` sur `265.FirstPersonSM` si
|
|
besoin. Le nœud créé doit être `K2_SetWorldLocation` (`SceneComponent`), avec `bSweep` et `bTeleport` faux par
|
|
défaut. Sinon, arrêt.
|
|
3. `create_node` près de 83 (à droite de sa branche `then`).
|
|
4. Liens :
|
|
- L1 : `IfThenElse_83.then` → nouveau.execute ;
|
|
- L2 : `VariableGet_265.FirstPersonSM` → nouveau.self ;
|
|
- L3 : `PromotableOperator_2.ReturnValue` → nouveau.NewLocation. La sortie de PO_2 alimente alors 446 et le
|
|
nouveau nœud ; ce nœud pur est réévalué à chaque appel.
|
|
5. Relecture :
|
|
- 83 : then → nouveau, else → 440 inchangé ;
|
|
- 265 : sorties 430, 431, 433, 446 et le nouveau ;
|
|
- PO_2 : sorties 446 et le nouveau ;
|
|
- 446 inchangé (execute ← 431.then, then → 433) ;
|
|
- le nouveau nœud a un `then` libre ;
|
|
- aucun autre lien de 81, 82, 91, 440 ou 441 modifié.
|
|
6. `AssetTools.is_dirty` `/Game/BPs/Room` = vrai (sinon procédure B2f-a).
|
|
7. `compile_blueprint` avec warnings_as_errors = true.
|
|
8. `save_assets` [`/Game/BPs/Room`] seul ; `Saving Package: /Game/BPs/Room` au journal de l'éditeur.
|
|
9. `md5sum` : Room ≠ `18565365…` ; GI et Person inchangés.
|
|
|
|
## VAL (lp-validator distinct, éditeur fermé)
|
|
- V5 : dump Room ; diff du corps contre `CAM-B2i-VAL_LPDumpFunction_20261013-225125.txt`. Attendu : EventGraph à 1265
|
|
nœuds ; seules différences : le nœud nouveau et les sorties de 83.then, 265 et PO_2.
|
|
- V6 : `CompileAllBlueprints` = référence.
|
|
- V7 (COMMUN-6) : s'asseoir, passer en C1, se lever (ZQSD), marcher, se rasseoir, changer de pièce. La vue reste à la
|
|
hauteur des yeux, jamais dans le buste ni au-dessus de la tête. En C2 et pendant le sexe, rien ne change.
|
|
|
|
## Retour arrière
|
|
`.\Tools\Restore.ps1 -Lot CAM-B2k -Only Content\BPs\Room.uasset`, éditeur fermé, sur accord.
|