LifePlay-Revival/Docs/Migration/etat/ST/STG/STG-SF5k-IMPL.md
edujiro5972 8084622450 LifePlay UE 5.8 : état de développement au 2026-10-19
Tickets : REP1-T4

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 22:57:42 +02:00

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 ») :

  1. Variante façades, partie C++ : S-F4b ne bascule plus en Pawn Ignore un décor fnt_ext* dont le BodySetup est en CTF_UseComplexAsSimple.
  2. 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 : si Asset->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 ;
  • SolidDecor est vidé par RestoreDecor (à 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 que fnt_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 :
    1. 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 ;
    2. 50 cm de l'autre côté ;
    3. 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.h accessible au module, TArray<FVector, TInlineAllocator<3>>, AActor::GetActorRightVector, GetActorForwardVector, USceneComponent::GetComponentScale, FVector::GetSafeNormal, FVector::Dist2D, affectation de FHitResult.
  • P3 : gardes de S-F5j intactes et toujours avant tout déplacement (joueur qui pilote, menu, Scene_C, meuble, scène, SexOn) ; un seul SetActorLocation.
  • P4 : le décor complexe n'est jamais mis en Ignore, et tout ce qui est en Ignore est toujours rendu (RestoreDecor inchangé) ; printf (arguments = spécificateurs).
  • P5 : compilation (BUILD COMMUN-6).

4. Essai prévu (COMMUN-6)

  1. 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.
  2. Plage ou forêt : S-F4b inchangé (« … en Pawn Ignore »).
  3. Deux passants posés au même bord : lignes « releve de » et « ecarte de 50.0 cm (voisin …) », sans CLOSE entre 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.