5.3 KiB
Fiche STG-SF5k — Niveau N2 — Modèle prévu claude-opus-5-5 | utilisé claude-opus-5-5
IMPL C++ pour COMMUN-6 (décision de l'utilisateur rapportée par Big Boss, 2026-10-14 : « on poursuit les corrections avant l'alpha ») :
- Variante façades, partie C++ : S-F4b ne bascule plus en Pawn Ignore un décor
fnt_ext*dont leBodySetupest enCTF_UseComplexAsSimple. - S-F5k : écarter de 50 cm, le long du bord, une personne relevée quand une autre est à moins de 50 cm.
Écrit sans compiler, sous instantané, à partir de S-F5j (E84D59D6 / DFC20AD4) ; VAL statique par un agent distinct. La partie
asset (fnt_ext001) est une fiche MCP à part (fiches/STG-FACADE.md). Lot STG, registre STG-TACHES.md. Analyse :
STG-COMMUN5-ANALYSE.md § 5 et § 7.
1. Instantané et MD5
| Fichier | Avant | Après |
|---|---|---|
Source/LifePlay/LPOutdoorRoomSubsystem.cpp |
E84D59D6EC29052607DC5D8611566FA0 |
90F9324BE06A4EAB10E105AA9D78F137 |
Source/LifePlay/LPOutdoorRoomSubsystem.h |
DFC20AD4CE48B3FDA3037F82586B6BDE |
F9ED4D2DF44AF11163C0E3FBB3B4A4CA |
Instantané D:\Game\LifePlay_Backup_5.5\STG-SF5k\manifest.csv (pwsh, chemins entre guillemets simples, 2 copies). LF, ASCII pur.
Diff : STG-SF5k.diff (format diff classique, .cpp puis .h). Script d'écriture dans le scratchpad de la session (le heredoc Bash
refusait les apostrophes des commentaires), hors dépôt.
2. Gestes
Façades (S-F4b) :
#include "PhysicsEngine/BodySetup.h";- membre
SolidDecor(.h) ; - dans
IgnoreOutdoorDecor, avant la bascule : siAsset->GetBodySetup()->CollisionTraceFlag == CTF_UseComplexAsSimple, le décor est laissé en Pawn Block, ajouté àSolidDecor, avec une ligne « Piece exterieure : decor () en collision complexe, laisse en Pawn Block » par entrée en extérieur ; SolidDecorest vidé parRestoreDecor(àDeinitialize, ou en intérieur si un décor était en Ignore) et nettoyé des composants détruits (correction après la VAL, R2 : si la street n'a quefnt_ext001, solide, la liste n'est vidée qu'au nettoyage ; sans effet sur la collision).- Réserve de la VAL (R3) : le voisin peut être le joueur, et le joueur relevé peut maintenant être écarté de 50 cm sur le côté (S-F5j le relevait seulement à la verticale), toujours derrière les gardes de S-F5j.
Effet : seul un asset converti (fnt_ext001 après la fiche MCP) reste solide. Les autres fnt_ext* gardent S-F4b. Sans la
conversion de l'asset, le comportement est inchangé.
S-F5k (LiftSunkPersons), au moment du relevage, après toutes les gardes de S-F5 et de S-F5j, qui sont inchangées :
- recherche d'une autre personne (
ACharacter) visible, avec collision, à moins de 50 cm en 2D (LiftSpacing) ; - si elle existe, trois points sont essayés dans l'ordre :
- 50 cm le long du grand axe de la pièce (axe Y si l'échelle Y de la racine de Room est la plus grande : la longueur de la rue, parallèle au bord), du côté opposé au voisin ;
- 50 cm de l'autre côté ;
- sur place ;
- sinon, seulement sur place (comportement de S-F5) ;
- pour chaque point, la même descente balayée de la capsule. Un point où la capsule part dans un volume (
bStartPenetrating) est sauté ; si aucun ne convient, pas de relevage à cet examen ; - la ligne « %s%s releve de … » est inchangée, plus une ligne « Piece exterieure : ecarte de cm (voisin a cm, S-F5k) » quand un voisin a été trouvé.
Cas de COMMUN-5 (…932 / …908, 23,4 cm en y au même bord) : le premier relevé est écarté de 50 cm en y (73 cm du second). Le second,
relevé ensuite, n'a plus de voisin à moins de 50 cm : il est relevé sur place.
Nouveaux noms : LiftSpacing (espace anonyme) et SolidDecor (membre), présents seulement dans ce fichier et son en-tête.
3. Points à confirmer en VAL
- P1 : diff limité au § 2.
- P2 : API UE 5.8 :
UStaticMesh::GetBodySetup(const),UBodySetup::CollisionTraceFlag,CTF_UseComplexAsSimple,PhysicsEngine/BodySetup.haccessible au module,TArray<FVector, TInlineAllocator<3>>,AActor::GetActorRightVector,GetActorForwardVector,USceneComponent::GetComponentScale,FVector::GetSafeNormal,FVector::Dist2D, affectation deFHitResult. - P3 : gardes de S-F5j intactes et toujours avant tout déplacement (joueur qui pilote, menu,
Scene_C, meuble, scène,SexOn) ; un seulSetActorLocation. - P4 : le décor complexe n'est jamais mis en Ignore, et tout ce qui est en Ignore est toujours rendu (
RestoreDecorinchangé) ; printf (arguments = spécificateurs). - P5 : compilation (BUILD COMMUN-6).
4. Essai prévu (COMMUN-6)
- Street, après la conversion de
fnt_ext001:- une ligne « decor … (fnt_ext001) en collision complexe, laisse en Pawn Block » ;
- plus de ligne « decor(s) fnt_ext en Pawn Ignore » pour la street ;
- les façades sont solides ; on marche sur les trottoirs, le long de la rambarde et des bordures.
- Plage ou forêt : S-F4b inchangé (« … en Pawn Ignore »).
- Deux passants posés au même bord : lignes « releve de » et « ecarte de 50.0 cm (voisin …) », sans
CLOSEentre eux ensuite.
5. Fichiers à commiter
Source/LifePlay/LPOutdoorRoomSubsystem.cpp, .h (après build et VAL), Docs/Migration/etat/ST/STG/STG-SF5k-IMPL.md,
STG-SF5k.diff, STG-SF5k-VAL.md.