LifePlay-Revival/Docs/Migration/etat/CAM/CAM-B2p-G-PC-FICHE.md
edujiro5972 8084622450 LifePlay UE 5.8 : état de développement au 2026-10-19
Tickets : REP1-T4

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 22:57:42 +02:00

87 lines
5.4 KiB
Markdown

# CAM-B2p-G-PC : C3 dans le cycle C du sexe (G-d) et panneau des positions (G-g) (PC, fiche lp-mcp-bp, 2026-10-14)
SPEC : `CAM-B2p-G-SPEC.md` § 2 (G-d, option 1) et § 5.4 (G-g). UE-GO de Big Boss (PC pour G-d, et G-g si la DIAG le
demande : elle le demande). PC seul ; ni Room, ni GI, ni Person. **Un seul appel MCP à la fois. Type vérifié avant
chaque `create_node`.**
## Barème
a0 b1 c1 d0 e1 f1 = 4 → N3 (MCP) ; S = C3 1 + f 1 = 2 : une fiche. Environ 6 nœuds, 1 variable, 2 coupures,
14 liens, environ 50 appels. Case C9a : état du PC relu dans `CAM-B2kmn-VAL_LPDumpFunction_20261014-011816.txt` (PC
`F45BE57A39D13D3EB19D0B543153AB0B`, 1439 nœuds) ; à relire par `get_node_infos` avant écriture.
## Conditions d'entrée
- `UeState` = 0 ; PC = `F45BE57A39D13D3EB19D0B543153AB0B` (sinon : arrêt et compte rendu).
- Instantané pris par l'orchestrateur : `.\Tools\Snapshot.ps1 -Lot CAM-B2p-G-PC -Path Content\BPs\PC.uasset`.
- unreal-mcp connecté ; éditeur sans demande de recompilation.
## État attendu avant écriture (préfixe `/Game/BPs/PC.PC:EventGraph.`)
| Nœud | Attendu |
|---|---|
| `K2Node_IfThenElse_23` | Condition ← `VariableGet_51.SexOn` ; then → `IfThenElse_44.execute` ; else → `IfThenElse_131` |
| `K2Node_IfThenElse_44` | execute ← `23.then` et `CustomEvent_5.then` ; Condition ← `CallFunction_139` ; then → `VariableSet_25` (`POVOn` vrai) ; else → `VariableSet_30` (`POVOn` faux) |
| `K2Node_IfThenElse_123` | Condition ← `VariableGet_233.SexOn` ; then → `CallFunction_35` (`LeftMouseSexOn`) ; else → `IfThenElse_0` |
| `K2Node_IfThenElse_15` | Condition ← `VariableGet_22.SexOn` ; then → `IfThenElse_10` ; else → `CallFunction_160` |
| `K2Node_CustomEvent_11` | événement `LeftMouseSexOn` ; then → `IfThenElse_10` |
| `K2Node_InputAction_3` | action **`Pause`** (à confirmer par `get_node_infos` : nom de l'action) ; Pressed → `IfThenElse_63` |
| `K2Node_IfThenElse_40` | execute ← `63.else` ; then → `CallFunction_277` (`PlayClick`) |
| `K2Node_CallFunction_277` | then → `VariableSet_0` (`GamePaused` = NOT `GamePaused`) |
Si `InputAction_3` n'est pas `Pause` (barre espace), ou pour tout autre écart : arrêt avant écriture de G-g.
G-d peut se faire seul.
## Écritures
### G-d : `SexC3`
1. Variable de membre `SexC3` (booléen, défaut faux) dans le PC (outil d'ajout de variable de BlueprintTools, comme
pour `CamC1On` en B1). Relecture.
2. Nœuds :
- Branche A, Condition ← nouveau Get `SexC3` ;
- Set `SexC3` = faux (S0) ;
- Branche B, Condition ← nouveau Get `POVOn` (variable du PC) ;
- Set `SexC3` = vrai (S1).
3. Liens :
- `23.then` → `A.execute` (remplace 23.then → 44) ;
- `A.then` → `S0.execute` ; `S0.then` → `44.execute` ;
- `A.else` → `B.execute` ;
- `B.then` → `44.execute` ;
- `B.else` → `S1.execute` ; `S1.then` vide.
`44.execute` garde aussi `CustomEvent_5.then`.
4. Effet : Scene (`POVOn` faux, `SexC3` faux) → C → C3 (`SexC3` vrai, vue inchangée) → C → `SexC3` faux, puis POV 1
→ … → dernier POV → C → Scene (voie d'origine de 44.else).
### G-g : panneau des positions
5. `break_pins` `123.then` → `35.execute` (le clic court gauche ne bascule plus le panneau pendant le sexe).
6. `break_pins` `15.then` → `10.execute` (même chose pour l'autre bouton).
7. Branche S (Condition ← nouveau Get `SexOn` sur `GI` du PC, ou reprise d'un getter existant de `GI.SexOn`) entre
`40.then` et `277` :
- `40.then` → `S.execute` (remplace 40.then → 277) ;
- `S.else` → `277.execute` ;
- `S.then` → nouvel appel `LeftMouseSexOn` (événement personnalisé du PC, cible self) ; then vide.
8. Effet : pendant le sexe, Espace bascule le panneau au lieu de mettre en pause. Le clic molette est fait par le C++
(B2p-G). Hors sexe, rien ne change.
### Fin
9. Relecture de tous les nœuds touchés et de leurs voisins (23, 44, CustomEvent_5, 123, 15, 10, 35, 40, 277, 63, et
les nœuds créés). Aucun autre lien modifié.
10. `is_dirty` = vrai ; `compile_blueprint` avec warnings_as_errors = true ; `save_assets` [`/Game/BPs/PC`] seul ;
`Saving Package: /Game/BPs/PC` ; MD5 du PC ≠ `F45BE57A…` ; Room, GI et Person inchangés.
## Amendement B2p-G-PC-a (2026-10-14, arrêt de `lp-mcp-bp` à l'étape 7, décision de l'orchestrateur)
- Refus : `create_node "Variables|Sex|ObtenirSexOn"` → `does not exist`. Ce type n'apparaît que sous contexte (la
sortie d'un Get GI), et `create_node` passe un contexte vide (`blueprint.py:912`).
- **Option A retenue**, déjà prévue au § 7 (« reprise d'un getter existant de `GI.SexOn` ») :
- `VariableGet_22.SexOn` (déjà relié à `IfThenElse_15.Condition`) → `IfThenElse_134.Condition` (une sortie de
données peut alimenter plusieurs entrées) ;
- `delete_node` du Get GI orphelin `VariableGet_387` ;
- puis les 3 liens d'exécution : `40.then` → `134.execute` (remplace 40 → 277), `134.else` → `277.execute`,
`134.then` → `CallFunction_408.execute` (`LeftMouseSexOn`) ;
- puis les étapes 9 et 10.
- Volume : 1 nœud créé de moins, 1 suppression. Le reste de la fiche ne change pas.
## VAL (lp-validator distinct, éditeur fermé)
- V5 : dump du PC ; diff contre `CAM-B2kmn-VAL_LPDumpFunction_20261014-011816.txt` ; seules différences : la
variable, les nœuds créés, les 2 coupures et les liens ci-dessus.
- V6 : `CompileAllBlueprints` = référence.
## Retour arrière
`.\Tools\Restore.ps1 -Lot CAM-B2p-G-PC -Only Content\BPs\PC.uasset`, éditeur fermé.