SB2 : bibliotheques scene et personnages, etat des modes sorti vers les mods (carte, implementation, reference, validation ; pin fece7e9)
Phase SB2 (CHG-230). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
316592551b
commit
f5a1e2f9b8
8 changed files with 790 additions and 252 deletions
|
|
@ -117,12 +117,12 @@ D:\Game\
|
|||
|
||||
- **Liaison** : `LifePlay.uproject` déclare `"AdditionalPluginDirectories": ["../LifePlay-Sandbox/Plugins"]` (chemin relatif au `.uproject`) et active `LPSandbox` dans `Plugins`. UBT et l'éditeur y trouvent `LPSandbox.uplugin` (modules `LPSandbox` et `LPAnimMeasure`) ; les DLL du plugin sont compilées avec le jeu (`Build.bat LifePlayEditor Win64 Development`).
|
||||
- **Pourquoi pas un submodule** : l'addon est un `uproject` mince qui contient le plugin sous `Plugins/LPSandbox/`. Un submodule monté sur `Plugins/LPSandbox` du jeu donnerait `Plugins/LPSandbox/Plugins/LPSandbox/` (plugin imbriqué, non scanné au bon niveau) ; un submodule `External/LifePlay-Sandbox` dupliquerait l'addon à côté du sibling et rendrait ambigu l'exemplaire chargé. Un clone sibling évite les deux problèmes.
|
||||
- **Pin** : le jeu consomme un commit précis de l'addon, consigné à la main dans `S3-INT.md` (aujourd'hui `82dae58380b76c45f60541fd7cb5a0a409700e10`, `lot/SB1-registre`, SB1 registre de mods et barre latérale ; précédents : `3b21fd180c04f0fa49a1b5c9ef1b517ade1cb362` SB0 conception de la sandbox modulaire, `f09c42e5a2bc613cf269cce76c878461ca41c8b7` S7-T2 uplugin, `c1fdd29e2c1036c7d6365ba6389eff5d2f8c8c96` S5-T2 `LPCoupleSim`, `f8102647ccdebad37e4977ccbf2c51e583823a80`, S4-T3). Le pin est mis à jour (hash dans `S3-INT.md` et README de l'addon) à chaque évolution de l'addon que le jeu doit prendre. Reproduire :
|
||||
- **Pin** : le jeu consomme un commit précis de l'addon, consigné à la main dans `S3-INT.md` (aujourd'hui `fece7e9a0e63b3058b5d24d96d669a3c9c0e9add`, `lot/SB2-bibliotheques`, SB2 bibliothèques de scène et de personnages, caméra du socle, état des modes sorti vers les mods ; précédents : `82dae58380b76c45f60541fd7cb5a0a409700e10` SB1 registre de mods et barre latérale, `3b21fd180c04f0fa49a1b5c9ef1b517ade1cb362` SB0 conception de la sandbox modulaire, `f09c42e5a2bc613cf269cce76c878461ca41c8b7` S7-T2 uplugin, `c1fdd29e2c1036c7d6365ba6389eff5d2f8c8c96` S5-T2 `LPCoupleSim`, `f8102647ccdebad37e4977ccbf2c51e583823a80`, S4-T3). Le pin est mis à jour (hash dans `S3-INT.md` et README de l'addon) à chaque évolution de l'addon que le jeu doit prendre. Reproduire :
|
||||
|
||||
```powershell
|
||||
cd D:\Game
|
||||
git clone https://github.com/edujiro5972/LifePlay-Sandbox.git
|
||||
git -C LifePlay-Sandbox checkout 82dae58380b76c45f60541fd7cb5a0a409700e10
|
||||
git -C LifePlay-Sandbox checkout fece7e9a0e63b3058b5d24d96d669a3c9c0e9add
|
||||
# le jeu doit être cloné à côté : D:\Game\LifePlay-master 5.5
|
||||
```
|
||||
|
||||
|
|
@ -172,7 +172,9 @@ Le lot S5 ferme la **dérive de fork** entre la sandbox (`LPSandbox/LPCoupleSim.
|
|||
- [ ] Migration commitée **côté jeu** (`LifePlay.uproject`, `Config/LPSandbox.ini`, `Build.cs`, `LPShowCoupleSubsystem.*`, docs `21` / `22`, `etat/sandbox/`) : **non fait** (`22` § 6).
|
||||
- [x] **SB0** : conception de la sandbox modulaire (addon, pin `3b21fd1`, tag `lot-SB0-valide`).
|
||||
- [x] **SB1** : registre de mods, barre latérale, 7 descripteurs `.lpmod`, modes Pair / Interaction / Mesure enveloppés en `lps_couple` / `lps_interaction` / `lps_asset_integration` (`etat/sandbox/SB1/SB1-VAL.md` PASS, contrôle visuel utilisateur 2026-10-07 ; tag `lot-SB1-valide`).
|
||||
- [ ] Reports SB1 (registre unique, lot propriétaire **SB2**) : chaque ouverture de mod réécrit `Open` dans `Saved/sandbox_mods.ini` (une tournée automatique laisse donc `Open=lps_asset_integration`) ; images de la tournée Mesure : empreintes différentes d'une exécution à l'autre (JSON et CSV identiques), la non-régression stricte de SB2-T5 doit comparer les JSON/CSV, et les images visuellement ou par écart de pixels.
|
||||
- [x] **SB2** : bibliothèques `lps_lib_scene` / `lps_lib_actors`, caméra du socle, état des modes sorti vers les mods `lps_couple` / `lps_interaction` / `lps_asset_integration` (`etat/sandbox/SB2/SB2-VAL.md` PASS, contrôle visuel utilisateur 2026-10-07 ; tag `lot-SB2-valide`).
|
||||
- [ ] Reports SB1 (registre unique, lot propriétaire **SB2**) : (traité) images de la tournée Mesure non déterministes : SB2-T5 compare les JSON/CSV (identiques) et les images visuellement ; (ouvert, nouveau propriétaire **SB4**) « Open réécrit » : chaque ouverture de mod réécrit `Open` dans `Saved/sandbox_mods.ini` (une tournée automatique laisse donc `Open=lps_asset_integration`).
|
||||
- [ ] Reports SB2 : (O1) sortie de Mesure : meubles et murs restent invisibles (`ALPSandboxScene::ShowRoom` ne lève pas `SetHiddenInGame`), confirmé par l'utilisateur (2026-10-07), correction proposée en lot dédié (propriétaire : SB2-O1, à décider) ; (E3) sans `lps_lib_scene`, la pièce est construite quand même (séparation physique : porte G-SB3).
|
||||
## Lots (S0 … S8)
|
||||
|
||||
| Lot | Objet (une ligne) |
|
||||
|
|
|
|||
|
|
@ -1131,6 +1131,7 @@ Validation L7c/L7d (2026-10-02, parc, même cadrage) : la nuit reste claire (sol
|
|||
| CHG-155 | 2026-10-05 | ShowCouple | Un lit est reconnu par son nom. Il ne bloque un déplacement que vers le bas, pour se poser ; le retour horizontal n'est plus arrêté et le contact ne renvoie plus la boîte | après avoir quitté le lit, la boîte ne pouvait plus y revenir | revenir au test `DoesPackageExist` et au filtre du flanc seul |
|
||||
| CHG-156 | 2026-10-05 | Clavier | `LPKeyboardSubsystem` : bouton « Clavier » ajouté à l'exécution dans `MainMenu.SettingsScrollBox` ; panneau pour changer, ajouter ou retirer une touche (actions et axes clavier). Écrit dans `Saved/Config/Windows`, pas dans `GameSettings.sav` | pouvoir réaffecter les touches, dont Q, sans modifier les Blueprints | retirer `LPKeyboardSubsystem.h/.cpp` et la dépendance `UMG` |
|
||||
| CHG-158 | 2026-10-05 | Réglages | `LPSettingsSubsystem` : onglets Audio, Video, Lewd, General, Keyboard, Misc au-dessus de `SettingsScrollBox`. Les lignes du Blueprint restent en place et sont montrées selon leur texte ; le reste va dans Misc. Keyboard affiche la liste des touches | la liste unique ne montrait pas le clavier | retirer `LPSettingsSubsystem.h/.cpp` |
|
||||
| CHG-230 | 2026-10-07 | SB2 | addon `D:\Game\LifePlay-Sandbox` : `Plugins/LPSandbox/Source/LPSandbox/*` (nouveaux `LPSandboxScene.h/.cpp` ex-`LPSandboxRoomBuilder.cpp`, `LPSandboxActors.h/.cpp`, `LPSandboxCamera.h/.cpp`, `LPSandboxCoupleMod.h/.cpp` ex-`LPCoupleSim.cpp`, `LPSandboxInteractionMod.h`, `LPSandboxMeasureMod.h` ; registre, enveloppes, `LPPairSandbox*`, `LPSandboxInteraction/Measure/MeasureTour` adaptés), `Plugins/LPSandbox/Modules/Mods/lps_asset_integration/lps_asset_integration.lpmod`, `README.md` (commits `fece7e9a0e63b3058b5d24d96d669a3c9c0e9add` code + `b4ca206` pin, tag `lot-SB2-valide`, branche `lot/SB2-bibliotheques`) ; jeu : `Docs/Migration/etat/sandbox/SB2/SB2-VAL.md`, `Docs/Migration/etat/sandbox/S3/S3-INT.md`, `Docs/Migration/21_Sandbox_Addon.md` (pin, SB2, reports) | lot SB2 : scène (pièce, meubles), personnages et caméra extraits du socle en bibliothèques `lps_lib_scene` / `lps_lib_actors` et caméra du socle ; état de chaque mode sorti vers trois mods UObject (`lps_couple`, `lps_interaction`, `lps_asset_integration`) ; contexte filtré par prérequis ; décisions D1 à D7 (voir `etat/sandbox/SB2/SB2-CART.md`) ; validation E1 à E5 PASS + contrôle visuel utilisateur (« tout est conforme » : 3 mods, enchaînement, scène neutre D3, panneau sous MC/PNJ D5, images freeanims) ; O1 (murs et meubles invisibles au retour de Mesure) confirmé par l'utilisateur, préexistant, non corrigé (hors périmètre) | pin `82dae58` → `fece7e9` (hash complet `fece7e9a0e63b3058b5d24d96d669a3c9c0e9add`) | `.\Tools\Restore.ps1 -Lot SB2` (docs du jeu), `.\Tools\Restore.ps1 -Lot SB2-addon -ProjectRoot D:\Game\LifePlay-Sandbox` et `git -C D:\Game\LifePlay-Sandbox checkout lot-SB2-avant` ; rien n'est commité dans le dépôt du jeu ni poussé |
|
||||
| CHG-229 | 2026-10-07 | SB1 | addon `D:\Game\LifePlay-Sandbox` : `Plugins/LPSandbox/Source/LPSandbox/*` (registre `FLPSandboxModRegistry`, journal `LogLPSandboxMods`, `Saved/sandbox_mods.ini`, barre latérale, enveloppes), `Plugins/LPSandbox/Modules/` (7 descripteurs `.lpmod`), `README.md` (commits `82dae58380b76c45f60541fd7cb5a0a409700e10` code + commit pin, tag `lot-SB1-valide`, branche `lot/SB1-registre`) ; jeu : `Docs/Migration/etat/sandbox/SB1/SB1-VAL.md`, `Docs/Migration/etat/sandbox/S3/S3-INT.md`, `Docs/Migration/21_Sandbox_Addon.md` (pin, SB1, reports) | lot SB1 : registre de mods, barre latérale, 7 descripteurs ; modes Pair / Interaction / Mesure enveloppés en `lps_couple` / `lps_interaction` / `lps_asset_integration` ; validation E1 à E5 PASS + contrôle visuel utilisateur (a, b, c, barre latérale, images E5 : pas de défauts constatés) | pin `3b21fd1` → `82dae58` (hash complet `82dae58380b76c45f60541fd7cb5a0a409700e10`) | `.\Tools\Restore.ps1 -Lot SB1` (docs du jeu), `.\Tools\Restore.ps1 -Lot SB1-addon -ProjectRoot D:\Game\LifePlay-Sandbox` et `git -C D:\Game\LifePlay-Sandbox checkout lot-SB1-avant` ; rien n'est commité dans le dépôt du jeu ni poussé |
|
||||
| CHG-228 | 2026-10-07 | SB0 | addon `D:\Game\LifePlay-Sandbox` : `Docs/SB0-conception.md`, `Docs/SB-plan.md`, `README.md` (commits C1 `3b21fd1`, C2 `12d6198`, tags `lot-SB0-avant` / `lot-SB0-valide`, branche `lot/SB0-conception`) ; jeu : `Docs/Migration/etat/sandbox/S3/S3-INT.md`, `Docs/Migration/21_Sandbox_Addon.md` (pin) | conception de la sandbox modulaire demandée par l'utilisateur (modes Pair/Interaction/Mesure → mods `lps_couple` / `lps_interaction` / `lps_asset_integration`, modules système et bibliothèques `lps_*`, `.lpmod` étendu rétrocompatible, interface `ILPSandboxMod`, registre, barre latérale ; plan SB0–SB4 au format du cahier S0–S8) | pin `a3b1b89` → `3b21fd1` (hash complet `3b21fd180c04f0fa49a1b5c9ef1b517ade1cb362`) | `.\Tools\Restore.ps1 -Lot SB0` (jeu) et `.\Tools\Restore.ps1 -Lot SB0-addon -ProjectRoot D:\Game\LifePlay-Sandbox` ; commits addon conservés dans l'historique (branche) ; rien n'est commité dans le dépôt du jeu ni poussé |
|
||||
| CHG-227 | 2026-10-07 | DOC-MOD-3 | `Docs/Migration/23_Cycle_De_Vie_Mod.md` (§ 2.6 nouveau, 7 schémas Mermaid) | schémas du cycle de vie d'un module demandés par l'utilisateur : états (installé, monté, listé, inscrit, actif / inactif, retiré, déchargé), séquence de démarrage (moteur, registre, `GI`, sous-systèmes C++), arbres logiques de `GI.LoadSettings(LoadLastSave)`, `GI.PopulateRaws()`, du gestionnaire (`CreateModManagerWidget(GameStart)`, `ToggleMod(Mod, IsEnabled)`, `SortLoadOrder(ForUp, ModuleIndex)`, `CloseModManager(GameStart)`), appel d'une animation de mod, désactivation et déchargement ; graphes reconstitués depuis le relevé `LPDumpFunction -BP=GI -Fn=EventGraph -Pins -Exec` et l'ordre d'initialisation de `UGameInstance` (moteur) ; 7 schémas rendus sans erreur par Mermaid 11 | aucun changement de code ni de configuration | `.\Tools\Restore.ps1 -Lot DOC-MOD-3` |
|
||||
|
|
|
|||
|
|
@ -8,9 +8,9 @@ Date : 2026-10-06 — Role A-INT
|
|||
|---|---|
|
||||
| Repo addon | https://github.com/edujiro5972/LifePlay-Sandbox.git |
|
||||
| Branche | `main` |
|
||||
| **Commit pin** | `82dae58380b76c45f60541fd7cb5a0a409700e10` (`82dae58`, SB1, **local, non pousse** au 2026-10-07) |
|
||||
| **Commit pin** | `fece7e9a0e63b3058b5d24d96d669a3c9c0e9add` (`fece7e9`, SB2, **local, non pousse** au 2026-10-07) |
|
||||
| Contenu du commit | S5-T2 : `LPCoupleSim` (géométrie du couple partagée jeu/addon) ; inclut S4-T3 (retrait GM Interaction legacy), S4-T2 (découpe `LPPairSandbox.cpp`) et S3-T4 (`StartupModule` → `SetUALRoot`) |
|
||||
| Pins précédents | `f09c42e5a2bc613cf269cce76c878461ca41c8b7` (S7-T2), `c1fdd29e2c1036c7d6365ba6389eff5d2f8c8c96` (S5-T2), `f8102647ccdebad37e4977ccbf2c51e583823a80` (S4-T3), `4de1f0b6764ed3bc575bb687630d3f070e1be221` (S3-T4) |
|
||||
| Pins précédents | `82dae58380b76c45f60541fd7cb5a0a409700e10` (SB1), `f09c42e5a2bc613cf269cce76c878461ca41c8b7` (S7-T2), `c1fdd29e2c1036c7d6365ba6389eff5d2f8c8c96` (S5-T2), `f8102647ccdebad37e4977ccbf2c51e583823a80` (S4-T3), `4de1f0b6764ed3bc575bb687630d3f070e1be221` (S3-T4) |
|
||||
|
||||
## Structure
|
||||
|
||||
|
|
@ -46,7 +46,7 @@ sur la copie effectivement chargee. Pin manuel a la place (ci-dessous).
|
|||
```powershell
|
||||
cd D:\Game
|
||||
git clone https://github.com/edujiro5972/LifePlay-Sandbox.git
|
||||
git -C LifePlay-Sandbox checkout 82dae58380b76c45f60541fd7cb5a0a409700e10
|
||||
git -C LifePlay-Sandbox checkout fece7e9a0e63b3058b5d24d96d669a3c9c0e9add
|
||||
# Le jeu doit etre clone a cote : D:\Game\LifePlay-master 5.5
|
||||
```
|
||||
|
||||
|
|
|
|||
34
Docs/Migration/etat/sandbox/SB2/SB2-BUILD.md
Normal file
34
Docs/Migration/etat/sandbox/SB2/SB2-BUILD.md
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
# Fiche SB2-T4 — Modèle prévu haiku | utilisé haiku
|
||||
|
||||
## Informations de compilation
|
||||
|
||||
- **Date/Heure** : 2026-10-07 12:41:34
|
||||
- **Commande** : `& 'D:\Game\Launcher\Engine\UE_5.5\Engine\Build\BatchFiles\Build.bat' LifePlayEditor Win64 Development -Project='D:\Game\LifePlay-master 5.5\LifePlay.uproject' -WaitMutex 2>&1 | Tee-Object -FilePath 'D:\Game\LifePlay-master 5.5\Saved\SB2_build.log'`
|
||||
- **Code de sortie** : 0
|
||||
- **Durée** : 22.04 secondes
|
||||
|
||||
## Erreurs et avertissements
|
||||
|
||||
Aucune erreur de compilation détectée.
|
||||
|
||||
Ligne 46 (informatif) : `McpAutomationBridge: could not set UBT warning level DeprecationWarningLevel; UBT renamed the setting.`
|
||||
Ligne 47 (informatif) : `McpAutomationBridge: could not set UBT warning level MSVCDeprecationWarningLevel; UBT renamed the setting.`
|
||||
|
||||
Note : Ces messages sont informatifs et concernent la configuration McpAutomationBridge ; ils ne bloquent pas la compilation.
|
||||
|
||||
## Vérification des binaires
|
||||
|
||||
- **Répertoire Binaries du plugin LPSandbox** : N'existe pas (attendu — les binaires du plugin sont compilés dans le jeu)
|
||||
- **DLL UnrealEditor-LPSandbox.dll** :
|
||||
- Chemin : `D:\Game\LifePlay-master 5.5\Binaries\Win64\UnrealEditor-LPSandbox.dll`
|
||||
- Date de modification : 2026-10-07 12:41:33
|
||||
- Taille : 1 320 960 bytes
|
||||
- Mention dans le journal : Oui — ligne 67 `[3/4] Link [x64] UnrealEditor-LPSandbox.dll`
|
||||
|
||||
## Fichier journal
|
||||
|
||||
- Chemin : `D:\Game\LifePlay-master 5.5\Saved\SB2_build.log`
|
||||
|
||||
## Verdict
|
||||
|
||||
**PASS** — Compilation réussie. Le plugin LPSandbox a été compilé et intégré avec succès.
|
||||
171
Docs/Migration/etat/sandbox/SB2/SB2-CART.md
Normal file
171
Docs/Migration/etat/sandbox/SB2/SB2-CART.md
Normal file
|
|
@ -0,0 +1,171 @@
|
|||
# SB2-CART — Carte de découpe (SB2-T1)
|
||||
|
||||
- **Fiche** : SB2-T1 — **Agent** : A-CART — **Modèle** : prévu opus (M3) | utilisé opus (session principale)
|
||||
- **Dépôt** : addon `D:\Game\LifePlay-Sandbox`, branche `lot/SB2-bibliotheques`, tag d'entrée `lot-SB2-avant` = `b8fe6b3`
|
||||
- **Entrée** : `Docs/SB0-conception.md` § 2, 3 et 5 (addon) ; `SB1-SPEC.md`, `SB1-IMPL.md` ; sources lues en entier :
|
||||
`LPPairSandbox.h/.cpp`, `LPCoupleSim.cpp`, `LPSandboxInteraction.cpp`, `LPSandboxRoomBuilder.cpp`, début de
|
||||
`LPSandboxMeasure.cpp` ; relevés par recherche : `LPSandboxMeasure.cpp`, `LPSandboxMeasureTour.cpp`, `LPSandboxActionVM.cpp`.
|
||||
|
||||
## 1. Principe
|
||||
|
||||
Comportement inchangé : le code des méthodes est **déplacé**, pas réécrit. Seuls changent le propriétaire (classe) et
|
||||
les accès à l'état partagé, qui passent par des services du contexte. Les écarts inévitables sont listés en § 7.
|
||||
|
||||
## 2. Classes cibles
|
||||
|
||||
| Classe (fichier) | Module | Nature | Rôle |
|
||||
|---|---|---|---|
|
||||
| `ALPSandboxScene` (`LPSandboxScene.h/.cpp`, ex-`LPSandboxRoomBuilder.cpp`) | `lps_lib_scene` | `AActor` (ex-`ALPPairSandboxStage`) | pièce, mobilier, coque, sol, lumières, ciel ; points de départ ; **hôte des composants** des mods (outer et racine d'attache, comme la scène aujourd'hui) |
|
||||
| `FLPSandboxActors` (`LPSandboxActors.h/.cpp`) | `lps_lib_actors` | C++ (instance unique par session, possédée par le GameMode) | joueur et partenaire, capsule copiée de Person, scan Quaternius, corps, lecture de clips, masquage des personnages |
|
||||
| `FLPSandboxCamera` (`LPSandboxCamera.h/.cpp`) | `lps_system_core` | C++, enveloppe du bras et de la caméra du pion | longueur et décalage du bras, focale, rotation de contrôle, bornes de tangage, `ResetView` |
|
||||
| `ALPPairSandboxCharacter` (`LPPairSandbox.h/.cpp`) | core (pion) + actors (corps) | `ACharacter`, garde son nom (GameMode, config) | composants `Arm`/`Camera` ; menu (barre des mods, rangée Corps, emplacement du panneau du mod ouvert) ; `Tick` réduit à l'aiguillage |
|
||||
| `ALPPairSandboxGameMode` | core | inchangé de nom | crée scène, acteurs, contexte |
|
||||
| `ULPSandboxCoupleMod` (`LPSandboxCoupleMod.h/.cpp`, ex-partie de `LPCoupleSim.cpp`) | `lps_couple` | `UObject` (outer : la scène) | couple : soudure, boîte, déplacement, animations de paire, interrupteurs 1/2, messages du mode Pair |
|
||||
| `ULPSandboxInteractionMod` (`LPSandboxInteractionMod.h/.cpp`, ex-`LPSandboxInteraction.cpp`) | `lps_interaction` | `UObject` | filtres, chat, pastille de touche, vues, marche |
|
||||
| `ULPSandboxMeasureMod` (`LPSandboxMeasure.cpp`, `LPSandboxMeasureTour.cpp`, nouveau `LPSandboxMeasureMod.h`) | `lps_asset_integration` | `UObject` | tout l'état Mesure (≈ 70 membres) ; `AddUObject` des captures conservé |
|
||||
|
||||
Les enveloppes `ILPSandboxMod` (`LPSandboxModWrappers.cpp`) tiennent chacune un `TStrongObjectPtr` vers l'objet du mod,
|
||||
créé à la première ouverture (outer = scène). `UObject` plutôt que C++ pur : `OnScreenshotCaptured().AddUObject` et
|
||||
les `TObjectPtr` (composants, caméras) gardent leur sémantique actuelle.
|
||||
|
||||
### 2.1 Contexte et interface (révision de `LPSandboxMod.h`)
|
||||
|
||||
```cpp
|
||||
struct FLPSandboxContext
|
||||
{
|
||||
UWorld* World = nullptr;
|
||||
ALPPairSandboxCharacter* Player = nullptr; // pion (lecture des touches, menu)
|
||||
FLPSandboxCamera* Camera = nullptr; // core
|
||||
ALPSandboxScene* Scene = nullptr; // lps_lib_scene, nul si non requis
|
||||
FLPSandboxActors* Actors = nullptr; // lps_lib_actors, nul si non requis
|
||||
};
|
||||
|
||||
struct FLPSandboxInput // rempli par le Tick du pion, une fois par image
|
||||
{
|
||||
APlayerController* PC = nullptr;
|
||||
float DeltaSeconds = 0.f;
|
||||
float MouseX = 0.f, MouseY = 0.f; // clic droit tenu, sinon 0
|
||||
FVector Direction = FVector::ZeroVector; // ZQSD/WASD dans le repère de la caméra (non normalisé)
|
||||
};
|
||||
|
||||
class ILPSandboxMod
|
||||
{
|
||||
// existants : GetId, Activate, Deactivate
|
||||
virtual TSharedPtr<SWidget> BuildPanel(); // construit une fois, mis en cache par l'enveloppe
|
||||
virtual void TickInput(const FLPSandboxInput& Input); // remplace l'aiguillage du Tick du pion
|
||||
virtual void OnFellOff(); // pion sous z = -50
|
||||
virtual void OnBodyChanged(ACharacter* Who); // choix MC / PNJ dans la rangée Corps
|
||||
};
|
||||
```
|
||||
|
||||
Remplissage selon `MODULE_REQUIREMENTS` : `lps_asset_integration` ne requiert pas `lps_lib_scene` dans son descripteur
|
||||
actuel mais **utilise la scène comme hôte de ses composants** et masque la pièce → ajouter `lps_lib_scene` à ses
|
||||
prérequis (décision D2, § 6). Pas d'accès de mod à mod : les seuls points de contact sont scène, acteurs, caméra.
|
||||
|
||||
## 3. Destination de chaque membre
|
||||
|
||||
### 3.1 `ALPPairSandboxStage` → `ALPSandboxScene`, `FLPSandboxActors`, mods
|
||||
|
||||
| Membre / méthode (lignes `LPPairSandbox.h`) | Destination |
|
||||
|---|---|
|
||||
| `Build` (RoomBuilder 105–316), `LoadWorldFile`, `Token`, `FProp` | Scene ; la lecture de la capsule Person (119–127) part dans Actors (`ReadPersonCapsule`) ; `Build(World, Radius, Half, bCopied)` reçoit la capsule pour la recherche du départ et le journal (texte inchangé) ; l'appel final `LoadChat()` + `PairSandbox::LoadActions()` (314–315) part dans le mod interaction |
|
||||
| `Furniture`, `RoomShell` (124–125), `bFurnitureBlocks` (104) | Scene ; services `SetFurnitureBlocksPawn(bool)` (boucle de `Apply` 74–77), `HideRoom()` / `ShowRoom()` (copies exactes des boucles de `BeginMeasure` 172–187 et `EndMeasure` 85–98) |
|
||||
| `PlayerSpot`, `PartnerSpot` (205–206) | Scene (`GetPlayerSpot`, `GetPartnerSpot`) |
|
||||
| `Possess` (cpp 43–72) | GameMode / Actors : `Actors.Spawn(Scene, PlayerPawn)` ; l'appel `Apply()` (67) devient « ouvrir le mod initial » ; `ShowAnimMenu` reste appelé |
|
||||
| `Player`, `Partner` (201–202), `GetPartner` | Actors (`GetPlayer`, `GetPartner`) |
|
||||
| `CapsuleRadius`, `CapsuleHalf`, `bCopiedPerson` (207–209), `ConfigureCapsule` | Actors |
|
||||
| `PlayIdle` | aucun appelant : supprimé (vérifié par recherche) |
|
||||
| `bCapsulesOn` (105), `CoupleBox` (129), `CurrentPair` (203), `Apply`, `Weld`, `FitCoupleBox`, `MoveCouple`, `PlayPair`, `ToggleFurniture`, `ToggleCapsules` | `ULPSandboxCoupleMod` ; `Apply` appelle `Scene->SetFurnitureBlocksPawn(bFurnitureBlocks)` où `bFurnitureBlocks` reste lu dans la scène (l'interrupteur 1 bascule l'état de la scène) |
|
||||
| `BeginInteraction`, `LoadChat`, `ChatLabel` | `ULPSandboxInteractionMod` |
|
||||
| `BeginMeasure` … `WritePlanche`, `MeasureBodies` … `AutoStatus`, `FTourStep`, `FLPMeasureFigure`, `bShowMannequin` (106) | `ULPSandboxMeasureMod` (substitutions § 4) |
|
||||
|
||||
### 3.2 `ALPPairSandboxCharacter`
|
||||
|
||||
| Membre / méthode | Destination |
|
||||
|---|---|
|
||||
| `Arm`, `Camera`, `ResetView`, `SavedArmLength` | composants : pion ; manipulation : `FLPSandboxCamera` ; `SavedArmLength` → mod Mesure |
|
||||
| `SetStage`, `Stage` | remplacés par le contexte ; réglage souris/caméra de `SetStage` (109–121) → `FLPSandboxCamera::Init` |
|
||||
| `ApplyBody`, `BodyLabel`, `SelectBody`, `QuaterniusMesh`, `QuaterniusClips`, `LoadQuaternius` | Actors (scan unique par session ; `ApplyBody(Who, Label)`) ; `SelectBody` reste dans le menu du pion puis appelle `OpenMod->OnBodyChanged(Who)` |
|
||||
| `RefreshPose` | coupé en deux services Actors : `PlayClip(Who, Clip)` (branche Quaternius B_/M_, 315–349) et `PlayPairClip(Who, Pair)` (branche paire 352–371) ; la logique de choix part dans couple (paire / Idle_Loop) et interaction (marche / Idle_Loop) |
|
||||
| `PlayWalk`, `WalkLabel`, `SelectWalk`, `bWasMoving`, `EyesIdle`, `bResumeEyes`, `CurrentView`, `SelectView`, `ApplyInteractionView`, `ApplyFilters`, `ShowChat`, `HideChat`, `ChatLine`, `bChatOpen`, `RefreshInteractKey`, `ShowKeyMark`, `HideKeyMark`, `PlaceKeyMark`, `KeyMark`, `bKeyVisible`, `InteractKey`, `InteractLetter`, `bInteract*`, `bPrevE`, `Who1Name` … `bSpouses`, `ListedActions`, `BuildFilterPanel` | `ULPSandboxInteractionMod` (pointeurs sur membre de `Flag` : `bool ULPSandboxInteractionMod::*`) |
|
||||
| `SelectAnim`, `CurrentAnim`, liste des 38 noms (`ShowAnimMenu` 290–313), `bPrevOne`, `bPrevTwo` | `ULPSandboxCoupleMod` (panneau : liste des paires) |
|
||||
| `BuildMeasurePanel`, `TickMeasureInput` | `ULPSandboxMeasureMod` (`BuildPanel`, `TickInput`) |
|
||||
| `SelectMode`, `ModeLabel`, `bMeasure`, `bInteraction`, `IsInteraction`, `IsMeasure`, `GetModeLabel`, `ModeCombo`, `Menu->Modes/Mode/AnimRow/ViewRow/FilterRow/MeasureRow` | **supprimés** : le registre et `Activate`/`Deactivate` les remplacent ; `OpenModeLabel` / `IdForModeLabel` gardés pour `sandbox_mode.txt` et `[Sandbox.Mode]` |
|
||||
| `OpenNeutral` | scène neutre = aucun mod : personnages à l'arrêt, pas de `TickInput` (D3) |
|
||||
| `Menu` (`FPairSandboxMenu`) | réduit à `Widget`, `BodyRow`, `ModPanel` (emplacement), `Bodies` ; `Views`, `Walks`, `Who1/2`, `Places`, `Whens`, `Races` → interaction ; `Options/Selected` → couple |
|
||||
| `Tick` (638–855) | pion : chute (653–668) → `OnFellOff`, souris (676–682), direction (684–703), Échap (818–821) ; le reste → `TickInput` du mod ouvert (tableau 3.3) |
|
||||
|
||||
### 3.3 Découpe du `Tick` du pion
|
||||
|
||||
| Lignes | Condition actuelle | Destination |
|
||||
|---|---|---|
|
||||
| 645–652 boîte de débogage | Pair | couple `TickInput` |
|
||||
| 653–668 chute | interaction / sinon | `OnFellOff` : interaction (`BeginInteraction` + `PlayWalk`), couple (`Apply`), Mesure : rien (D4) |
|
||||
| 704–714 déplacement | Pair : `MoveCouple` ; Interaction : `AddMovementInput` | couple / interaction |
|
||||
| 715–749 marche, yeux | Interaction | interaction |
|
||||
| 750–764 touches 1, 2 | Pair | couple |
|
||||
| 765–817 pastille, chat | Interaction | interaction |
|
||||
| 823–835 touches Mesure, étiquettes | Mesure | Mesure |
|
||||
| 836–854 messages à l'écran | Pair | couple |
|
||||
|
||||
### 3.4 Transitions (`SelectMode` 175–257) → `Activate` / `Deactivate`
|
||||
|
||||
| Bloc actuel | Destination |
|
||||
|---|---|
|
||||
| `HideChat`, `HideKeyMark`, `SetOwnerNoSee(false)` (189–191) | interaction `Deactivate` + `Camera`/Actors au besoin (`SetOwnerNoSee(false)` dans chaque `Activate`, comme aujourd'hui à chaque changement) |
|
||||
| sortie de Mesure (216–223) | Mesure `Deactivate` |
|
||||
| entrée Mesure (224–239) | Mesure `Activate` |
|
||||
| entrée Interaction (241–251) | interaction `Activate` |
|
||||
| entrée Pair (252–256) | couple `Activate` (`PlayPair(CurrentAnim)` + `ResetView`) |
|
||||
| `BeginInteraction` 97–100 et `BeginMeasure` 188–192 (boîte du couple coupée) | couple `Deactivate` (collision coupée et boîte masquée) : un mod ne touche plus l'état d'un autre |
|
||||
|
||||
## 4. Substitutions mécaniques dans les fichiers Mesure
|
||||
|
||||
| Avant (membre de la scène) | Après (dans `ULPSandboxMeasureMod`) |
|
||||
|---|---|
|
||||
| `ALPPairSandboxStage::` | `ULPSandboxMeasureMod::` |
|
||||
| `Player.Get()` / `Partner.Get()` | `Actors->GetPlayer()` / `Actors->GetPartner()` |
|
||||
| `PlayerSpot`, `CapsuleHalf` | `Scene->GetPlayerSpot()`, `Actors->GetCapsuleHalf()` |
|
||||
| boucles `Furniture` / `RoomShell` | `Scene->HideRoom()` / `Scene->ShowRoom()` |
|
||||
| `CoupleBox` (188–192) | supprimé (couple `Deactivate`) |
|
||||
| `NewObject<T>(this…)`, `GetRootComponent()`, `GetWorld()`, `GetActorLocation()` | `NewObject<T>(Scene…)`, `Scene->GetRootComponent()`, `Scene->GetWorld()`, `Scene->GetActorLocation()` |
|
||||
| `AddUObject(this, &ALPPairSandboxStage::…)` | `AddUObject(this, &ULPSandboxMeasureMod::…)` |
|
||||
| `Room->…` dans `TickMeasureInput`, `Who->Stage` dans `BuildMeasurePanel` | `this->…` ; `Arm`/`GetMesh()` du pion via `Camera` / `Player` |
|
||||
|
||||
Mêmes substitutions pour couple (`LPCoupleSim.cpp`) et interaction (`Player`/`Partner`, `PlayerSpot`, `Arm`, `Camera`, `GetController`).
|
||||
|
||||
## 5. Ordre de déplacement (fiches IMPL)
|
||||
|
||||
1. **SB2-T2** (socle et bibliothèques) : `LPSandboxMod.h` (contexte, entrée, 3 crochets), `ALPSandboxScene`,
|
||||
`FLPSandboxActors`, `FLPSandboxCamera`, GameMode, pion (menu réduit, aiguillage) ; enveloppes adaptées.
|
||||
2. **SB2-T3a** couple, **T3b** interaction, **T3c** Mesure (≈ 1 600 lignes, substitutions § 4).
|
||||
3. Une compilation (SB2-T4) après T3c : le code intermédiaire ne compile pas seul (la scène perd ses membres en T2).
|
||||
|
||||
Points d'appel croisés à casser : `Build → LoadChat/LoadActions` ; `BeginInteraction → CoupleBox` ;
|
||||
`BeginMeasure → CoupleBox` ; `Possess → Apply` ; `RefreshPose → Stage->CurrentPair / Stage->Player->WalkLabel` ;
|
||||
`SelectBody → bInteraction, bWasMoving, CurrentView` ; `ShowAnimMenu → PairSandbox::PlaceChoices/WhenChoices` ;
|
||||
`Tick → Stage->CoupleBox, bCapsulesOn, bFurnitureBlocks`.
|
||||
|
||||
## 6. Décisions proposées
|
||||
|
||||
| # | Décision | Motif |
|
||||
|---|---|---|
|
||||
| D1 | Les mods sont des `UObject` (outer = scène) tenus par l'enveloppe | captures d'écran par `AddUObject`, composants en `TObjectPtr` |
|
||||
| D2 | `lps_asset_integration` requiert `lps_lib_scene` (descripteur) et `lps_lib_actors` | il masque la pièce et les personnages et accroche ses composants à la scène ; sinon contexte nul |
|
||||
| D3 | Scène neutre (aucun mod) : pas de comportement de couple | l'état neutre de SB1 (« Pair sans liste ») dépendait du couple ; un mod ne peut plus servir de défaut |
|
||||
| D4 | Chute du pion en Mesure : rien | aujourd'hui `Apply()` du couple ; le pion est figé et à l'intérieur de la pièce pendant la Mesure, cas non atteint |
|
||||
| D5 | Panneau du mod ouvert placé sous la rangée Corps (MC, PNJ) | aujourd'hui le panneau Mesure est au-dessus de MC/PNJ et les autres en dessous ; un seul emplacement |
|
||||
| D6 | `EndSession` vide aussi les instances de mods | l'état des mods vit dans le monde (outer = scène), comme celui de la scène aujourd'hui |
|
||||
| D7 | Les instances persistent entre deux ouvertures dans la session | l'état actuel (clip Mesure, filtres, paire choisie) survit aux changements de mode |
|
||||
|
||||
## 7. Écarts visibles attendus
|
||||
|
||||
- Ordre du panneau (D5) ; scène neutre sans couple (D3) ; chargement de `chat.lpaction` et des actions à la première
|
||||
ouverture d'interaction, plus au démarrage (journal déplacé) ; un seul scan Quaternius par session au lieu de trois
|
||||
(lignes « Sandbox Quaternius » moins nombreuses).
|
||||
|
||||
## 8. Observation hors périmètre (comportement actuel, non corrigé en SB2)
|
||||
|
||||
- **O1** : `EndMeasure` (`LPSandboxMeasure.cpp` 85–98) remet `SetVisibility(true)` sur meubles et murs sans
|
||||
`SetHiddenInGame(false)`, alors que `BeginMeasure` a mis `SetHiddenInGame(true)` : après Mesure, la pièce devrait
|
||||
rester invisible en Couple et Interaction. À confirmer à l'écran ; correction proposée hors SB2 (registre des reports).
|
||||
33
Docs/Migration/etat/sandbox/SB2/SB2-IMPL.md
Normal file
33
Docs/Migration/etat/sandbox/SB2/SB2-IMPL.md
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
# 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.
|
||||
146
Docs/Migration/etat/sandbox/SB2/SB2-REF.md
Normal file
146
Docs/Migration/etat/sandbox/SB2/SB2-REF.md
Normal file
|
|
@ -0,0 +1,146 @@
|
|||
# Fiche SB2-T0 — Modèle prévu haiku | utilisé haiku
|
||||
|
||||
**Date :** 2026-10-07
|
||||
|
||||
**Addon au commit :** b8fe6b3
|
||||
|
||||
---
|
||||
|
||||
## Pack quaternius
|
||||
|
||||
**Commande :**
|
||||
```
|
||||
.\Tools\anim\AnimPipeline.ps1 -Pack quaternius -From 5 -To 5
|
||||
```
|
||||
|
||||
**Verdict :** avertissement
|
||||
|
||||
**Code de sortie :** 0
|
||||
|
||||
**Durée :** 1136 s
|
||||
|
||||
**Chemin de la copie :** `D:\Game\LifePlay_Backup_5.5\SB2-REF\quaternius\` (48 fichiers)
|
||||
|
||||
### Fichiers de référence (quaternius)
|
||||
|
||||
| Nom | SHA-256 | Taille (MB) |
|
||||
|-----|---------|-------------|
|
||||
| anim_retarget.json | 54B80ECBEA56065001AE702017A791ED5CC73AA3511CE021A966307AA82031B9 | 0,00 |
|
||||
| catalogue_rapport.json | 3577B804A80A600BA69DBACC107559BA9913AA62EB36CE991192EAD8910759E9 | 0,00 |
|
||||
| controles_Bridget.csv | 867D78A32E8CAC87973C7D33A684C12CDADDE0C504E50CFCC15A9CDF5184BD2B | 0,00 |
|
||||
| controles_Michael.csv | 2F9D54BBFB59C56DA138F4EFAA24CE602020AD20AB0BA945EF259250DBAF993E | 0,00 |
|
||||
| 0_inventaire.json | 5B4BC588B08C5424E41725CA770BBA13AC556E9006372CB246471483ED5CC312 | 0,00 |
|
||||
| 1_import.json | 41E01C513F11A6999D998AC42CB94034C5AF9211AF2AA7FFFE285A8620FE300A | 0,00 |
|
||||
| 2_identification.json | 0AF3F335AAB33598ADD404C4FB449490FFD2E7F1C3A2BAC497A3464F0D62BE75 | 0,00 |
|
||||
| 3_calque.json | BC9103444FF5CA4061BF5270814CA965C2B8763E07179BC57B6C0C88E83FED91 | 0,00 |
|
||||
| 4_conversion_bake.cmd | 6DF9C280E4D77B7717B40626426BBDC6769FC32B54A854F142E42739E21198D3 | 0,00 |
|
||||
| 4_conversion_bake.log | 502910EDDC105CAD25B61818ACD93B8621CEA09BF94EE16A0099E0D8BEC33D34 | 0,00 |
|
||||
| 4_conversion.json | 9686BC1E7CFAD18B76592FA5894ABB32FD2CD020174A917E44A7F4142002AE1B | 0,00 |
|
||||
| 5_evaluation.json | F2030D724D78A633653B412D95F14A97122F0C8BA2B95EAAB0778F6E873F8A9A | 0,00 |
|
||||
| 6_catalogue.json | 9C74A70CE1F00E9EDD6D4CE4DBA1768F46F37581AC6520198E13AE4F140D9E4D | 0,00 |
|
||||
| 7_livraison.json | 895AAC36BBDED45FBFD30A546CDFD94ECCAE592D60650D381FC96BD63484E5BA | 0,00 |
|
||||
| etat.json | BE4D00DF43CC4C61D553A476FDBE40ACCFC60F7E0391E31534C73C5B827FDFCA | 0,00 |
|
||||
| eval_Bridget.csv | 774BDD57B770B13BC1F143928963DEF8BCDD8F03F2238DB725D31F9D9E237380 | 0,01 |
|
||||
| eval_Michael.csv | DA57E9C517656E5E24494A56D68A933816A204C2C464A960C07ACA4D6A2019BD | 0,01 |
|
||||
| fiches_calculees.json | 5DBBA632FAF3821415D0F7EF9CD74226EA694501BCC69B96565170194F9417AE | 0,02 |
|
||||
| identification.json | 310CCE61A3B770F4B0D9EE27142AE1C46E7D527C659D4EF08F84846E30F64605 | 0,01 |
|
||||
| livraison.json | 3212B118F47E460E9539FFEDB7B816AA3235A4E819A5456162BB9939459CCCCD | 0,01 |
|
||||
| retarget_pose_Bridget.txt | 03563E5654118966940A7FB9A3B9F3EA6A8A3769518BCE30F8EA2E091D632805 | 0,00 |
|
||||
| retarget_pose_Michael.txt | A67D64B6F52919471B37D9217798F2DCD4F258A77CA9678BE196F90CE48E63AA | 0,00 |
|
||||
| rapport_poseT_Bridget.json | 95CA80D540920593ED3B28A75A65D65183D5C1386E4930F9F9B385F94084F3D6 | 0,01 |
|
||||
| rapport_poseT_Michael.json | AA249CE849518C7C215C57FB88B674E827E63ED681E97E79EA982FE0C2796791 | 0,01 |
|
||||
| rapport_torsion.json | 2EB1B99AA359E7B32EDCC7CECC12F141B3875A3068D0A569823877E7A8F0BF9E | 0,02 |
|
||||
| rapport.html | 2E6980F3D4CE41D7EFAB16C6AC9DD22DAE62549B74EAB6AA3EE0540214B66A5E | 0,11 |
|
||||
| rapport.json | 4C312E78C454842290FB48AAB6AD34DD59BD2A3F6993DF7483FFBDBBA0E7ED2B | 0,00 |
|
||||
| sandbox_mode.txt | 989DA04B0AAAA57F9D4E0178CF5178CCE8E1C8D44F4EFE9AF946599CE2A84F27 | 0,00 |
|
||||
| sandbox_pack.ini | A33F250B2F07B828D89C67A7DB7752376286C7A6FB344BDF7ABDC9EBF04D80F3 | 0,00 |
|
||||
| sandbox_pack.ini.avant_20261006-234943 | A3E67F94B9CF27A98E647D789D824C924DBFF40F8F273E5975B9C839AF9E31EC | 0,00 |
|
||||
|
||||
---
|
||||
|
||||
## Pack freeanims
|
||||
|
||||
**Commande :**
|
||||
```
|
||||
.\Tools\anim\AnimPipeline.ps1 -Pack freeanims -From 5 -To 5
|
||||
```
|
||||
|
||||
**Verdict :** ok
|
||||
|
||||
**Code de sortie :** 0
|
||||
|
||||
**Durée :** 435 s
|
||||
|
||||
**Chemin de la copie :** `D:\Game\LifePlay_Backup_5.5\SB2-REF\freeanims\` (82 fichiers)
|
||||
|
||||
### Fichiers de référence (freeanims)
|
||||
|
||||
| Nom | SHA-256 | Taille (MB) |
|
||||
|-----|---------|-------------|
|
||||
| anim_retarget.json | 0A62E316DD68803FC64751AB6D134959C968806C12AE052239F0AA046261050A | 0,00 |
|
||||
| catalogue_rapport.json | 17B65679F03A2605D6983DC9EAF96253CCFFFFCF2D7B41DA88FA666FC4C898FB | 0,00 |
|
||||
| controles_Bridget.csv | 10E183C73AA4AF45E5E8F00A6F86618EE7CEEBC2E1C488906ADEBD47E1D6352E | 0,00 |
|
||||
| controles_Michael.csv | DE01E18555642B84874179865495F44F2EF053F2C4F5BAF17518ED68522B2813 | 0,00 |
|
||||
| 0_inventaire.json | 879C1BB27C480FBB826EE48B59A7F83442B362215E868D73F562BE5D88FD7AB0 | 0,00 |
|
||||
| 1_import.json | 140BBB9A3886C81A317F508FFC9E5030D14B4548B3A99AD80CC1268B51261441 | 0,00 |
|
||||
| 2_identification.json | E282521BBA35D950A4102249D485E427FD71AF28D0CDF4B661A292974CB679D0 | 0,00 |
|
||||
| 3_calque.json | 86D8FCDF26E51EE3F0A67A11A43A804B044367FED170EC33148E51B0DE82A0D7 | 0,00 |
|
||||
| 4_conversion_bake.cmd | 00E84516A4E119EFE0AA1BE2978AA72BF13BC6D033A509445217EB091327ABD4 | 0,00 |
|
||||
| 4_conversion_bake.log | 4961B7F733257C06904989464AD230089B675C3DEE5217AE76A745D05C4E216E | 0,00 |
|
||||
| 4_conversion.json | 783DC58730818BF7841531285DB852DA635D4336AAB3736CE9565172E640E6F0 | 0,00 |
|
||||
| 5_evaluation.json | 8B9960FD82C45F930D394D3D85CEA932D9DA93870F39C3BE11AFC82300CE091B | 0,00 |
|
||||
| 6_catalogue.json | 8D0CB68A1EE261639ABECF02C627758F1A8D880015B6E99B90FBAB0D0B637864 | 0,00 |
|
||||
| 7_livraison.json | 132094EE60B7E59E2BF060A658999F6670D69B022C6CD0D8120449E8383803CE | 0,00 |
|
||||
| etat.json | 045CA94FFED2CE0E254ABFCBEA1ABE46C3F4813D4A85A444A08F3FA5925B2312 | 0,00 |
|
||||
| eval_Bridget.csv | 32F7C885F909775006C3ACDEA14C488770F3E873BE4145B6CC8699D1F7BD80F6 | 0,00 |
|
||||
| eval_Michael.csv | 31BEB3A75D84B021C290F18DCC5AA25277322348CDC59DBCC054D20D15F000E4 | 0,00 |
|
||||
| fiches_calculees.json | 695326ECA32A678073C4B41415D1A1DD2CD753E9C0F6A02EF1F18165390F0D15 | 0,01 |
|
||||
| identification.json | 557013ADCB21F3064202807029E32C9673C5C1755E269DCE199B49D4D079895F | 0,02 |
|
||||
| livraison.json | E4EE395D35786DFD13D001FB132715E7619238CDB8B31208E5AC0B08904592F6 | 0,00 |
|
||||
| retarget_pose_Bridget.txt | 5FDAB43D2E9D58D23F0E5D8FE3CEDED45DF07FF658B14D03574EF2E400EDDE29 | 0,00 |
|
||||
| retarget_pose_Michael.txt | 5CC3DF0BFFD7843CE4FA84B1624766FB012A8C8CF3D7EAF7A421C1E9C4D8BF96 | 0,00 |
|
||||
| rapport_poseT_Bridget.json | 947F55B5D8FD1462B1026AED5741A44EC01F4888BF18E6805EAB04032B62266A | 0,01 |
|
||||
| rapport_poseT_Michael.json | 0D1076E2533C3016C15CBB85A00BA2847C6B59BB7C38184AB2811BFE4CFFCB6E | 0,01 |
|
||||
| rapport_torsion.json | 1F33AA372C0267AE3B4A3C09EA9105A3A1A2288426E4C39203E96DC845CF4BA5 | 0,01 |
|
||||
| rapport.json | C9AD7D476B1E561885AA83AABBE279BF7430CD0400664514E278FDEE5EDFB10F | 0,00 |
|
||||
| rapport.html | F1E79A8A48AA0CBB3CC54C8145DE083740760F03B6BB8E5858E7EEE95BD04283 | 0,04 |
|
||||
| sandbox_mode.txt | 989DA04B0AAAA57F9D4E0178CF5178CCE8E1C8D44F4EFE9AF946599CE2A84F27 | 0,00 |
|
||||
| sandbox_pack.ini | 0AB52666D83198E6C4BAD2226E3266A77D5531D15DEB06804AC125CAE355AA38 | 0,00 |
|
||||
| AS_AirKiss.jpg | 3C2E3738EA10B8427AE8C3AAD42B3BF1E8A01DD93DBDF018A6785FD97421CE1E | 0,14 |
|
||||
| AS_AirKiss.json | C2F829A5ACFFE18398B18DA0A2350F280B9CE77D6BA4C908E23A0AC80A8B45D4 | 0,00 |
|
||||
| AS_AttackInLevitation2.jpg | 42DDEBAAEDC6D361B6BC5E8E0A5BDD2B135CCDAF0B9B3F0DFAD74D48C20F86F5 | 0,13 |
|
||||
| AS_AttackInLevitation2.json | 898CFB6B0F6EDF4B05BDD82CB003D0DA64CF00533C09F40A2FDAEC4B4B5112DD | 0,00 |
|
||||
| AS_ChillDriving.jpg | 977B1545B8F0EDF4FBD3EC432D7BB74EA6330DEBA55E0446D1C8977A8514832D | 0,18 |
|
||||
| AS_ChillDriving.json | E216A634A43EB1367277B182F9FB49CB828CA6AE22B0A909AA3FA9C4F5E51EF4 | 0,00 |
|
||||
| AS_ComboHands.jpg | 1989006163959D412026E4155D361A6F42B2FB83016E9418F5ABFA91B5D94D0C | 0,15 |
|
||||
| AS_ComboHands.json | E8070AA802540C66DC5967DE40AF60BCBCAA2AAD0187CA22F6EC359EC1BAA74A | 0,00 |
|
||||
| AS_EatingOnParty.jpg | AB4056E09E12C26439C29ECD17924E026BF6E924EA044C63A9A8FB1EEE08BA48 | 0,13 |
|
||||
| AS_EatingOnParty.json | E4E863E9C4CD91D7045B70E017100B5C69C18E7E6FC785A213B495133239A7C7 | 0,00 |
|
||||
| AS_FlyingUp.jpg | 4576EA66A156E429A395FB0009E43944D8841AB02D11B58462D40BA77F55CE2A | 0,11 |
|
||||
| AS_FlyingUp.json | A655C617B4C51CD2A0CB06BE141AD4BF84F2835706CFD5D83DAF1D6A41ED4912 | 0,00 |
|
||||
| AS_GoForward.jpg | B0A23AEC55ADDFA1538573CA0B656C3599FC9BA46BBF733C63A03BA8B159C6A2 | 0,14 |
|
||||
| AS_GoForward.json | 7948682D213B3720819140745CD8A26D453B2DC38A781F7B7F6EF5E0CDC975EC | 0,00 |
|
||||
| AS_Rest.jpg | 85725EB1B095CB6D6EF81AD1CE9AD553DA9D64D66C5F821386F8FAF1B7F6D1F5 | 0,13 |
|
||||
| AS_Rest.json | 7110D053E6A13F4C3445517B32DAAA78C64B23D3E68A2F2534CE14ED55BD15BA | 0,00 |
|
||||
| AS_RightLegKick2.jpg | 0F8BBCDBBC8F105764D53185DDB5837FF1523647BA24872A3FB6CA1A0747A4B9 | 0,08 |
|
||||
| AS_RightLegKick2.json | 8D8AE7818FA30F6F6A92609E269FDD5F14171F10FD18E5CC9513EFD5972D3CCC | 0,00 |
|
||||
| AS_Talk.jpg | B629328755FDC2CC12E59EA99747FAEA87005FA90B9A12D90448D3BD7C7E343A | 0,14 |
|
||||
| AS_Talk.json | 4CE78A9C6D0C5A64568C4F59E1835BBD92DC42FB1A38FB1EDF92FBA6B7A0C92B | 0,00 |
|
||||
| AS_AirKiss.png | 97A1331F47FF1C3E6BAC78B2223BDD81C0DC7F1C0000A83A9456F80DF2C3303D | 0,25 |
|
||||
| AS_AttackInLevitation2.png | 951E3ADB8843989FA5E9426E41794A1B5D13B8BFE3B68001F8F23E2FF93DEB93 | 0,24 |
|
||||
| AS_ChillDriving.png | 55B3A2931C296DFF81D8666B6AB7E00925FE856058DEB106CFC5A031859425A4 | 0,28 |
|
||||
| AS_ComboHands.png | 52F5B17D6E26FB5E6BC43D1400F58255E10DF7EABE2461CE7D9499707B705C07 | 0,26 |
|
||||
| AS_EatingOnParty.png | 46DF6999117ED80AB36401C5DDE81F1E6979F40E3D06AD502A245DC279CC0148 | 0,25 |
|
||||
| AS_FlyingUp.png | 5BDF1E8B31CF4E467B73B1CFAA6EEE357C65638B9256EACC47F451ED07946F84 | 0,25 |
|
||||
| AS_GoForward.png | 32B81E2D0BBA92263ED01AA584BB80AB142087CD3631D68FBF66D4DB6DEBF03C | 0,25 |
|
||||
| AS_Rest.png | 823DB1F6C2263B5A462CAC79C8688B2B38D8D21C59FC6826E9899D7F2C066EDE | 0,23 |
|
||||
| AS_RightLegKick2.png | 2FB02099F7BD136C51A41DDAE8DDD3AFCADCFB52CC578AD41497A61BAFE520A6 | 0,25 |
|
||||
| AS_Talk.png | 5A7FA2A4DB753E8CFF7933500C023E2048221A01483BC5D6FDB8CB989A31F6F0 | 0,25 |
|
||||
|
||||
---
|
||||
|
||||
## Notes
|
||||
|
||||
- Les images (PNG/JPG) peuvent varier d'une exécution à l'autre en raison du rendu non déterministe.
|
||||
- La comparaison stricte entre les exécutions portera sur les fichiers `.json` et `.csv`.
|
||||
- Tous les fichiers JSON et CSV listés ci-dessus constituent la référence de base pour SB2.
|
||||
151
Docs/Migration/etat/sandbox/SB2/SB2-VAL.md
Normal file
151
Docs/Migration/etat/sandbox/SB2/SB2-VAL.md
Normal file
|
|
@ -0,0 +1,151 @@
|
|||
# SB2-VAL — Validation automatique du lot SB2 (SB2-T5, partie automatique)
|
||||
|
||||
**Fiche SB2-T5 — Modèle prévu sonnet | utilisé sonnet**
|
||||
|
||||
- Date : 2026-10-07. Build testé : celui de SB2-T4 (compilation code 0, non refaite).
|
||||
- Journaux copiés dans `D:\Game\LifePlay_Backup_5.5\SB2-VAL\` : `E1.log`, `E2.log`, `E3.log`, `E4_quaternius_sandbox.log`, `E4_freeanims_sandbox.log`, `E4_*_console.txt`.
|
||||
- Procédure : aucun éditeur actif avant chaque lancement ; démarrage par `LifePlay_pair_sandbox.bat` ; attente de `Ouvert :` / `Aucun mod ouvert` ; copie du journal ; arrêt du seul `UnrealEditor` lancé. E4 : le pilote lance et ferme lui-même la sandbox.
|
||||
- Aucun git, aucune modification de source ni de script. Seuls fichiers touchés : `Saved\sandbox_mods.ini` (E2, remis) et le dossier `0010_lps_lib_scene` (E3, remis).
|
||||
|
||||
## Tableau des essais
|
||||
|
||||
| Essai | Attendu | Constaté (lignes de journal) | Verdict |
|
||||
|---|---|---|---|
|
||||
| E1 démarrage | 7 modules, ordre, aucun refus ; `Ouvert : lps_couple` ; lignes boîte / corps / Quaternius ; pas de `Sandbox interaction : action chargee` ; aucun `Error`/`Ensure`/`Fatal` | `LogLPSandboxMods: Modules : 7 sandbox, 16 jeu ; ordre : lps_system_core, lps_system_animmeasure, lps_lib_scene, lps_lib_actors, lps_couple, lps_interaction, lps_asset_integration`, les 7 en `pret`. `Sandbox Quaternius : corps /Game/Quaternius/UAL/UAL1_Standard.UAL1_Standard, 43 animation(s)` (1 seule ligne). `Sandbox corps : bridget_gp`, `Sandbox corps : michael`. `Sandbox boite AgMakeout : centre X=20.831 Y=1.400 Z=-0.534, etendue X=41.180 Y=50.958 Z=89.466` ; `Sandbox pose : AgMakeout_F sur Bridget` / `AgMakeout_M sur Michael`. `Ouvert : lps_couple`. Aucune ligne `Sandbox interaction`. Seul `Error` : `LogLifePlay: Error: Coiffures : GI.HairstyleTable ou GI.MorphableHairs introuvable sur GameInstance_0, table laissee telle quelle` (hors module LPSandbox ; présente dans les 9 journaux antérieurs du jour, donc préexistante) | PASS |
|
||||
| E2 ouverture interaction | `Ouvert : lps_interaction`, action chargée, N actions, poses Idle_Loop | `Sandbox interaction : action chargee Chat` ; `Sandbox interaction : 286 actions, 160 lieux, 12 horaires` ; `Sandbox pose : M_Idle_Loop sur Michael`, `B_Idle_Loop sur Bridget`, `M_Idle_Loop sur Michael` ; `Sandbox interaction : touche E lue dans ../../../../../../LifePlay-master 5.5/Saved/Config/Windows/LPKeyboard.ini` ; `Ouvert : lps_interaction`. Un seul `Error` (Coiffures, préexistant) | PASS |
|
||||
| E3 prérequis (D2) | 3 mods en prérequis manquant, scène neutre, pas de plantage | `Modules : 6 sandbox, 16 jeu ; ordre : lps_system_core, lps_system_animmeasure, lps_lib_actors, lps_couple, lps_interaction, lps_asset_integration` ; `lps_couple [mod] prerequis manquant : prerequis absent : lps_lib_scene` ; idem `lps_interaction` et `lps_asset_integration` (+ 3 `Warning`) ; `Ouverture refusee : lps_couple (prerequis absent : lps_lib_scene)` puis `Aucun mod ouvert : scene neutre`. Aucun plantage, aucun `Fatal`/`Ensure`. Seul `Error` : Coiffures (préexistant) | PASS |
|
||||
| E4 quaternius | verdict `avertissement`, 8 avertissements identiques, fichiers identiques, `Ouvert : lps_asset_integration`, `TOURNEE fermeture demandee` | voir détail ci-dessous ; journal : `TOURNEE debut 43 clips, 129 etapes`, `Ouvert : lps_asset_integration`, `TOURNEE fin vignettes`, `TOURNEE fin planches`, `TOURNEE fermeture demandee` ; code 0, 1136 s ; seul `Error` : Coiffures | PASS |
|
||||
| E4 freeanims | verdict `ok`, fichiers identiques, `Ouvert : lps_asset_integration`, `TOURNEE fermeture demandee` | voir détail ci-dessous ; journal : `Ouvert : lps_asset_integration`, `TOURNEE fermeture demandee` ; code 0, 436 s ; seul `Error` : Coiffures | PASS (images : à juger) |
|
||||
| E5 état final | ini exact, dossier en place, aucun éditeur, git inchangé | voir ci-dessous | PASS |
|
||||
|
||||
## Détail E4
|
||||
|
||||
Référence : `D:\Game\LifePlay_Backup_5.5\SB2-REF\<pack>\` ; nouveau : `Saved\AnimPipeline\<pack>\`. Comparaison par SHA-256.
|
||||
|
||||
### quaternius (verdict `avertissement`, identique à la référence)
|
||||
|
||||
- Liste de fichiers : 44 / 44, identique (rien en plus, rien en moins).
|
||||
- `etapes\*` : tous identiques (SHA-256) sauf `5_evaluation.json` (champs `debut`, `fin` seulement : 12:09:57→12:47:11 et 12:28:53→13:06:07). `etat.json` : dates `fin` / `maj` seulement. Ces deux fichiers sont listés à part comme demandé.
|
||||
- Tous les `.json`, `.csv` (`controles_*`, `eval_*`), `rapport.json`, `retarget_pose_*.txt` : identiques. Seul autre écart : `rapport.html`, ligne « Généré le » (12:10:18 → 12:47:32) ; le reste est identique.
|
||||
- Images : le pack n'en contient aucune dans `Saved\AnimPipeline\quaternius\` (0 png/jpg), donc aucun écart.
|
||||
- Avertissements de l'étape 5 (champ `avertissements`) : 8 dans la référence, 8 dans le nouveau, listes identiques (comparées en JSON) :
|
||||
Bridget et Michael — Death01 (sol 5.6 cm lFoot), Fixing_Kneeling (sol 5.2 / 4.4 cm rFoot), Jump_Start (saut 23.1° lForearmBend), Roll (sol 4.8 / 5.0 cm rFoot).
|
||||
|
||||
### freeanims (verdict `ok`, 0 avertissement, identique à la référence)
|
||||
|
||||
- Liste de fichiers : 73 / 73, identique.
|
||||
- `etapes\*` : identiques sauf `5_evaluation.json` (`debut`, `fin`, `duree_s` 435→436) ; `etat.json` : dates seulement.
|
||||
- Tous les `.json` de planches, `.csv`, `rapport.json`, `retarget_pose_*.txt` : identiques. `rapport.html` : seule la ligne « Généré le » diffère (12:31:18 → 13:06:56).
|
||||
- Images qui diffèrent (rendu non déterministe connu, comme à SB1), octets référence → nouveau, 20 fichiers sous `sandbox\` :
|
||||
|
||||
| Fichier | Réf → nouveau |
|
||||
|---|---|
|
||||
| planches\AS_AirKiss.jpg | 148577 → 148578 |
|
||||
| planches\AS_AttackInLevitation2.jpg | 139248 → 139275 |
|
||||
| planches\AS_ChillDriving.jpg | 187537 → 187658 |
|
||||
| planches\AS_ComboHands.jpg | 159892 → 159937 |
|
||||
| planches\AS_EatingOnParty.jpg | 141254 → 141230 |
|
||||
| planches\AS_FlyingUp.jpg | 119045 → 119005 |
|
||||
| planches\AS_GoForward.jpg | 150812 → 150807 |
|
||||
| planches\AS_Rest.jpg | 138425 → 138509 |
|
||||
| planches\AS_RightLegKick2.jpg | 88121 → 88134 |
|
||||
| planches\AS_Talk.jpg | 144201 → 144311 |
|
||||
| vignettes\AS_AirKiss.png | 261470 → 261594 |
|
||||
| vignettes\AS_AttackInLevitation2.png | 252870 → 253367 |
|
||||
| vignettes\AS_ChillDriving.png | 289192 → 289447 |
|
||||
| vignettes\AS_ComboHands.png | 269493 → 269859 |
|
||||
| vignettes\AS_EatingOnParty.png | 263747 → 263094 |
|
||||
| vignettes\AS_FlyingUp.png | 263615 → 264127 |
|
||||
| vignettes\AS_GoForward.png | 257039 → 256848 |
|
||||
| vignettes\AS_Rest.png | 242540 → 242539 |
|
||||
| vignettes\AS_RightLegKick2.png | 265941 → 265573 |
|
||||
| vignettes\AS_Talk.png | 260083 → 259601 |
|
||||
|
||||
Écarts de taille inférieurs à 0,5 %.
|
||||
|
||||
## Observations
|
||||
|
||||
- Écart attendu confirmé (§ 7 de la carte) : au démarrage, ni `Sandbox interaction : action chargee` ni comptage d'actions ; chargés à l'ouverture d'interaction (E2). Un seul `Sandbox Quaternius` par démarrage (E1, E2, E3).
|
||||
- E3 : sans `lps_lib_scene`, le GameMode construit tout de même la pièce (lignes `Sandbox mur`, `Sandbox collision`, `Sandbox eclairage` présentes, en E3 comme en E2) ; seul le registre refuse les mods. Aucun plantage. À noter, non bloquant (la décision D2 ne portait que sur le refus des mods).
|
||||
- `Error` `LogLifePlay: Coiffures : GI.HairstyleTable ou GI.MorphableHairs introuvable` : présent dans chaque lancement, y compris dans les journaux d'avant SB2 (09:36 à 10:38) ; sans lien avec SB2.
|
||||
- `Open=` a été réécrit par la sandbox à chaque ouverture (`lps_asset_integration` après E4) ; remis à l'état demandé.
|
||||
|
||||
## État final (E5)
|
||||
|
||||
- `D:\Game\LifePlay-master 5.5\Saved\sandbox_mods.ini` :
|
||||
```
|
||||
[Mods]
|
||||
Order=lps_couple,lps_interaction,lps_asset_integration
|
||||
Open=lps_couple
|
||||
[Enabled]
|
||||
lps_couple=true
|
||||
lps_interaction=true
|
||||
lps_asset_integration=true
|
||||
```
|
||||
- `Modules\System\0010_lps_lib_scene\lps_lib_scene.lpmod` : présent ; `D:\Game\LifePlay_Backup_5.5\SB2-VAL\0010_lps_lib_scene` : absent (remis à sa place).
|
||||
- Processus `UnrealEditor` : 0. `Saved\sandbox_mode.txt` : `Pair`.
|
||||
- `git -C D:\Game\LifePlay-Sandbox status --short` (non commité, attendu) :
|
||||
```
|
||||
M Plugins/LPSandbox/Modules/Mods/lps_asset_integration/lps_asset_integration.lpmod
|
||||
M Plugins/LPSandbox/Source/LPSandbox/LPPairSandbox.cpp
|
||||
M Plugins/LPSandbox/Source/LPSandbox/LPPairSandbox.h
|
||||
M Plugins/LPSandbox/Source/LPSandbox/LPPairSandboxMenu.h
|
||||
RM Plugins/LPSandbox/Source/LPSandbox/LPCoupleSim.cpp -> Plugins/LPSandbox/Source/LPSandbox/LPSandboxCoupleMod.cpp
|
||||
M Plugins/LPSandbox/Source/LPSandbox/LPSandboxInteraction.cpp
|
||||
M Plugins/LPSandbox/Source/LPSandbox/LPSandboxMeasure.cpp
|
||||
M Plugins/LPSandbox/Source/LPSandbox/LPSandboxMeasureTour.cpp
|
||||
M Plugins/LPSandbox/Source/LPSandbox/LPSandboxMod.h
|
||||
M Plugins/LPSandbox/Source/LPSandbox/LPSandboxModRegistry.cpp
|
||||
M Plugins/LPSandbox/Source/LPSandbox/LPSandboxModRegistry.h
|
||||
M Plugins/LPSandbox/Source/LPSandbox/LPSandboxModWrappers.cpp
|
||||
RM Plugins/LPSandbox/Source/LPSandbox/LPSandboxRoomBuilder.cpp -> Plugins/LPSandbox/Source/LPSandbox/LPSandboxScene.cpp
|
||||
?? Plugins/LPSandbox/Source/LPSandbox/LPSandboxActors.cpp
|
||||
?? Plugins/LPSandbox/Source/LPSandbox/LPSandboxActors.h
|
||||
?? Plugins/LPSandbox/Source/LPSandbox/LPSandboxCamera.cpp
|
||||
?? Plugins/LPSandbox/Source/LPSandbox/LPSandboxCamera.h
|
||||
?? Plugins/LPSandbox/Source/LPSandbox/LPSandboxCoupleMod.h
|
||||
?? Plugins/LPSandbox/Source/LPSandbox/LPSandboxInteractionMod.h
|
||||
?? Plugins/LPSandbox/Source/LPSandbox/LPSandboxMeasureMod.h
|
||||
?? Plugins/LPSandbox/Source/LPSandbox/LPSandboxScene.h
|
||||
```
|
||||
|
||||
## Reste à l'utilisateur : contrôle visuel
|
||||
|
||||
- Couple, Interaction, Asset integration : chaque mod s'ouvre depuis la barre latérale et se comporte comme l'ancien mode (touches 1/2, déplacement, pastille E, chat, filtres, vues, marche, panneau Mesure).
|
||||
- Enchaînement couple → interaction → asset integration → couple sans résidu (caméra, boîte du couple, collision, animation).
|
||||
- Écarts attendus à constater : panneau du mod placé sous la rangée Corps (D5) ; scène neutre sans couple (D3).
|
||||
- Observation O1 de la carte : pièce visible ou non après une Mesure (à confirmer à l'écran).
|
||||
- Images freeanims qui diffèrent (20 fichiers du tableau).
|
||||
|
||||
## Verdict global de la partie automatique
|
||||
|
||||
**PASS** : E1, E2, E3, E4 (quaternius `avertissement` avec les 8 mêmes avertissements, freeanims `ok`) et E5 satisfaits ; seuls écarts : dates, `rapport.html` (date de génération) et 20 images freeanims (rendu non déterministe). Aucun plantage, aucun `Error` du module LPSandbox. Contrôle visuel restant à l'utilisateur.
|
||||
|
||||
|
||||
## Contrôle visuel utilisateur (2026-10-07)
|
||||
|
||||
| Critère | Verdict |
|
||||
|---|---|
|
||||
| (a) chaque mod s'ouvre depuis la barre latérale et se comporte comme l'ancien mode | PASS (« tout est conforme ») |
|
||||
| (b) enchaînement couple, interaction, asset integration, couple sans résidu | PASS (« tout est conforme ») |
|
||||
| (c) mod décoché non ouvrable ; décocher le mod ouvert ramène la scène neutre | PASS (« tout est conforme ») |
|
||||
| Scène neutre sans couple (D3) | PASS (« tout est conforme ») |
|
||||
| Panneau du mod sous la rangée Corps (D5) | PASS (« tout est conforme ») |
|
||||
| Images freeanims (20 fichiers qui diffèrent) | PASS (« tout est conforme ») |
|
||||
| O1 : pièce visible après une Mesure | **Confirmé par l'utilisateur** (« les murs sont invisibles » en revenant de Mesure à Couple) : défaut préexistant, conservé à l'identique par SB2 (SB2-CART § 8), hors périmètre SB2 |
|
||||
|
||||
## Verdict global du lot SB2
|
||||
|
||||
**PASS** (partie automatique E1 à E5 + contrôle visuel utilisateur). O1 confirmé, non corrigé (hors périmètre).
|
||||
|
||||
## Modèles par fiche
|
||||
|
||||
| Fiche | Modèle prévu | Modèle utilisé |
|
||||
|---|---|---|
|
||||
| SB2-T0 | haiku | haiku |
|
||||
| SB2-T1 | opus | opus |
|
||||
| SB2-T2 | opus | opus |
|
||||
| SB2-T3 | opus | opus |
|
||||
| SB2-T4 | haiku | haiku |
|
||||
| SB2-T5 | sonnet | sonnet |
|
||||
| SB2-T6 | sonnet | sonnet |
|
||||
Loading…
Reference in a new issue