Charge le plugin via AdditionalPluginDirectories, conserve ShowCouple et les commandlets anim côté jeu, et documente les lots S0–S8 (CHG-212 à CHG-220). Co-authored-by: Cursor <cursoragent@cursor.com>
5.1 KiB
5.1 KiB
S7-T3 - Cartographie de conformite du plugin LPSandbox (contrat S7-SPEC)
- Fiche : S7-T3 | Role : CART | Date : 2026-10-06
- Cible :
D:\Game\LifePlay-Sandbox\Plugins\LPSandbox\Source(modulesLPSandbox,LPAnimMeasure) - Outil :
rg(ripgrep). Compte hors commentaires precise quand applicable.
Resultats des grep exiges
| # | Motif | Portee | Resultats | Attendu |
|---|---|---|---|---|
| 1 | #include <LifePlay.h> / "LifePlay.h" |
Source/** |
0 | 0 |
| 2 | LIFEPLAY_API |
Source/** |
0 | 0 |
| 3 | "LifePlay" ou "LifePlayEditorTools" (module) |
*.Build.cs |
0 | 0 |
| 4 | ^\s*#include.*LifePlay (tout include mentionnant LifePlay) |
Source/** |
0 | 0 |
| 5 | LifePlay (mot, tous contextes) |
Source/** |
16 | commentaires + 1 nom de section ini (voir ci-dessous) |
| 6 | SpawnActor.*Person, ConstructorHelpers, TSubclassOf<, TObjectPtr<APerson |
Source/** |
0 | 0 |
Detail #5 (16 hits) : 15 sont des commentaires (provenance, regles de dependance ; ex. LPAnimMeasure.Build.cs:3, LPCoupleSim.h:11). Le 16e est LPAnimRedirect.cpp:37 :
GConfig->GetString(TEXT("LifePlay.Anim"), TEXT("Target"), ...) : nom de section d'un fichier .ini (donnee), pas une dependance de code.
Cases du contrat
C1 - Aucun lien vers LifePlay
- Aucun
#include "LifePlay.h"ni header du module jeu (grep #1, #4 : 0). - Aucun
LIFEPLAY_API(grep #2 : 0). - Aucune dependance de module
LifePlay/LifePlayEditorToolsdans les*.Build.cs(grep #3 : 0 ;LPSandbox->Core,CoreUObject,Engine,InputCore,SlateCore,LPAnimMeasure,Slate,ImageWrapper,AssetRegistry,Json;LPAnimMeasure->Core,CoreUObject,Engine,Json). - Aucun chemin
Source/LifePlayhors commentaires. - Graphe acyclique
LPSandbox -> LPAnimMeasure;LPAnimMeasuresans dependance versLPSandbox(verifie dansLPAnimMeasure.Build.cs).
C2 - Aucun chargement de graphe GI / Person / Room
- Aucune reference a
GIdu jeu :\bGI\b,BPs/GI,BPs/Room,BP_Room-> 0 sur le code (le motif\bRoom\bdonne 66 hits : tous des variables localesALPPairSandboxStage* Room, type du plugin, aucune relation avec le BlueprintRoomdu jeu). Person: lecture de CDO uniquement. Deux sites, tous deuxLoadObject<UClass>(nullptr, *FLPSandboxConfig::Get().PersonBP)puisGetDefaultObject():LPSandboxRoomBuilder.cpp:119-120;LPCoupleSim.cpp:39-40. AucunSpawnActordePerson, aucunCallFunctionByName. Le seulProcessEventdu plugin (LPSandboxRoomBuilder.cpp:308) viseBP_Sky_Spheredu moteur.
- Chemin du Blueprint :
Config/LPSandbox.ini[Sandbox.Assets] PersonBP(defaut/Game/BPs/Person.Person_C,LPSandboxConfig.h:15). - Lanceur :
GameInstanceClass=/Script/Engine.GameInstance(Tools/debug/LifePlay_pair_sandbox.bat) ; le journal runtime confirmeGame class is 'LPPairSandboxGameMode'et « profil Person lu ». L'uniqueLogLifePlay: Error: Coiffures : GI.HairstyleTable ...est emis par le module jeu (categorieLogLifePlay, pasLogLPSandbox) : erreur connue (S3-VAL, S4-VAL, S5-VAL), non liee au plugin.
C3 - SoftObjectPath / config seulement
- Aucun
ConstructorHelpers,TSubclassOf<>niTObjectPtr<>vers un type du jeu (grep #6 : 0). - Un seul litteral
/Game/hors config :LPAnimRedirect.cpp:17(/Game/Quaternius/UAL), defaut interne documente (S2), surcharge parLPAnimRedirect::SetUALRoot(poussee par le module jeu depuis la config) ; asset de contenu tiers, pas de code du jeu. LoadObjectpar chaine (config) etAssetRegistry+GetSoftObjectPath().ToString()(LPCoupleSim.cpp:227,236) pour Quaternius.- Repli au litteral historique si fichier/cle absents (S1) ; journal
LogLPSandboxsur asset introuvable.
C4 - Montage sibling documente
- Layout sibling + decision « pas de submodule » :
21_Sandbox_Addon.md(section S3) etS3-INT.md. LifePlay.uproject:AdditionalPluginDirectories=../LifePlay-Sandbox/Plugins;LPSandboxEnabled: true,Optional: true(S7-T2).- Pin consigne :
S3-INT.md(maj S7-T4 ->f09c42e). - README de l'addon : layout, clone sibling, junction
Content(S3).
C5 - Configurations
SupportedTargetPlatforms: ["Win64"].LPSandbox:TargetConfigurationDenyList: ["Shipping"].LPAnimMeasure: aucune deny-list.- Pas de
TargetAllowList: ["Editor"].
Ecarts / observations
| # | Observation | Gravite |
|---|---|---|
| 1 | LoadObject<UClass>(PersonBP) charge le package Person (donnees serialisees) : le contrat C2 interdit l'execution, pas ce chargement ; inevitable pour lire le CDO. |
Info |
| 2 | Section ini [LifePlay.Anim] lue par LPAnimRedirect : couplage de nom (donnee), pas de code. |
Info |
| 3 | Optional: true ne dispense pas du clone sibling pour compiler le jeu (LifePlay.Build.cs -> LPAnimMeasure). |
Limite (documentee S7-IMPL-L) |
Verdict CART : conforme (0 ecart bloquant).