LifePlay-Revival/Docs/Migration/etat/sandbox/SB2/SB2-IMPL.md
2026-10-07 15:50:06 +02:00

33 lines
2.8 KiB
Markdown

# SB2-IMPL — Bibliothèques, socle et mods (SB2-T2, SB2-T3a/b/c)
- **Fiches** : SB2-T2, SB2-T3a/b/c — **Agent** : A-IMPL-H — **Modèle** : prévu opus (M3) | utilisé opus (session principale)
- **Dépôt** : addon, branche `lot/SB2-bibliotheques` (tag d'entrée `lot-SB2-avant` = `b8fe6b3`)
- **Instantané** : `LifePlay_Backup_5.5\SB2-addon` (39 entrées : sources, descripteurs, nouveaux fichiers marqués absents)
- **Carte** : `SB2-CART.md` (décisions D1 à D7)
## Fichiers
| Fichier | Nature |
|---|---|
| `LPSandboxMod.h` | contexte (`World`, `Player`, `Camera`, `Scene`, `Actors`), `FLPSandboxInput`, crochets `TickInput`, `OnFellOff`, `OnBodyChanged` |
| `LPSandboxScene.h/.cpp` (ex-`LPSandboxRoomBuilder.cpp`, `git mv`) | `ALPSandboxScene` : chambre, éclairage, départs, `ApplyFurnitureCollision`, `HideRoom`/`ShowRoom` |
| `LPSandboxActors.h/.cpp` | `FLPSandboxActors` : capsule Person, `Spawn`, corps, scan Quaternius unique, `PlayClip`, `PlayPairClip`, masquage |
| `LPSandboxCamera.h/.cpp` | `FLPSandboxCamera` : `Bind` (ex-`SetStage`), `ResetView`, accès bras / caméra / contrôleur |
| `LPPairSandbox.h/.cpp` | pion réduit (menu : barre, rangée Corps, emplacement du panneau, aide ; `Tick` = souris, direction, Échap, aiguillage) ; GameMode : scène, personnages, caméra, `MakeContext` ; `ALPPairSandboxStage` supprimée |
| `LPPairSandboxMenu.h` | menu réduit à `Widget`, `BodyRow`, `ModPanel`, `Bodies` |
| `LPSandboxCoupleMod.h/.cpp` (ex-`LPCoupleSim.cpp`, `git mv`) | `ULPSandboxCoupleMod` |
| `LPSandboxInteractionMod.h`, `LPSandboxInteraction.cpp` | `ULPSandboxInteractionMod` |
| `LPSandboxMeasureMod.h`, `LPSandboxMeasure.cpp`, `LPSandboxMeasureTour.cpp` | `ULPSandboxMeasureMod` (substitutions mécaniques § 4 de la carte ; `Activate`/`Deactivate` = ex-`SelectMode`) |
| `LPSandboxModWrappers.cpp` | enveloppe générique `TModWrapper<TMod>` (`TStrongObjectPtr`, outer = scène, panneau mis en cache) |
| `LPSandboxModRegistry.h/.cpp` | `GetOpenMod` ; contexte filtré selon `MODULE_REQUIREMENTS` ; `EndSession` libère les instances |
| `Modules/Mods/lps_asset_integration/*.lpmod` | prérequis + `lps_lib_scene`, `lps_lib_actors` (D2) |
## Écarts à la carte (décisions de l'implémenteur)
1. `OnBodyChanged` du couple ne remet pas `SetOwnerNoSee(true)` quand la vue « yeux » de l'interaction était la
dernière choisie : avant SB2, changer le corps du MC en mode Pair après une vue « yeux » cachait le MC (état de
l'interaction lu par le couple). Le couple ne lit plus l'état d'un autre mod.
2. Fin de partie : le pion ne ferme plus la liste d'actions ni la pastille de l'interaction (elles appartiennent au
mod) ; la fenêtre se ferme avec le jeu.
3. Échap est lu avant l'entrée du mod ouvert (avant SB2 : avant la Mesure, après le couple et l'interaction) ; la
fermeture est différée par le moteur, sans effet visible.