85 lines
5.5 KiB
Markdown
85 lines
5.5 KiB
Markdown
|
|
# CAM-B2p-G-IMPL (partie C++) : recadrage, suivi du couple, C3 côté C++, témoin G3 (2026-10-14)
|
|||
|
|
|
|||
|
|
GO : Big Boss, 2026-10-14 (« GO pour B2p-G, option 1 » ; C++ tout de suite, sans jeton ; PC par MCP après l'UE-GO).
|
|||
|
|
SPEC : `CAM-B2p-G-SPEC.md`. Écriture sans compilation (l'essai COMMUN-11 est en cours).
|
|||
|
|
|
|||
|
|
Instantané : `D:\Game\LifePlay_Backup_5.5\CAM-B2p-G\` (`.cpp` `03D85D28…`, `.h` `4AE65994…`).
|
|||
|
|
|
|||
|
|
| Fichier | Avant | Après |
|
|||
|
|
|---|---|---|
|
|||
|
|
| `Source/LifePlay/LPCameraModeSubsystem.cpp` | `03D85D282A6306E6D2494D7DC2C253FC`, 1437 lignes | `A5F041FFA8562F9E75560EAD01725E2B`, 1575 lignes (après la reprise N1/N2 ; première version `6D88EDDA…`, 1570 lignes) |
|
|||
|
|
|
|||
|
|
Reprise après la VAL (`CAM-B2p-G-VAL.md`, N1 et N2) :
|
|||
|
|
- N1 : le seuil de suivi passe de 0,5 cm à 0,01 cm. Le pivot est la place des acteurs, que l'animation ne bouge
|
|||
|
|
pas : tout pas compte, même lent (flèches).
|
|||
|
|
- N2 : après un obstacle, la caméra est placée devant lui mais jamais à moins de 50 cm de la cible
|
|||
|
|
(`RecenterMinDistance`). Elle ne passe plus de l'autre côté.
|
|||
|
|
- N3 à N6 laissés en l'état, non bloquants :
|
|||
|
|
- un recadrage pendant une prise est défait par la caméra figée ;
|
|||
|
|
- un front de `SexC3` hors de la vue Scene est perdu ;
|
|||
|
|
- la lecture de `SexC3` hors sexe coûte peu ;
|
|||
|
|
- la borne de 900 cm ne joue que hors prise ;
|
|||
|
|
- le fondu reste à voir à l'essai.
|
|||
|
|
| `Source/LifePlay/LPCameraModeSubsystem.h` | `4AE6599447750371CFF7E0AAC74EB93E`, 132 lignes | `00D439937DBCEAB44F459C4A834F34F0`, 141 lignes |
|
|||
|
|
|
|||
|
|
Fins de ligne : LF (0 CR).
|
|||
|
|
|
|||
|
|
## 1. Écritures
|
|||
|
|
- **Constantes** :
|
|||
|
|
- `PCSexC3` (`SexC3`, la variable du PC qui sera ajoutée par MCP) ;
|
|||
|
|
- recadrage : 300 cm de distance, 120 cm de hauteur, cible à la racine + 60 cm, marge de 20 cm aux murs ;
|
|||
|
|
- suivi : 900 cm au plus, pas minimal de 0,5 cm.
|
|||
|
|
- **`ComputeLabel`** : pendant le sexe, hors POV, si `PC.SexC3` est vrai, l'indicateur affiche « Camera: C3 Couple ».
|
|||
|
|
Sans la variable (PC pas encore modifié), `ReadBool` rend faux et rien ne change.
|
|||
|
|
- **`TickCoupleBounds`** :
|
|||
|
|
- hors sexe : `LastSexView` et `bSexC3Was` sont oubliés, et `PC.SexC3` est remis à faux s'il était vrai (scène
|
|||
|
|
finie en C3) ;
|
|||
|
|
- appelle `TickSceneCamera` dans le chemin de la pièce cachée et en fin de chemin normal, avant la mise à jour de
|
|||
|
|
`LastCouplePivot`.
|
|||
|
|
- **`TickSceneCamera`** (nouveau), seulement si la vue est `Room.SceneCamera` :
|
|||
|
|
- **G-b** : à l'entrée en Scene (la vue de l'image précédente n'était pas `SceneCamera`), `RecenterSceneCamera`
|
|||
|
|
(« entree en Scene ») ;
|
|||
|
|
- **G-d (C++)** : au front montant de `PC.SexC3`, `RecenterSceneCamera` (« C3 ») ;
|
|||
|
|
- **G-c** : sinon, hors prise et hors image de fin de prise, la caméra se déplace du même vecteur que le pivot
|
|||
|
|
depuis l'image précédente (au-delà de 0,5 cm). Puis la distance est ramenée à 900 cm au plus.
|
|||
|
|
- **`RecenterSceneCamera`** (nouveau, G-a) :
|
|||
|
|
- cible : XY du pivot, Z = racine du maillage la plus basse + 60 cm ;
|
|||
|
|
- position : azimut actuel de la caméra autour de la cible (sinon derrière le meneur), à 300 cm, 120 cm plus haut ;
|
|||
|
|
- dans une pièce non cachée : bornée à l'intérieur F1 (marge 20 cm) et entre sol + 30 et plafond − 20 ;
|
|||
|
|
- tracé Visibility de la cible vers la caméra (couple, `SceneCamera`, `Wall` et `CamRoom` ignorés) : en cas
|
|||
|
|
d'obstacle, la caméra est ramenée 20 cm devant lui ;
|
|||
|
|
- regard sur la cible ;
|
|||
|
|
- ligne `Sexe : vue recadree sur le couple (<raison>) a <d> cm, cible (x, y, z)[, rapprochee devant un obstacle]`.
|
|||
|
|
- **G3, témoin côté appelant** (point 4 de Big Boss), dans le bloc « relâcher » de `TickCoupleMouse` : quand le
|
|||
|
|
meneur a bougé de plus de 1 cm, une ligne par appel,
|
|||
|
|
`Sexe : G3 NotifyCoupleTeleported appele|non appele, sous-systeme absent (meneur deplace de <d> cm par la prise)`,
|
|||
|
|
puis l'appel. Il n'y a aucun changement de condition.
|
|||
|
|
- **`.h`** : `TickSceneCamera`, `RecenterSceneCamera`, `LastSexView`, `bSexC3Was`.
|
|||
|
|
|
|||
|
|
## 2. G3 : lecture de `LPShowCoupleSubsystem.cpp` (STE, rien écrit)
|
|||
|
|
- `KeepTogether` (l. 750-805) se termine **à chaque image** par `LastSafe = Who->GetActorLocation();` (l. 804).
|
|||
|
|
- `NotifyCoupleTeleported` (l. 807-824) n'écrit « place reprise » que si `Now − LastSafe` n'est pas nul.
|
|||
|
|
- **Confirmé** : pendant un glisser, `KeepTogether` passe à chaque image après le déplacement de CAM et remet déjà
|
|||
|
|
`LastSafe` à la place du meneur. Au relâcher, la place est donc déjà reprise : l'appel est sans effet visible.
|
|||
|
|
C'est normal, et c'est ce qui s'est passé à COMMUN-11. Le nouveau témoin montrera que l'appel part.
|
|||
|
|
- Conséquence : G3 ne change le résultat que si `KeepTogether` a refusé ou ramené un pas du glisser, et que la place
|
|||
|
|
sûre est restée en arrière. Le cas du couple coincé (dégagement) se jugera en jeu, avec ce témoin et la ligne
|
|||
|
|
« bloque par » de STE.
|
|||
|
|
|
|||
|
|
## 3. Écarts
|
|||
|
|
- La partie PC de G-d (variable `SexC3` et 2 branches) reste à faire par MCP, sous UE-GO. Le C++ est prêt à la lire.
|
|||
|
|
- Le recadrage à l'entrée en Scene remplace, à chaque retour depuis le POV, le cadrage d'origine du jeu
|
|||
|
|
(`pickPreset`). C'est voulu (SPEC G-b).
|
|||
|
|
|
|||
|
|
## 4. Points à confirmer en V7
|
|||
|
|
- Lignes « vue recadree » à l'entrée en Scene et en C3.
|
|||
|
|
- Avec les flèches et la molette, la caméra suit le couple.
|
|||
|
|
- Distance de 900 cm au plus.
|
|||
|
|
- Ligne « G3 NotifyCoupleTeleported appele » à chaque pose qui déplace le meneur.
|
|||
|
|
- Compilation.
|
|||
|
|
- Essais CAM-76 à CAM-80.
|
|||
|
|
|
|||
|
|
## 5. Fichiers à commiter
|
|||
|
|
A `Source/LifePlay/LPCameraModeSubsystem.cpp` et `.h` ; A `CAM-B2p-G-SPEC.md`, `CAM-B2p-G-IMPL.md`,
|
|||
|
|
`CAM-B2p-G-VAL.md`.
|