LifePlay-Revival/Docs/Migration/etat/CAM/CAM-T3-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

23 KiB
Raw Blame History

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

CAM-T3-CART : caméras dans le C++ et la configuration (2026-10-11)

Copie D:\Game\LifePlay-master 5.8, branche ue5.8, HEAD 4283c13 (git rev-parse --short HEAD, git branch --show-current). Lecture seule : aucun éditeur, commandlet, MCP ou build. Chemins relatifs à la copie 5.8 sauf mention.

Tableau de tête : caméras et réglages relevés

Caméra ou réglage fichier:ligne Effet Appelé par Valeurs
FollowView, caméra 3e personne (ACameraActor, transitoire) Source/LifePlay/LPDirectControlSubsystem.cpp:897-941 ; membre .h:63-64 ; destruction .cpp:573-577 crée (SpawnActor, RF_Transient, .cpp:910-913), règle le FOV (:916), active (SetViewTargetWithBlend, :922), place derrière le pawn avec balayage de collision (:929-938), lisse (:939-940) personne : FollowCamera n'apparaît qu'à la déclaration (.h:43) et à la définition (.cpp:897) ; en-tête .h:12 « La camera suiveuse n'est pas branchee » ; Walk (.cpp:840-895) ne l'appelle pas FOV 70 ; fondu 0,35 s ; tangage borné -55 / -12° ; visée = pawn + 50 cm en Z ; recul 340 cm ; sphère 12 cm sur ECC_Camera, recul de 12 cm sur impact ; VInterpTo vitesse 8 ; ne se déclenche que si la vue courante a une classe dont le nom contient Birdview et que le joueur marche (:904-905)
BirdView (pointeur vers la vue courante) LPDirectControlSubsystem.h:66-67 ; .cpp:903-907 lu : PC->GetViewTarget() mémorisé ; jamais restauré (aucune autre écriture ni lecture, grep BirdView : 3 lignes) code mort (dans FollowCamera) test GetClass()->GetName().Contains("Birdview")
Marche du MC : direction prise sur la rotation de contrôle LPDirectControlSubsystem.cpp:875-892 lit PC->GetControlRotation().Yaw pour orienter MoveForward / MoveRight ; ne touche à aucune caméra Tick (ticker cœur, .cpp:566) → Walk (:619), sauf menu ouvert ou scène en cours (:606) pawn = GI.PlayerCharacter (:843), non possédé : bRunPhysicsWithNoController (:855-857) ; MaxWalkSpeed 180 si < 10 (:860-862) ; bOrientRotationToMovement (:868-871)
SecondScreen, SceneCapture2D de l'encadré d'appel (vue du monde : caméra à part entière) Source/LifePlay/LPSecondScreenSubsystem.cpp:59-112 ; .h:3-10 cherche l'acteur nommé SecondScreen une fois par monde (:69-81), le rend mobile (:104-108), le déplace devant le visage du contact et l'oriente vers la tête (:96-109), règle le FOV (:110) à chaque image ticker cœur (:50) ; contact = GI.SecondScreenPerson (:22, :89-90), écrit par le BP GI (portage55/L6f/L6f_dump_GI.txt : 9 lignes) ; acteur posé dans CentralLondon (.h:3) distance 80 cm (:19) ; FOV 30° (:20) ; tête = os head (:23, :28-35) sinon haut de capsule × 0,8 (:40) ; axe = avant du contact à plat (:97-102)
Réglage joueur vitesse de caméra Source/LifePlay/LPUserSettings.h:19-31, :40-58 ; .cpp:58-115 borne (ClampCameraSpeed), lit / écrit GameUserSettings.ini section [/Script/LifePlay.LPUserSettings] clés CameraSpeed, bCameraSpeedSet ; recopie dans la variable BP GI.CameraSpeed (double ou float, .cpp:12-30) ApplyCameraSpeedAtStartup ← BP GI (ST/STE/dumps/GI__EventGraph.txt:30143, K2Node_CallFunction_448) ; SetCameraSpeed ← MainMenu OnValueChanged(SliderCameraSpeed) ; GetCameraSpeed ← MainMenu Construct (ST/STC/STC-T5-IMPL-BP.md:14, :16) ; lecteurs de GI.CameraSpeed : ST/STE/dumps/Room__EventGraph_V5.txt (9 lignes variable 'CameraSpeed') entier 1 à 7, arrondi (.cpp:60) ; défaut 3 (.cpp:10, .h:27) ; poste local : Saved/Config/WindowsEditor/GameUserSettings.ini:52-54 → CameraSpeed=4.000000, bCameraSpeedSet=True
Style du slider SliderCameraSpeed Source/LifePlay/LPSettingsSubsystem.cpp:346-419 teintes de barre et de poignée seulement, aucune valeur écrite (:346-347) sous-système Settings (habillage du menu) barre 0,06 / survol 0,12 ; poignée (0,2 ; 0,45 ; 0,9) / survol (0,3 ; 0,55 ; 1) (:348-351)
Rangement d'onglet du menu Settings LPSettingsSubsystem.cpp:204-209 une ligne dont le texte contient « camera » va dans l'onglet Général RowText du menu (:182) —
Panneau Clavier : libellés et groupe « Camera » Source/LifePlay/LPKeyboardSubsystem.cpp:92, :97, :165-168 affichage et remappage : RotateCamera, SwitchCamera, LeftRight, DownUp, ScrollDownUp rangés dans le groupe 1 « Camera » ; MoveForward / MoveRight dans « Movement » (:161-163) panneau Clavier (lot clavier) —
RotateCamera (action) Config/DefaultInput.ini:107-109 bouton milieu, Alt gauche, Alt droit BP PC : nœuds K2Node_InputAction sans nom d'action dans le dump ; candidat K2Node_InputAction_50 → MoveCamera vrai / faux (ST/STE/dumps/PC__EventGraph.txt:547-560), incertain ; BP Room : événement personnalisé RotateCamera (Room__EventGraph_V5.txt:697) —
SwitchCamera (action) DefaultInput.ini:118 touche C (sans modificateur ; CityMenu = Ctrl+C, :102) BP PC : événements personnalisés SwitchCamera (PC__EventGraph.txt:2532) et SwitchCameraDelayed (:3358), appelés aussi par GI (L6f_dump_GI.txt:25111, :25113) ; nœud d'entrée correspondant non identifié par nom —
LeftRight, DownUp (axes, vue de dessus) DefaultInput.ini:150-153 flèches PC InpAxisEvt_DownUp (PC__EventGraph.txt:3043) → Birdview_C::DownUpBirdview (:3092) ; InpAxisEvt_LeftRight (:3097) → Birdview_C::LeftRightBirdView (:3117) ; rappel LPDirectControlSubsystem.h:3 échelle ±1
ScrollDownUp (axe, zoom) DefaultInput.ini:154 molette PC InpAxisEvt_ScrollDownUp (PC__EventGraph.txt:715) → Birdview_C::ScrollDownUp (:743) ; Room : événement ScrollDownUp (Room__EventGraph_V5.txt:394) échelle 1
CursorX, CursorY (axes souris) DefaultInput.ini:161-162 MouseX, MouseY PC InpAxisEvt_CursorX/Y (PC__EventGraph.txt:579, :583) ; CursorY → Birdview_C::RotateCamera(DeltaSeconds = AxisValue) (:616-620) et Birdview_C::CircleCamera (:621), selon MoveCamera (:597-609) voir sensibilité et FOV ci-dessous
MoveForward, MoveRight (axes de marche) DefaultInput.ini:155-160 Z / W / S ; Q / A / D C++ seulement : AxisValue lit les AxisMappings directement (LPDirectControlSubsystem.cpp:47-48, :160-179) ±1, borné à [-1 ; 1]
Sensibilité souris DefaultInput.ini:11, :16-18 (et retraits :8-10) Mouse2D, MouseX, MouseY 0,07 ; MouseWheelAxis 1 moteur (UPlayerInput) 0,07 / 1,0 ; lissage bEnableMouseSmoothing=True (:78) ; capture permanente et verrou (:91-92)
Mise à l'échelle par le FOV DefaultInput.ini:79 (bEnableFOVScaling=True), :93 (FOVScale=0.011110) multiplie MouseX / MouseY par FOVScale × FOV du PlayerCameraManager moteur : UE_5.8/Engine/Source/Runtime/Engine/Private/UserInterface/PlayerInput.cpp:2346-2353 FOV 90 → × 0,9999 ; FOV 70 → × 0,778 (calcul) ; FOV par défaut du PlayerCameraManager 90 (PlayerCameraManager.cpp:46), tangage ±89,9 (:58-59)
GameMode, GameInstance, carte Config/DefaultEngine.ini:8-11 GM_C, GI_C, CentralLondon (jeu et éditeur) moteur aucune ligne PlayerCameraManagerClass, PlayerControllerClass, DefaultPawnClass dans Config/ (grep § 2, C6) : portées par GM_C (BP)

1. Objet et périmètre

Domaine : ce que le C++ du jeu (Source/) et la configuration (Config/*.ini, réglages utilisateur) font aux caméras : création, placement, activation, FOV, suivi du MC, réglages exposés au joueur ; rues (StreetMap) et existence d'une logique de caméra de rue. Hors périmètre : graphes BP (CAM-T2), comptes dans les .uasset (CAM-T1), copie 5.5, .hyperai/. Les dumps BP ne servent ici qu'à nommer l'appelant d'une fonction C++ ou d'une action d'entrée. Environnement vérifié avant de conclure à une absence : Source/ présent (Glob Source/**/*.{cpp,h,cs} : 98 entrées comptées sur la sortie, dont 5 .cs) ; moteur 5.8 installé (lecture de D:\Game\Launcher\Engine\UE_5.8\Engine\Source réussie) ; plugins du jeu présents (Glob Plugins/*/*.uplugin : StreetMap, ModdingExtra, McpAutomationBridge, LPAnimCore) ; addon D:\Game\LifePlay-Sandbox-5.8 présent.

2. Commandes et lectures (exactes) avec compte brut

# Commande Compte brut
C1 Grep (?i)camera|ViewTarget|SpringArm|FieldOfView|FOV|PlayerCameraManager|SceneCapture|Possess, path Source, glob *.{cpp,h}, mode count 88 lignes, 9 fichiers : DirectControl .cpp 12, .h 4 ; Keyboard .cpp 4 ; OutdoorRoom .h 1 ; SecondScreen .cpp 11, .h 6 ; Settings .cpp 3 ; UserSettings .cpp 29, .h 18 ; 0 dans Source/LifePlayEditorTools
C1b Recompte : git grep -n -i -E "<même motif>" -- "Source/*.cpp" "Source/*.h" | wc -l puis git grep -c … 88 ; mêmes 9 fichiers, mêmes comptes
C2 Grep (?i)street|CityExpansion|Birdview|ControlRotation|CameraManager|ViewPoint|ProjectWorldLocationToScreen|DeprojectScreen|ViewLocation|ViewRotation|AutoScreenshot|Screenshot|HighResShot, path Source, count 61 lignes, 10 fichiers ; Source/LifePlay : 22 lignes (lues) ; LifePlayEditorTools : 39 (LPCheckStreetMapCommandlet.cpp 31, .h 6, LPCheckMeshesCommandlet.h 2, commentaires de chemins StreetMap) ; CityExpansion, Screenshot, CameraManager, ViewPoint, Deproject : 0
C3 Grep motif C1 sur Plugins (path Plugins) 0 : McpAutomationBridge sauté (ignoré par git) ; recompté par plugin : C3b-C3e
C3b Grep (?i)camera|view|fov|capture|possess sur Plugins/StreetMap/Source 32 lignes, toutes FSceneView / DetailsView (StreetMapSceneProxy.cpp:94-201, .h:92-101, StreetMapComponentDetails.*) : rendu et éditeur
C3c Grep motif C1 sur Plugins/LPAnimCore, puis Plugins/ModdingExtra 0 ; 0
C3d Grep motif C1 sur Plugins/McpAutomationBridge (path explicite) 783 lignes, 105 fichiers : outil d'automatisation MCP de l'éditeur, hors jeu
C4 Grep motif C1 sur D:\Game\LifePlay-Sandbox-5.8\Plugins 152 lignes, 11 fichiers (§ 3.6)
C5 Glob Config/*.ini 6 : DefaultEditorSettings, DefaultInput, DefaultEngine, DefaultScalability, DefaultEditor, DefaultGame ; pas de DefaultGameUserSettings.ini
C6 Grep (?i)camera|fov|fieldofview|GameMode|PlayerController|DefaultPawn|GameInstance|ViewTarget|SpringArm|SceneCapture|Possess|MapsAndModes|GameDefaultMap|ViewportClient|LocalPlayer|aspect|SplitScreen sur Config 11 lignes : DefaultEngine.ini:8,9,10 ; DefaultInput.ini:79,93,107,108,109,118 ; DefaultEditor.ini:4,5
C7 Read Config/DefaultInput.ini (171 lignes), DefaultEngine.ini:1-40, DefaultGame.ini (82 lignes) DefaultGame.ini : aucune ligne caméra
C8 Glob Saved/Config/**/GameUserSettings.ini ; Grep LPUserSettings|camera|fov dedans 1 fichier (WindowsEditor) ; section :52-54
C9 Grep ApplyCameraSpeedAtStartup|SetCameraSpeed|GetCameraSpeed|ClampCameraSpeed sur Docs/Migration/etat (*.txt) 10 fichiers, 1 ligne chacun : toujours ApplyCameraSpeedAtStartup dans des dumps GI ; SetCameraSpeed / GetCameraSpeed absents des dumps .txt, présents dans 9 .md (55 lignes, lot STC / STF)
C10 Grep RotateCamera|SwitchCamera|ScrollDownUp|LeftRightBirdView|DownUpBirdview|…CursorX|CursorY sur etat (*.txt), count 34 lignes, 10 fichiers ; lues dans PC__EventGraph.txt (9), Room__EventGraph_V5.txt (2), L6f_dump_GI.txt (2)
C11 Grep InpActEvt_(RotateCamera|SwitchCamera)|InpAxisEvt_(LeftRight|DownUp|ScrollDownUp|MoveForward|MoveRight) sur etat 0 fichier (les axes s'écrivent InpAxisEvt_<Axe>_K2Node… : retrouvés par C10 ; les actions n'ont pas de nom dans le dump)
C12 Grep variable 'CameraSpeed' sur etat (*.txt) ; SecondScreenPerson 139 lignes / 31 fichiers (dont Room__EventGraph_V5.txt 9) ; 18 lignes / 2 fichiers (L6f)
C13 Lectures moteur : PlayerInput.cpp:2336-2353 ; Grep DefaultFOV\s*=|ViewPitchMin\s*=|ViewPitchMax\s*= sur PlayerCameraManager.cpp :46 90, :58 -89,9, :59 89,9

3. Constats fichier:ligne

3.1 Classement des 88 lignes de C1

Fichier Lignes Classe Motif
LPDirectControlSubsystem.h 12, 19, 43, 64 caméra de vue (non branchée) commentaire, include, déclaration FollowCamera, membre FollowView
LPDirectControlSubsystem.cpp 15, 16, 897, 903, 913, 914, 916, 918, 922, 925, 934, 935 caméra de vue (non branchée) includes, corps de FollowCamera (le SCENE_QUERY_STAT(WalkCamera) de :934 est l'étiquette du balayage)
LPSecondScreenSubsystem.h 3, 5, 7, 10, 19, 34 caméra de vue (SceneCapture) commentaires, déclaration, pointeur Capture
LPSecondScreenSubsystem.cpp 6, 9, 18, 20, 68, 73, 82, 83, 103, 109, 110 caméra de vue (SceneCapture) recherche, placement, FOV
LPUserSettings.h 1, 3, 4, 5, 7, 8, 25, 27, 29, 31, 42, 45, 46, 50, 52, 54, 56, 58 réglage vitesse de caméra
LPUserSettings.cpp 10, 12, 14, 16, 19, 22, 25, 42, 58, 63, 66, 72, 74, 77, 78, 81, 83, 85, 86, 88, 92, 94, 95, 101, 105, 106, 108, 111, 114 réglage vitesse de caméra
LPSettingsSubsystem.cpp 204, 346, 405 réglage (UI du menu) rangement d'onglet, style du slider
LPKeyboardSubsystem.cpp 92, 97, 166, 168 réglage (UI du panneau Clavier) libellés et groupe « Camera »
LPOutdoorRoomSubsystem.h 6 hors sujet (visibilité du plafond) « vu de la camera » dans un commentaire ; utile à C3 (§ 3.5)
Total : caméra de vue 33 (4 + 12 + 6 + 11), réglage 54 (18 + 29 + 3 + 4), hors sujet 1 = 88.

3.2 Caméras de vue en C++

  • Aucune caméra C++ ne suit le MC en jeu : la seule qui le ferait (FollowView) n'est jamais appelée (grep FollowCamera sur le .cpp : 1 ligne, :897 ; sur le .h : :43), et Walk se termine sans appel (.cpp:893-895). Le commentaire d'en-tête le dit (LPDirectControlSubsystem.h:12). FollowView est bien détruite à l'arrêt du sous-système (.cpp:573-577).
  • Aucun SpringArm, PlayerCameraManager, Possess, SetViewTarget hors FollowCamera dans Source/ (C1 : les seules lignes ViewTarget sont .cpp:903, :922, :925).
  • La marche dépend de la rotation de contrôle du PC, pas de la caméra (.cpp:887-891) ; le pawn n'est pas possédé (.h:10, .cpp:855-857). Le Tick saute la marche pendant un menu ou une scène (.cpp:606-621, ScenePlaying lit GI.CurrentScene, :456-465).
  • SecondScreen est la seule caméra déplacée par le C++ ; elle suit le contact de l'appel, pas le MC (LPSecondScreenSubsystem.cpp:89-109).
  • Captures d'écran : AutoScreenshot, Screenshot, HighResShot : 0 ligne dans Source/ (C2).

3.3 Réglages du joueur

  • Seul réglage caméra porté par le C++ : vitesse de caméra, entier 1 à 7, défaut 3, clé CameraSpeed + drapeau bCameraSpeedSet dans GameUserSettings.ini (LPUserSettings.h:19-31) ; l'ini fait foi, GI.CameraSpeed en est la recopie, GameSettings.sav garde aussi un champ CameraSpeed (LPUserSettings.h:3-8). Écriture seulement si la valeur change (.cpp:99-104).
  • Aucun réglage de FOV, de sensibilité, de vue par défaut ou de second écran dans Source/ ni dans Config/ (C1, C6) ; la sensibilité souris est fixe dans DefaultInput.ini:16-17 (0,07).
  • Le panneau Clavier permet de remapper les touches des actions et axes du groupe « Camera » (LPKeyboardSubsystem.cpp:165-168 ; IsRemappable exclut axes et manette, :75-78).

3.4 Configuration : classement des lignes de C6 et des lignes liées à la vue

Ligne Classe
DefaultEngine.ini:8 GlobalDefaultGameMode=/Game/BPs/GM.GM_C, :9 GameInstanceClass=/Game/BPs/GI.GI_C, :10 GameDefaultMap=…CentralLondon réglage (porte d'entrée : la classe de caméra, de PC et de pawn est dans GM_C)
DefaultInput.ini:79 bEnableFOVScaling=True, :93 FOVScale=0.011110 réglage lié à la vue (sensibilité souris × FOV)
DefaultInput.ini:107-109 RotateCamera, :118 SwitchCamera caméra de vue (entrées)
DefaultEditor.ini:4-5 (section [/Script/AdvancedPreviewScene.SharedProfiles], :3) CameraShutterSpeed, ApplyPhysicalCameraExposure hors sujet (post-traitement de l'aperçu d'assets de l'éditeur)
Lignes lues en plus (liées à la vue) : DefaultInput.ini:150-154 (LeftRight, DownUp, ScrollDownUp), :161-162
(CursorX, CursorY), :155-160 (MoveForward, MoveRight), :11, :16-18, :78, :91-92 (souris). Hors sujet :
:95-96 ActionX / ActionY sur MouseX / MouseY (le PC a des événements OpenActionXY / CloseActionXY,
PC__EventGraph.txt:391, :398 : menu d'action, estimé). DefaultGame.ini : rien sur la vue (C7).
Conflits de touches relevés (constat) : C = SwitchCamera, Ctrl+C = CityMenu (:102, :118) ; PageUp / PageDown
servent à la fois NextBuilding / PreviousBuilding (:119-120) et l'axe PenisRotation (:163-164).

3.5 Pièces et plafond (utile à la caméra C3)

  • Chaque lieu est l'acteur GI.Room ; échelle Z de sa racine 0,2 à 0,4 en intérieur, 0,01 pour les 7 lieux extérieurs ; plafond WallT à Z relatif 2040, sans collision (LPOutdoorRoomSubsystem.h:3-6). Le sous-système masque WallT si l'échelle Z < 0,05 (.cpp:14, :55-60) et le rend sinon (:62-66).
  • Hauteur de plafond au-dessus de la racine : 2040 × 0,2 à 0,4 = 408 à 816 cm (estimé, calcul ; la cote Z de la racine et du sol n'est pas lue ici).

3.6 Rues

  • Construction : plugin StreetMap (import OSM) ; asset UStreetMap (Plugins/StreetMap/Source/StreetMapRuntime/Public/StreetMap.h:385) avec routes FStreetMapRoad (type :159, points 2D TArray<FVector2D> RoadPoints :167, bornes :173-177), nœuds (:253-260), bâtiments (BuildingPoints 2D :302, hauteur en mètres :304-306, Amenity :314), eau, parcs ; recherche FindBuilding, SearchByAmenity (:474-491). Assets de jeu /Game/Heavy/StreetMap/CentralLondon et /Game/Heavy/StreetMap/Static/CentralLondon (Source/LifePlay/LPDataCompat.cpp:274-275) ; 280 villes (Source/LifePlayEditorTools/LPCheckStreetMapCommandlet.h:6). Le C++ lit GI.StreetMapStatic.CurrentPlayerBuilding (LPDirectControlSubsystem.cpp:388-394) pour les actions de bâtiment. CityExpansion : 0 ligne dans Source/ (C2) ; c'est un asset BP (cité parmi BPs/GI, BPs/PC… dans etat/U58/UA/UA-PLUGINS.md:135) : CAM-T1 / CAM-T2.
  • Logique de caméra de rue en C++ : aucune. Preuves : C1 ne touche aucun fichier de rue (les 9 fichiers sont listés en § 3.1, aucun ne lit StreetMap) ; C2 : les lignes « street » de Source/ sont un préchargement (LPDataCompat), un compteur de primitives (LPDebugSubsystem.cpp:118-254), une lecture de bâtiment (LPDirectControlSubsystem.cpp:388-394) et deux commandlets de vérification, sans caméra ; C3b : dans le plugin StreetMap, les seules lignes « view » sont la pertinence de rendu FSceneView du proxy (StreetMapSceneProxy.cpp:94-201) et la vue de détails de l'éditeur. L'existence d'une caméra de rue côté BP ou carte n'est pas tranchée ici (CAM-T1, CAM-T2).

3.7 Addon D:\Game\LifePlay-Sandbox-5.8 (signalé, non cartographié)

Touche aux caméras : 152 lignes, 11 fichiers sous Plugins/LPSandbox/Source/LPSandbox/ : LPSandboxCamera.cpp (19), .h (6), LPPairSandbox.cpp (9), .h (9), LPSandboxActors.cpp (1), LPSandboxCoupleMod.cpp (5), LPSandboxInteraction.cpp (16), LPSandboxMeasure.cpp (54), LPSandboxMeasureMod.h (11), LPSandboxMeasureTour.cpp (18), LPSandboxMod.h (4). LPSandboxCamera.h:1-25 : composants Arm (SpringArm) et Camera sur le pawn ALPPairSandboxCharacter, tangage -50 / 30, vue par défaut bras 2,5 m, -15 / -135°. Le jeu ne cite l'addon que par nom de classe pour sauter l'animation de marche (LPDirectControlSubsystem.cpp:878-880, LPPairSandbox).

4. Établi / estimé / incertain

  • Établi : 88 lignes C1 classées (§ 3.1, recompte C1b) ; FollowCamera jamais appelée ; seule caméra déplacée par le C++ = SecondScreen (80 cm, FOV 30) ; seul réglage caméra = vitesse 1-7 défaut 3 dans GameUserSettings.ini ; appelants C++ ← BP : ApplyCameraSpeedAtStartup ← GI (GI__EventGraph.txt:30143) ; aucune ligne de classe caméra / PC / pawn dans Config/ ; mise à l'échelle souris par le FOV (moteur PlayerInput.cpp:2346-2353, ini :79, :93) ; aucune caméra de rue en C++ (§ 3.6) ; vue de dessus pilotée par le BP Birdview_C appelé par PC (PC__EventGraph.txt:616, :743, :3092, :3117).
  • Estimé : la caméra de jeu courante est l'acteur BP Birdview tenu par GI.Birdview (PC__EventGraph.txt:610-615) ; GI.CameraSpeed règle la rotation / le zoom dans Room (9 lectures dans Room__EventGraph_V5.txt, non lues) ; facteur souris ≈ 1,0 à FOV 90 (calcul) ; plafond intérieur 408-816 cm au-dessus de la racine de Room (calcul § 3.5) ; ActionX/Y hors sujet.
  • Incertain : quel K2Node_InputAction du PC écoute RotateCamera / SwitchCamera (noms absents du dump ; essai : get_node_infos MCP ou LPDumpFunction -BP=PC avec nom d'action) ; classe de PlayerCameraManager, PC, pawn par défaut de GM_C (essai : LPDumpCDO -List=GM) ; si la rotation de contrôle du PC est tenue à jour par le BP (direction de marche, essai en jeu ou lecture de Birdview_C).

5. Points à confirmer (repris par la fiche suivante)

  1. CAM-T2 : graphes Birdview_C (RotateCamera, CircleCamera, ScrollDownUp, DownUpBirdview, LeftRightBirdView), PC (SwitchCamera, SwitchCameraDelayed, MoveCamera), Room (RotateCamera, ScrollDownUp, lectures CameraSpeed).
  2. CAM-T2 : nœud d'entrée de chaque action RotateCamera / SwitchCamera (§ 4 incertain).
  3. CAM-T1 : GM_C (classes PC, pawn, PlayerCameraManager), composants caméra de PlayerCharacter, acteur SecondScreen de CentralLondon et sa cible de rendu, ChargenCameras / CameraComponent du MainMenu (ST/STB/dumps/MainMenu__EventGraph.txt:1540-1564), BP CityExpansion.
  4. Qui appelle SetViewTarget* côté BP (le C++ ne le fait que dans le code mort).
  5. Cote Z réelle du sol et du plafond d'une pièce (pour C3 : contrainte « < 3 m au-dessus du MC »).

6. Questions pour la SPEC ou l'utilisateur

  • Q1 : C3 « au plafond, au centre de la pièce » et « toujours < 3 m au-dessus du MC » : le plafond estimé est à 4-8 m au-dessus de la racine de Room (§ 3.5) ; laquelle des deux règles prime quand elles s'opposent ?
  • Q2 : C2 « à 1,75 m » : distance au MC ou hauteur de caméra ? (le code mort existant recule de 340 cm, FOV 70).
  • Q3 : la touche C (SwitchCamera) et ses événements BP existent déjà : doivent-ils servir à passer de C1 à C2 à C3 ?
  • Q4 : la vitesse de caméra (1-7) doit-elle régler les nouvelles caméras ? Faut-il un réglage de FOV ou de sensibilité exposé au joueur (aucun aujourd'hui) ?
  • Q5 : caméras de rue en enfilade : quelle ville, le long des RoadPoints (2D, sans hauteur) de UStreetMap ou d'acteurs posés dans la carte ?
  • Q6 : la caméra du second écran (suit le contact, pas le MC) reste-t-elle hors du lot ?

Tours : 27 / 60