# 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` (`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.