LifePlay-Revival/Docs/Migration/etat/CAM/CAM-T2-CART.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

27 KiB
Raw Blame History

Fiche CAM-T2 — Niveau N3 — Modèle prévu opus | utilisé claude-opus-5-5 — Agent lp-cart — Skills sk-protocol, lp-commandlets (préchargés présents : ue-cpp-build, lp-paths)

CAM-T2-CART : caméras des graphes Blueprint et chaînes d'activation, d'après les dumps existants (2026-10-11)

Copie D:\Game\LifePlay-master 5.8, branche ue5.8, HEAD 4283c13 (git rev-parse --short HEAD). Lecture seule. Abréviations de chemins : PC = Docs/Migration/etat/ST/STE/dumps/PC__EventGraph.txt ; GI = .../ST/STE/dumps/GI__EventGraph_V5.txt ; GICF = .../ST/STE/dumps/GI__CallFunction_V5.txt ; ROOM = .../ST/STE/dumps/Room__EventGraph_V5.txt ; MM = .../ST/STB/dumps/MainMenu__EventGraph.txt ; PERS = .../portage55/L6f/L6f_dump_Person.txt ; CLSC = .../portage55/L6f/L6f_components_CentralLondon_SceneCapture.txt. « Mort » = nœud dont l'entrée d'exécution est execute (vide) dans le dump.

Tableau récapitulatif

# Caméra Où Type Qui l'active (preuve) Suit le MC Vivante / morte Rôle apparent
K1 GI.Birdview (classe Birdview_C) acteur placé dans CentralLondon.umap (chaînes Birdview_C, Default__Birdview_C du .umap) ; classe fille de CameraActor (chaînes Default__CameraActor, CameraActor de Birdview.uasset) CameraActor (BP) PC BeginAutoLoad → SetViewTargetWithBlend(Birdview) (PC:521-529, 2762-2779) ; GI ShowRender → SetViewTargetWithBlend(Birdview) (GI:3144-3152, 13229-13233) non attachée ; déplacée par les entrées (PC:616-625, 743-747, 3092-3121) et PanToBuilding (GI:628-633) ; aucun suivi du MC vu (graphe de Birdview non dumpé) vivante vue de dessus / carte de la ville
K2 GI.ChargenCameras[0] = Room.SceneCamera CameraActor placé dans CentralLondon.umap (estimé : chaînes CameraScene, CameraFullBody, CameraPortrait, ChargenCameras du .umap) ; copié dans Room.SceneCamera au BeginPlay de Room (ROOM:404-416, 420-426) CameraActor (CameraComponent lu : MM:1547-1549, ROOM:2033-2035) GI HideRender(0) → SetViewTargetWithBlend(ChargenCameras[CurrentCamera]) (GI:772-775, 4452-4466, 3117-3125) ; fin de sexe (GI:14505-14513) ; PC SwitchCamera/ResetCamera index 0 (PC:1752-1760, 2351-2355, 3344-3346) non attachée ; AutoCamera la tourne vers la tête du MC et la recale par rapport au MC (ROOM:3406-3593, 3796-3872) ; position par défaut GI.CameraSceneTransformDefault (ROOM:1250-1263) vivante caméra de pièce / de scène ; CharGen index 0
K3 GI.ChargenCameras[1] idem K2 (ordre du tableau non prouvé) CameraActor (estimé) GI OpenContacts → HideRender(StartingCamera=1) (GI:6252-6254, 6226-6234) ; ZoomCharGen (GI:879-881, 4417-4448) non (position fixe ; aucun déplacement vu) vivante contacts / CharGen (portrait ou plein pied : incertain)
K4 GI.ChargenCameras[2] idem K2 CameraActor (estimé) seulement ZoomCharGen : CurrentCamera = (CurrentCamera < 2) ? CurrentCamera + 1 : 0 (GI:4423-4441) non vivante (par ZoomCharGen) CharGen (zoom)
K5 Person.FirstPersonSM (classe FirstPerson_C) composant de Person (chaînes FirstPersonSM, FirstPersonSM_GEN_VARIABLE, FirstPerson_C de Person.uasset) ; FirstPerson.uasset = BP fils de CameraComponent (chaînes Default__CameraComponent, BlueprintSpawnableComponent) CameraComponent (BP) PC SwitchCamera pendant le sexe : SetViewTargetWithBlend(SexPersons[i]) après attache de FirstPersonSM au socket head (PC:3312-3317, 2263-2266, 3378-3396, 3364-3373, 1788-1796) attachée à la tête de SexPersons[i] (MC ou partenaire), seulement pendant le sexe vivante sous SexOn 1re personne (POV)
K6 SecondScreen, FaceCapture acteurs SceneCapture2D du niveau CentralLondon (CLSC:2, 252) SceneCapture2D, pas une caméra de vue GI secondScreen() (GI:25826-25843), appelé par l'événement Sex (GI:6762-6764) sans objet vivante rendu vers texture (second écran, visage)
K7 Pawn par défaut (Pawn_C) Pawn.uasset (chaînes AutoPossessPlayer, bUseControllerRotation*, aucune chaîne Camera) ; GM.uasset chaîne DefaultPawnClass Pawn sans caméra (estimé) aucun Possess dans les dumps PC et GI sans objet vue implicite avant le 1er SetViewTarget (estimé) aucun rôle de caméra prouvé

Hors caméra de vue (piège 5 de la fiche) : CameraShake_C (LegacyCameraShake, effet) joué par PlayWorldCameraShake (GI:10868-10873, événement Cum, GI:10803-10805, 27673-27676) ; action d'animation camera de Person = accessoire tenu en main (spawnProp socket rHand, PERS:34797, 35399-35404). Caméras de rue en enfilade : aucune trouvée. Caméra de plafond : aucune trouvée. SpringArm : aucun.

1. Objet et périmètre

Domaine : caméras de vue des Blueprints et leurs chaînes d'activation (qui active, quand, suivi du MC, vivante/morte), d'après les dumps texte présents sur disque. Hors périmètre : C++ et .ini (CAM-T3), comptage dans les .uasset (CAM-T1). Fonctions C++ vues depuis les BP (noms seulement) : LPUserSettingsLibrary::ApplyCameraSpeedAtStartup (GI:30024-30028). Version des sources : GI et Room = V5 (HEAD selon la fiche) ; PC = dump STE-D du 2026-10-10 11:31 (PC:1-3), postérieur au dernier commit de PC.uasset (809102a, 2026-10-08) ; Person = L6f (2026-09-30), antérieur au dernier commit de Person.uasset (ee2821a, 2026-10-09) ; MainMenu = STB, dernier commit de MainMenu.uasset 547dcdd (2026-10-10).

2. Commandes et lectures (exactes) avec compte brut

Commande / lecture Compte brut
Grep "(?i)camera|viewtarget|springarm|TargetArmLength|FieldOfView|Possess" sur PC 66 lignes ; 0 SpringArm, 0 TargetArmLength, 0 FieldOfView, 0 Possess
Grep "(?i)camera|viewtarget|springarm|TargetArmLength|FieldOfView|possess|birdview|firstperson|secondscreen|POVOn" sur GI 113 lignes ; 0 SpringArm / ArmLength / FieldOfView / Possess
Grep "(?i)camera|viewtarget|springarm|TargetArmLength|FieldOfView|possess|birdview|firstperson|secondscreen|ceiling" sur ROOM 122 lignes ; Room = 1010 nœuds (ROOM:1)
Grep -c "SetViewTarget|CameraComponent|SpringArm|CameraActor|TargetArmLength|FieldOfView|Birdview_C|FirstPersonSM|ChargenCameras" sur Docs/Migration/etat/**/*.txt 832 occurrences dans 42 fichiers
SetViewTargetWithBlend dans les dumps HEAD PC : 3 nœuds (PC:521, 1752, 1788) ; GI : 4 nœuds (GI:3117, 3132, 3144, 14505) ; Room : 0
Grep "VariableSet_\d+ +variable '(Birdview|ChargenCameras|BirdviewOriginal|CameraSceneTransformDefault|PC|Wall)'" sur etat/**/*.txt 2 lignes, toutes PC := self (PC:190) : aucun dump n'écrit Birdview ni ChargenCameras
grep -a -o "[A-Za-z_][A-Za-z0-9_]\{3,\}" <uasset> | sort | uniq -c filtré camera/view/arm/fov/spring/… sur Content/BPs/{Birdview,FirstPerson,CameraShake,Pawn,SecondScreenFloor,GM}.uasset, puis Scenes/CentralLondon.umap, BPs/{Person,PC,GI}.uasset, UI/ContactMenu.uasset chaînes citées dans 3 ; tailles : Birdview 925 792 o, FirstPerson 6 348, CameraShake 7 392, Pawn 24 691, SecondScreenFloor 25 116, GM 21 349
grep -rl -a "<motif>" --include=*.uasset --include=*.umap Content ChargenCameras : 6 fichiers (GI, PC, Room, CentralLondon.umap, UI/ContactMenu, UI/MainMenu) ; FirstPerson_C : 4 (FirstPerson, PC, Person, CentralLondon.umap) ; Birdview_C : 11 (Birdview, GI, PC, Room, CentralLondon.umap, UI/ContactMenu, Cursor, Recommend, SearchResult, Shortcut, TopRight) ; CameraShake_C : 2 (CameraShake, GI)
Grep camera sur post-v1/PawnDyn/*, post-v1/PawnGlobal/* ces dumps portent sur Room, pas sur Pawn (-BP=Room, PawnDyn_LPDumpComponents_20261004-223842.txt:1, PawnGlobal_LPDumpFunction_20261004-222937.txt:1) ; composants de Room : StaticMeshComponent0, Box, Wall1-4, WallT, aucune caméra (PawnDyn_LPDumpComponents_20261004-223842.txt:32-41)
post-v1/STUDIO-EST/* (CharGen, BodyShapeMenu, BodyShape, CharGenSlider, Preset, FaceTexture) 0 occurrence camera|viewtarget|spring dans les 6 fichiers
AP5_LPDumpFunction_20261006-134746/134949.txt asset dumpé = Room (-BP=Room -Fn=*, ligne 1 de -134949), version du 2026-10-06 ; fonctions getFocalDistance (l. 2293) et isPointInsideRoom (l. 4026) lisent SceneCamera
STE-V5_LPDumpFunction_20261010-231918.txt asset = Room EventGraph (l. 1), même contenu caméra que ROOM
git log -1 -- Content/BPs/<x>.uasset PC, Birdview, FirstPerson, Pawn, GM, ContactMenu, CentralLondon : 809102a (2026-10-08) ; Person ee2821a (2026-10-09) ; Room, GI 4283c13

3. Constats fichier:ligne

3.1 K1 Birdview (vue de dessus)

  • Activation au chargement : BeginAutoLoad (PC:2762-2765) → GI.AutoLoad (PC:1424-1428) → Delay (PC:1435-1437) → si TopRight visible (PC:2772-2779) → SetViewTargetWithBlend(self, GI.Birdview), BlendTime 0, VTBlend_Linear (PC:521-529) → GamePaused := AutoPauseAfterAction → Birdview.AskForHover (PC:1429-1434, 1709-1712). Branche else vide : si TopRight n'est pas visible, aucune vue n'est posée ici (PC:2779).
  • Retour à la vue de dessus : ShowRender (GI:776-778) → SetVisibility (GI:794-797) → IfThenElse_213 (GI:30074-30077) → SetActorHiddenInGame(MapMarkers, StreetMapStatic, false) (GI:13229-13233) → SetViewTargetWithBlend(PC, Birdview), blend 0 (GI:3144-3152) → SpaceOn := false (GI:23939-23944). Appelants de ShowRender : CloseSpace (GI:23574-23576, 23613-23616, 23658-23660, 23583-23586, 23601-23604), CloseContacts sans NPCSelector (GI:6235-6239), sortie du mode construction de Room (ROOM:1246-1249, puis ResetSceneCamera ROOM:1296-1298 et BuilderOn := false ROOM:1290-1293).
  • Commandes (PC → fonctions de Birdview_C) : RotateCamera(AxisValue CursorY) si MoveCamera et pas de sexe (PC:583-586, 597-609, 616-620, 629-633) ; CircleCamera(leftright) (PC:621-625) ; ScrollDownUp(downup) si pas de sexe (PC:735-739, 743-747) ; DownUpBirdview (axe DownUp, PC:3043-3046, 3087-3096) ; LeftRightBirdView (axe LeftRight, PC:3097-3121). MoveCamera : vrai à l'appui, faux au relâchement de InputAction_50 et des événements StartMoveCamera/StopMoveCamera (PC:547-562, 2852-2857).
  • PanToBuilding(Building) depuis GI (GI:628-633). ResetCameraAndPlayer : Birdview.SetActorTransform(BirdviewOriginal) puis StreetMapStatic.PlayerWC.SetRelativeTransform((20000,0,0)) (GI:4881-4918), appelé par CloseCityMenu si Changed (GI:4648-4652, 4943-4955). Transformation sauvegardée/rechargée (BirdeyeTransform, GI:9405-9446).
  • OpenSpace n'agit que si la cible de vue est Birdview (GI:23571-23573, 23669-23672, 23677-23686).
  • Fonctions internes de Birdview (chaînes de Birdview.uasset) : CheckIfCameraMovable, PreventCameraMove, CameraSpeed, FindLookAtRotation, isScreenPositionOccupied, SpawnMarker, OrthoWidth, OrthoNearClipPlane, bAutoCalculateOrthoPlanes : incertain, dump requis (aucun dump du graphe de Birdview).

3.2 K2-K4 GI.ChargenCameras[] (caméra de pièce, CharGen, contacts)

  • HideRender(StartingCamera) (GI:772-775) → IfThenElse_212 / SetVisibility(RootComponent, false) (GI:30049-30063) → CurrentCamera := StartingCamera (GI:4452-4457) → SetViewTargetWithBlend(PC, ChargenCameras[CurrentCamera]), blend 0 (GI:3117-3125, 4458-4466) → PlayerCharacter.ShowAppropriateGenital (GI:17489-17492).
  • Appelants de HideRender (valeur de StartingCamera) : Room EditBedroom → HideUI → HideRender(0) (ROOM:5-7, 28-36) ; GI : après StripAll/MoveCharacterBeingEdited (édition de personnage) 0 (GI:4397-4400, 3863-3866, 750-752, 803-807) ; après StopMoodTimer 0 (GI:22424-22427, 4293-4301, puis MoveCharacterBeingEdited et Room.ResetSceneCamera, GI:23975-23985) ; démarrage de scène si SpaceOn faux 0 (GI:23705-23708, 5866-5870, puis CreateSceneWidget GI:6086-6088) ; OpenContacts 1 (GI:6252-6254, 6226-6234) ; CloseContacts si NPCSelector 0 (GI:6259-6262, 17481-17484, 17470-17474) ; OpenSpace → SpaceOn := true → Exit Action Menu → 0 (GI:23577-23580, 23592-23600).
  • ZoomCharGen → CurrentCamera := SelectInt(CurrentCamera+1, 0, CurrentCamera < 2) → SetViewTargetWithBlend(PC, ChargenCameras[CurrentCamera]) (GI:879-881, 4417-4448, 3132-3140) : le tableau a au moins 3 entrées (estimé).
  • Fin de sexe : SexOn := false (GI:21018-21020) → Room.UpdateDOF → UpdatePartnerList → ForEach SexPersons → Completed → SetViewTargetWithBlend(PC, ChargenCameras[0]) (GI:22144-22146, 21319-21321, 6992-6998, 14498-14513).
  • Room : SceneCamera := GI.ChargenCameras[0] après ForEach AllComponents + Delay 1 s au ReceiveBeginPlay (ROOM:2-4, 289-295, 420-426, 404-416), puis TestAutoCamera (ROOM:3456-3459), événement vide (ROOM:3453-3455).
  • Déplacements de SceneCamera dans Room, tous conditionnés par BuilderOn OR SexOn OR SpaceOn (ROOM:1326-1331, 1335-1340) : ScrollDownUp (avance en X local, Values × 1.5 × CameraSpeed, ROOM:394-397, 427-475, 551-555, 713-717), LeftRight (Y local, ROOM:492-550), DownUp (Z, ROOM:482-485, 566-627), CircleCamera (lacet, ROOM:629-662), RotateCamera (tangage, ROOM:665-700). Ces événements de Room ne sont appelés par aucun nœud de PC (PC n'appelle de Room que SelectUnderCursor, StartMoveObject, StopMoveObject, AddLightOptions, refreshIdleDummies, UpdateDOF : PC:3911-3936, 4019-4022, 4527-4531, 5001-5004) ; leur appelant est inconnu (estimé : Birdview relaie, chaînes CircleCamera, RotateCamera, DownUp, LeftRight, ScrollDownUp dans Birdview.uasset).
  • ResetSceneCamera → SceneCamera.SetActorTransform(GI.CameraSceneTransformDefault) (ROOM:1250-1270) ; appelée par GI après RestartAnimation (GI:23872-23874, 23935-23938) et après MoveCharacterBeingEdited (GI:23975-23985), par Room (ROOM:1296-1298, 1924-1926).
  • AutoCamera (ROOM:3406-3408) : si la cible de vue est SceneCamera (ROOM:3428-3439), PlayerHead := PlayerCharacter.Mesh socket head (ROOM:3441-3447, 3513-3518) ; isPointInsideRoom(caméra) (ROOM:3796-3801) ; SetActorRotation(SceneCamera, FindLookAtRotation(caméra, PlayerHead)) si la tête sort de l'écran (ROOM:3448-3452, 3482-3486, 3522-3539) ; si la caméra est hors pièce et la tête dans la pièce : 10 pas de (PlayerHead - caméra)/10 jusqu'à rentrer (ROOM:3805-3872) ; sinon SetActorLocation(SceneCamera, (-3131543, -14967213, 75) + (PlayerCharacter.Location - GI.ActorTransforms[3].Location)) (ROOM:3547-3593, 3816-3820) ; puis UpdateDOF. Appel : CallFunction_363 depuis IfThenElse_63.else (ROOM:3873-3876, 4068-4072), amont non remonté. Minuterie SetTimerDelegate(AutoCamera, 1 s, boucle) morte (ROOM:3643-3653).
  • CameraFocusPoint(Loc) → SetActorRotation(SceneCamera, LookAt) (ROOM:4404-4410, 4431-4434). CameraFocus(Person) → SetActorRotation avec self (vide) : la cible est l'acteur Room, pas SceneCamera (ROOM:4396-4399, 4435-4439) — constat, effet en jeu non vérifié.
  • Commandes de script de scène (GI.CallFunction, SwitchString_22, GICF:209-219) : cameraMove → Room.SceneCamera.SetActorTransform(Location, Rotation des paramètres, échelle 1) puis UpdateDOF (GICF:6179-6203) ; cameraFocus → Room.CameraFocus(Person) (GICF:6292-6299) ; CameraFocusPoint (GICF:6469) ; cameraLock / cameraUnlock → PreventCameraMove := true / false (GICF:6730-6739). PreventCameraMove := false aussi en GI:28028-28031.
  • Profondeur de champ : UpdateDOF → SceneCamera.CameraComponent.PostProcessSettings.DepthOfFieldFocalDistance := getFocalDistance() ou 0 (ROOM:2004-2095) ; réglage → ChargenCameras[0].CameraComponent.PostProcessSettings. DepthOfFieldFarBlurSize (GI:21058-21106, puis CameraSpeed GI:11926-11930) ; MainMenu SpinBox_0 écrit le même champ (MM:1532-1564). CameraSpeed lu depuis GameSettingsInstance (GI:11902-11907).
  • Lecteurs de Room.SceneCamera dans Person (dump L6f, antérieur à HEAD) : updateButtonSize (PERS:13585, 13601-13649) ; dans l'EventGraph, if GetViewTarget == SceneCamera → SetActorRotation(SceneCamera, LookAt(tête du MC)) mort (IfThenElse_70 execute (vide), PERS:34520-34580).

3.3 K5 POV FirstPersonSM (1re personne pendant le sexe)

  • Déclencheurs de SwitchCamera : InputAction_12 (nom d'action absent du dump ; chaîne InpActEvt_SwitchCamera dans PC.uasset) → si BuilderOn faux → PlayClick → si SexOn (PC:1713-1716, 3876-3880, 4430-4432, 1723-1727) ; minuterie SwitchCameraDelayed 0,2 s (PC:3347-3360) ; bouton d'action « Switch camera », Animation = 'Switchcamera' (PC:2505-2531).
  • SwitchCamera (PC:2532-2534) → SexCameraIndex < len(SexPersons) (PC:1728-1740, 1770-1773) :
    • vrai : POVOn := true (PC:3312-3317) → CurrentActor := SexPersons[SexCameraIndex] (PC:1784-1787, 2263-2266) → SceneSun caché (PC:2346-2350) → FirstPersonSM.AttachToComponent(Mesh, socket 'head', KeepRelative) (PC:3375-3388) → SetRelativeTransform (PC:3389-3396) → AttachToComponent(Mesh, sans socket, KeepWorld) (PC:3364-3373) → SetViewTargetWithBlend(GI.PC, CurrentActor), blend 0 (PC:1788-1796) → SexCameraIndex++ (PC:1741-1744) → Wall caché (PC:1800-1804) → HairSM caché (PC:2293-2297).
    • faux : POVOn := false (PC:3318-3323) → SexCameraIndex := 0 (PC:1746-1751) → SceneSun visible (PC:2351-2355) → SetViewTargetWithBlend(GI.PC, ChargenCameras[0]) (PC:1752-1760, 1777-1783) → Wall visible selon bHidden (PC:1805-1809, 3995-3998) → ForEach SexPersons (PC:2256-2262).
    • ResetCamera → même branche « faux » sans remise à 0 de l'index (PC:3344-3346, 2351-2355) ; ContinuePOV → SexCameraIndex := … → attache (PC:3324-3331, 3378-3380).
  • Regard en POV : souris → FirstPersonSM.AddWorldRotation (PC:1896-1903 via PC:1924-1928 ; CallFunction_951 via PC:1999-2003) ; CallFunction_204 mort (PC:1888-1895) ; SetRelativeRotation(FirstPersonSM, 90, 90, 0) mort (PC:2055-2062).
  • Entrée en sexe (GI) : Sex → secondScreen → clearAllTalks → CompleteAllMovements → SexOn := true → WaitingScene := true → PC.POVOn := false (GI:6762-6764, 25826-25831, 24101-24104, 25067-25070, 6896-6901, 6773-6776, 20528-20533) ; aucun SetViewTarget sur ce chemin (vue conservée : estimé). SexCameraIndex := 0 en GI:12828-12833 (amont non remonté).
  • Sélection de la caméra par le moteur : SetViewTarget sur un acteur Person utilise le premier CameraComponent actif de l'acteur (comportement moteur, bFindCameraComponentWhenViewTarget = True lu pour un autre acteur en CLSC:30) — estimé ; état bAutoActivate de FirstPersonSM : incertain, CDO non dumpé.

3.4 Autres

  • SecondScreen / FaceCapture : SceneCapture2D dans /Game/Scenes/CentralLondon, dossier Poser/Cameras (CLSC:2-3, 84, 252-253) ; SecondScreenFloor n'a qu'un StaticMeshComponent0 (portage55/L6f/L6f_LPDumpComponents_20260930-101930.txt:1, 35). Le dump plus récent ST/STE/dumps/CentralLondon__SceneCapture.txt existe et n'a pas été relu.
  • ContactMenu.uasset contient CharGenButton, SelectCamera, CurrentCamera, ReturnFromChargen, SetViewTargetWithBlend, ChargenCameras (chaînes) : un site d'activation sans dump (incertain : dump requis).
  • CentralLondon.umap contient CameraScene, CameraFullBody, CameraPortrait (chacune avec _ExecuteUbergraph_CentralLondon_RefProperty, donc référencées par le script du niveau), Birdview, CamOrthoZoom, ChargenCameras : le remplissage de GI.ChargenCameras et GI.Birdview par le script du niveau est estimé, non prouvé.
  • Person.uasset contient DetermineBirdviewLooking, MoveCamera, GetViewTarget, SceneCamera, CameraActor.
  • Nœuds caméra morts (résumé) : PC:2055-2062, 1888-1895 ; PC Delay(1) PC:1696-1702 ; PC InputAction_51 sans liens PC:563-566 ; GI refreshIdleDummies → SetViewTarget PC GI:24030-24035 et UpdateWall GI:20939-20943 (entrées mortes, le 3e appelant de GI:14506 reste vivant) ; GI SetActorHiddenInGame(Skylight) GI:21049-21052 ; ROOM minuterie AutoCamera 3643-3653, TestAutoCamera 3453-3455, DownUp 561-565, IfThenElse_1 (déplacement X × -10) 389-393, CenterCameraToAction vide 2102-2104, DrawDebugBox 3674-3676 ; PERS:34520-34580.

3.5 Machine à états (reconstituée)

État (variables) Caméra active Entrée (déclencheur, preuve) Sortie
Démarrage / chargement auto K1 Birdview si TopRight visible BeginAutoLoad (PC:2762-2779, 521-529) —
Ville / rue (SpaceOn faux) K1 Birdview ShowRender (GI:3144-3152) ; CloseSpace (GI:23574) ; CloseContacts sans NPCSelector (GI:6235-6239) ; fin du constructeur (ROOM:1246) OpenSpace
Pièce « Space » (SpaceOn vrai) K2 ChargenCameras[0] = Room.SceneCamera OpenSpace si vue = Birdview et SpaceOn faux → HideRender(0) (GI:23571-23600) CloseSpace → Birdview
Constructeur de pièce (BuilderOn) K2 EditBedroom → HideRender(0) (ROOM:5-7, 28-36) ShowRender + ResetSceneCamera (ROOM:1246-1298)
Édition de personnage / CharGen K2, puis K3, K4 HideRender(0) (GI:803-807) ; ZoomCharGen 0→1→2→0 (GI:4417-4448) ShowRender (estimé)
Contacts K3 ChargenCameras[1] OpenContacts → HideRender(1) (GI:6226-6234) CloseContacts → K2 (si NPCSelector) ou Birdview
Scène scriptée (WaitingScene) K2, déplacée par cameraMove / cameraFocus / cameraFocusPoint HideRender(0) si SpaceOn faux (GI:5866-5870) ; commandes GICF:209-219 ShowRender (estimé)
Sexe (SexOn), POVOn faux K2 (vue conservée à l'entrée : estimé) Sex (GI:6762-6776) ; SwitchCamera index = n ou ResetCamera → K2 (PC:1752-1760) fin : ChargenCameras[0] (GI:14505)
Sexe, POVOn vrai K5 POV de SexPersons[i] SwitchCamera index < n (PC:1788-1796) SwitchCamera suivant / ResetCamera

Trous nommés : déclencheur de OpenSpace / CloseSpace (touche ? .ini : CAM-T3) ; amont de AutoCamera (ROOM CallFunction_290) ; logique interne de Birdview ; site ContactMenu (SelectCamera) ; écriture de ChargenCameras / Birdview / BirdviewOriginal / CameraSceneTransformDefault ; noms des actions d'entrée InputAction_12, InputAction_50 (dump sans nom ; chaînes InpActEvt_SwitchCamera, InpActEvt_RotateCamera dans PC.uasset).

4. Établi / estimé / incertain

  • Établi : 7 nœuds SetViewTargetWithBlend vivants ou morts (PC 3, GI 4, Room 0), tous avec BlendTime 0 et VTBlend_Linear ; cibles = Birdview, ChargenCameras[i], un acteur Person (§ 3) ; aucun SpringArm, TargetArmLength, SetFieldOfView, Possess dans les dumps GI/PC/Room ni dans les chaînes des 11 assets lus ; aucune caméra de rue ni de plafond ; Room n'a aucun composant caméra ; CameraFocus vise l'acteur Room (ROOM:4435-4439) ; la poursuite du MC par SceneCamera dans Person (L6f) est morte.
  • Estimé : Birdview et ChargenCameras sont des CameraActor placés dans CentralLondon et affectés par le script du niveau (chaînes du .umap) ; ordre de ChargenCameras (scène, plein pied, portrait ?) ; le jeu démarre sur la vue du Pawn par défaut avant BeginAutoLoad ; Birdview relaie les commandes vers Room.SceneCamera en mode Space/sexe.
  • Incertain : valeurs des composants (FOV, projection orthographique de Birdview — chaînes OrthoWidth présentes —, post-process, bAutoActivate de FirstPersonSM), transformations par défaut des caméras placées, contenu de GI.CameraSceneTransformDefault et BirdviewOriginal : CDO non dumpé. Effet réel de PlayWorldCameraShake (broche Shake (vide) dans GI:10873 alors que GI.uasset référence CameraShake_C). Version HEAD de Person et MainMenu.

5. Points à confirmer (phase 1b, copie UE demandée à Big Boss ; rien lancé ici)

Asset Commandlet (lp-commandlets) But
Birdview LPDumpFunction -BP=Birdview -Fn=* -Pins -Exec RotateCamera, CircleCamera, ScrollDownUp, DownUpBirdview, LeftRightBirdView, PanToBuilding, CheckIfCameraMovable, relais vers Room, BeginPlay (écrit-il GI.Birdview ?)
Birdview, Person (FirstPersonSM), Pawn, GM, FirstPerson, CameraShake LPDumpComponents -BP=<nom> (imprime les propriétés, défauts compris : format vu en CLSC:30) ; LPDumpCDO si ses options sont lues dans Source/LifePlayEditorTools (non documentées dans lp-commandlets) FOV, ProjectionMode, OrthoWidth, bAutoActivate, transform relatif, post-process, DefaultPawnClass
niveau /Game/Scenes/CentralLondon LPDumpComponents -Map=/Game/Scenes/CentralLondon -Filter=Camera (et -Filter=Birdview) position, rotation, FOV de CameraScene, CameraFullBody, CameraPortrait, Birdview, CamOrthoZoom
script du niveau CentralLondon LPDumpFunction sur le Level Blueprint : support non prouvé (à vérifier dans le .h) qui remplit GI.ChargenCameras, GI.Birdview, BirdviewOriginal
ContactMenu LPDumpFunction -BP=ContactMenu -Fn=* -Pins -Exec CharGenButton, SelectCamera, ReturnFromChargen
Person (HEAD) LPDumpFunction -BP=Person -Fn=EventGraph -Pins -Exec redump à HEAD (L6f date du 2026-09-30) : MoveCamera, DetermineBirdviewLooking, chaîne morte PERS:34520
GI LPDumpFunction -BP=GI -Fn=* -Pins -Exec (ou liste ciblée) qui écrit CameraSceneTransformDefault, fonctions ShowRender/HideRender hors EventGraph s'il y en a
MainMenu LPDumpFunction -BP=MainMenu -Fn=EventGraph -Pins -Exec confirmer MM:1532-1564 à HEAD (547dcdd)

À relire sans commandlet : ST/STE/dumps/CentralLondon__SceneCapture.txt ; amont de Room.AutoCamera (CallFunction_290 dans ROOM) ; amont de GI.SexCameraIndex := 0 (GI:12828).

6. Questions pour la SPEC ou l'utilisateur

  1. Cible C2 (3e personne à 1,75 m) : la créer comme nouveau composant sur le MC, ou réutiliser ChargenCameras[0] / Room.SceneCamera déjà pilotée par AutoCamera (regard vers la tête du MC) ?
  2. Cible C1 (1re personne) : réutiliser Person.FirstPersonSM (FirstPerson_C), aujourd'hui active seulement pendant le sexe via SwitchCamera, hors sexe aussi ?
  3. Cible C3 (plafond) et caméras de rue : aucune base existante ; Birdview (vue de dessus de la ville) doit-elle rester la vue « rue » ou être remplacée ?
  4. Le défaut CameraFocus (rotation de l'acteur Room au lieu de la caméra, ROOM:4435-4439) et les chaînes mortes (AutoCamera sans minuterie, suivi du MC mort dans Person) sont-ils dans le périmètre du lot CAM ?
  5. ChargenCameras sert à la fois au CharGen, aux contacts, à la pièce et au sexe (index 0) : faut-il séparer la caméra de pièce de la caméra de CharGen ?

Constats

  • Écarts de méthode : deux appels Bash ont utilisé sed -n 1p et grep -ci sur des .txt (en-têtes de STUDIO-EST), au lieu de Read/Grep (sk-protocol § 7), lecture seule, sans effet ; un Grep trop large sur GI (sortie 217 Ko non exploitée). Un Grep sur le dossier post-v1 a rendu 0 résultat alors que les fichiers (ASCII, CRLF) contiennent les motifs : le dossier a dû être lu fichier par fichier (une absence vue par Grep sur un dossier d'etat/ ne prouve rien).
  • Docs/Migration/etat/CAM/CAM-T1_matrice.txt (livrable de CAM-T1) existe, non lu.
  • Fichiers écrits : D:\Game\LifePlay-master 5.8\Docs\Migration\etat\CAM\CAM-T2-CART.md (A). Aucun autre.

Tours : 48 / 60