23 KiB
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 (grepFollowCamerasur le.cpp: 1 ligne,:897; sur le.h::43), etWalkse termine sans appel (.cpp:893-895). Le commentaire d'en-tête le dit (LPDirectControlSubsystem.h:12).FollowViewest bien détruite à l'arrêt du sous-système (.cpp:573-577). - Aucun
SpringArm,PlayerCameraManager,Possess,SetViewTargethorsFollowCameradansSource/(C1 : les seules lignesViewTargetsont.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,ScenePlayinglitGI.CurrentScene,:456-465). SecondScreenest 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 dansSource/(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+ drapeaubCameraSpeedSetdansGameUserSettings.ini(LPUserSettings.h:19-31) ; l'ini fait foi,GI.CameraSpeeden est la recopie,GameSettings.savgarde aussi un champCameraSpeed(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 dansConfig/(C1, C6) ; la sensibilité souris est fixe dansDefaultInput.ini:16-17(0,07). - Le panneau Clavier permet de remapper les touches des actions et axes du groupe « Camera » (
LPKeyboardSubsystem.cpp:165-168;IsRemappableexclut 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 ; plafondWallTà Z relatif 2040, sans collision (LPOutdoorRoomSubsystem.h:3-6). Le sous-système masqueWallTsi 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) ; assetUStreetMap(Plugins/StreetMap/Source/StreetMapRuntime/Public/StreetMap.h:385) avec routesFStreetMapRoad(type:159, points 2DTArray<FVector2D> RoadPoints:167, bornes:173-177), nœuds (:253-260), bâtiments (BuildingPoints2D:302, hauteur en mètres:304-306,Amenity:314), eau, parcs ; rechercheFindBuilding,SearchByAmenity(:474-491). Assets de jeu/Game/Heavy/StreetMap/CentralLondonet/Game/Heavy/StreetMap/Static/CentralLondon(Source/LifePlay/LPDataCompat.cpp:274-275) ; 280 villes (Source/LifePlayEditorTools/LPCheckStreetMapCommandlet.h:6). Le C++ litGI.StreetMapStatic.CurrentPlayerBuilding(LPDirectControlSubsystem.cpp:388-394) pour les actions de bâtiment.CityExpansion: 0 ligne dansSource/(C2) ; c'est un asset BP (cité parmiBPs/GI,BPs/PC… dansetat/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 » deSource/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 pluginStreetMap, les seules lignes « view » sont la pertinence de renduFSceneViewdu 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) ;
FollowCamerajamais 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 dansGameUserSettings.ini; appelants C++ ← BP :ApplyCameraSpeedAtStartup←GI(GI__EventGraph.txt:30143) ; aucune ligne de classe caméra / PC / pawn dansConfig/; mise à l'échelle souris par le FOV (moteurPlayerInput.cpp:2346-2353, ini:79,:93) ; aucune caméra de rue en C++ (§ 3.6) ; vue de dessus pilotée par le BPBirdview_Cappelé parPC(PC__EventGraph.txt:616,:743,:3092,:3117). - Estimé : la caméra de jeu courante est l'acteur BP
Birdviewtenu parGI.Birdview(PC__EventGraph.txt:610-615) ;GI.CameraSpeedrègle la rotation / le zoom dansRoom(9 lectures dansRoom__EventGraph_V5.txt, non lues) ; facteur souris ≈ 1,0 à FOV 90 (calcul) ; plafond intérieur 408-816 cm au-dessus de la racine deRoom(calcul § 3.5) ;ActionX/Yhors sujet. - Incertain : quel
K2Node_InputActionduPCécouteRotateCamera/SwitchCamera(noms absents du dump ; essai :get_node_infosMCP ouLPDumpFunction -BP=PCavec nom d'action) ; classe dePlayerCameraManager, PC, pawn par défaut deGM_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 deBirdview_C).
5. Points à confirmer (repris par la fiche suivante)
- CAM-T2 : graphes
Birdview_C(RotateCamera,CircleCamera,ScrollDownUp,DownUpBirdview,LeftRightBirdView),PC(SwitchCamera,SwitchCameraDelayed,MoveCamera),Room(RotateCamera,ScrollDownUp, lecturesCameraSpeed). - CAM-T2 : nœud d'entrée de chaque action
RotateCamera/SwitchCamera(§ 4 incertain). - CAM-T1 :
GM_C(classes PC, pawn,PlayerCameraManager), composants caméra dePlayerCharacter, acteurSecondScreendeCentralLondonet sa cible de rendu,ChargenCameras/CameraComponentduMainMenu(ST/STB/dumps/MainMenu__EventGraph.txt:1540-1564), BPCityExpansion. - Qui appelle
SetViewTarget*côté BP (le C++ ne le fait que dans le code mort). - 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) deUStreetMapou 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