L6e-CX-B09 : marges des UButton remises au defaut UE 4.27 (ERR-034, barre de temps decalee)
UE5 a change le style par defaut de UButton (FUMGCoreStyle, 12 px horizontaux au lieu de 2) ; les assets 4.27 ne stockent pas la marge par defaut. 430 boutons dans 46 Widget Blueprints, composante par composante, marges choisies par l'auteur conservees. Diff des 73 arbres UMG : seules les marges changent. CompileAllBlueprints inchange, build L6e 8561 paquets. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
935d11f554
commit
7aaeb06816
51 changed files with 222 additions and 193 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -40,6 +40,7 @@ exporté dans `Docs/Migration/correctifs/` pour relecture.
|
||||||
| CX-B05 | `LPFixDeprecatedNodes` (R-03) | 56 nœuds `SkeletalMesh`, 10 Blueprints | `GetSkeletalMeshAsset()` | **rejeté** : aggrave ERR-002 (16,6 → 35 `Accessed None`/perso) car les proxies sont des `USkinnedMeshComponent` | — | à refaire autrement (L7a) |
|
| CX-B05 | `LPFixDeprecatedNodes` (R-03) | 56 nœuds `SkeletalMesh`, 10 Blueprints | `GetSkeletalMeshAsset()` | **rejeté** : aggrave ERR-002 (16,6 → 35 `Accessed None`/perso) car les proxies sont des `USkinnedMeshComponent` | — | à refaire autrement (L7a) |
|
||||||
| CX-B06 | `LPFixDeprecatedNodes` (R-04) | 6 nœuds, `AI`, `Person`, `Room` | `LPNavigationHelpers` | avertissements de dépréciation seulement | 5 | reporté (L7) |
|
| CX-B06 | `LPFixDeprecatedNodes` (R-04) | 6 nœuds, `AI`, `Person`, `Room` | `LPNavigationHelpers` | avertissements de dépréciation seulement | 5 | reporté (L7) |
|
||||||
| CX-B08 | `LPFixParseIntoArray` (nouveau) | 114 nœuds `ParseIntoArray`, 17 Blueprints | rebranchés sur `LPStringCompat::ParseIntoArray` (algorithme UE 4.27) | UE5 renvoie `[""]` pour une chaîne vide : cause d'ERR-027 (personnages de quête invisibles/dévêtus) | 1 | **réimporté** (CHG-029), validé en jeu |
|
| CX-B08 | `LPFixParseIntoArray` (nouveau) | 114 nœuds `ParseIntoArray`, 17 Blueprints | rebranchés sur `LPStringCompat::ParseIntoArray` (algorithme UE 4.27) | UE5 renvoie `[""]` pour une chaîne vide : cause d'ERR-027 (personnages de quête invisibles/dévêtus) | 1 | **réimporté** (CHG-029), validé en jeu |
|
||||||
|
| CX-B09 | `LPFixButtonPadding` (nouveau) | 430 `UButton`, 46 Widget Blueprints | marges des boutons remises au défaut UE 4.27 (Normal 2,2,2,2 ; Pressed 2,3,2,1), composante par composante | le style par défaut de `UButton` est passé à 12 px horizontaux en UE5 (`FUMGCoreStyle`) ; les assets 4.27 ne stockent pas la marge par défaut : cause d'ERR-034 (barre de temps décalée) | 1 | **réimporté** (CHG-033), validation en jeu en attente |
|
||||||
| CX-B07 | `ResavePackages` | dossiers de gameplay (`BPs`, `UI`, `Structs`, `Scenes`, `Render`, `Characters`) | format UE5 | chargement plus rapide ; T-STAT-01 | 6 | après CX-B01 à B04 (L4) |
|
| CX-B07 | `ResavePackages` | dossiers de gameplay (`BPs`, `UI`, `Structs`, `Scenes`, `Render`, `Characters`) | format UE5 | chargement plus rapide ; T-STAT-01 | 6 | après CX-B01 à B04 (L4) |
|
||||||
|
|
||||||
## 3. Protocole de réimport sous contrôle renforcé
|
## 3. Protocole de réimport sous contrôle renforcé
|
||||||
|
|
|
||||||
|
|
@ -376,3 +376,24 @@ Validation L6a (build `LifePlay_Build_5.5_L6a`, partie utilisateur 2026-09-30) :
|
||||||
Capteur « read property Person » : relevé dans `GI::ReturnStatIfNeeded` (variable de scène `Player`, classe `Person`,
|
Capteur « read property Person » : relevé dans `GI::ReturnStatIfNeeded` (variable de scène `Player`, classe `Person`,
|
||||||
tableau `Person` vide). Comparaison par personnage : `Dress` 0 sur cette partie (situationnel) ; variables `Person` vides
|
tableau `Person` vide). Comparaison par personnage : `Dress` 0 sur cette partie (situationnel) ; variables `Person` vides
|
||||||
3,3/perso en 4.27 contre 15 à 20 en 5.5 (ERR-003/ERR-030). Journal : `Saved/Logs/portage/L6a_LifePlay.log`.
|
3,3/perso en 4.27 contre 15 à 20 en 5.5 (ERR-003/ERR-030). Journal : `Saved/Logs/portage/L6a_LifePlay.log`.
|
||||||
|
|
||||||
|
### Lot L6e — ERR-034, marges des boutons (2026-09-30)
|
||||||
|
|
||||||
|
Captures utilisateur 4.27 / 5.5 : la rangée `<< < ❚❚ > >>` de `UI/TopRight` est plus espacée en 5.5 et déborde à droite.
|
||||||
|
Photographie de l'arbre (`LPDumpWidgetTree`) : chaque bouton est un `UButton` (style transparent) autour d'un cercle de 30 px ;
|
||||||
|
aucune marge n'est stockée dans l'asset. Source moteur : défaut 4.27 `FCoreStyle "Button"` NormalPadding (2,2,2,2),
|
||||||
|
PressedPadding (2,3,2,1) ; défaut 5.5 `FUMGCoreStyle "Button"` (12,1.5,12,1.5) pour les deux. `FMargin` est sérialisé
|
||||||
|
champ par champ par rapport au défaut : les assets 4.27 prennent donc la marge UE5 au chargement (+20 px par bouton).
|
||||||
|
|
||||||
|
| ID | Date | Lot | Fichiers | Raison | Retour arrière |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| CHG-032 | 2026-09-30 | L6e | `Source/LifePlayEditorTools/LPDumpWidgetTreeCommandlet.h/.cpp`, `LPFixButtonPaddingCommandlet.h/.cpp` (nouveaux) | outils : photographie des arbres UMG (`-BP=<nom>` ou `*`), correctif des marges | `git checkout L6e-avant -- Source` |
|
||||||
|
| CHG-033 | 2026-09-30 | L6e-CX-B09 | 46 Widget Blueprints de `Content/UI` (liste : `etat/L6e-CX-B09_assets.txt`) | 429 boutons (passe 1, marges égales au défaut UE5) + 1 bouton (passe 2, `TopRight::Button_8` Pressed (12,2,12,2) : marge 4.27 partielle, Left/Right hérités d'UE5) remis au défaut UE4 ; 3 boutons à marge 0 choisie par l'auteur conservés | `Tools\Restore.ps1 -Lot L6e-CX-B09` |
|
||||||
|
|
||||||
|
| Contrôle | Résultat | Preuve |
|
||||||
|
|---|---|---|
|
||||||
|
| Simulation | 432 boutons vus, 429 à corriger, 46 paquets | `etat/L6e-CX-B09_dryrun.txt` |
|
||||||
|
| Diff des 73 arbres UMG avant/après | hors lignes `WidgetStyle` : identiques ; dans `WidgetStyle`, seules `NormalPadding`/`PressedPadding` changent | `etat/L6e-CX-B09_widgets_{avant,apres,diff}.txt` |
|
||||||
|
| Idempotence | 3e simulation après passe 2 : 432 boutons vus, 0 à corriger | `etat/L6e-CX-B09c_LPFixButtonPadding_*.txt` |
|
||||||
|
| `CompileAllBlueprints` | 0 erreur, 190 avertissements (identique à L4-CX-B08) | `etat/L6e-CX-B09_CompileAllBlueprints_*.txt` |
|
||||||
|
| Build empaquetée `LifePlay_Build_5.5_L6e` | cuisson 0 erreur, 95 avertissements (inchangé) ; T-PKG-01 : 8561 `.uasset` | `Saved/Logs/portage/L6e_BuildCookRun.log` |
|
||||||
|
|
|
||||||
|
|
@ -38,4 +38,4 @@
|
||||||
| ERR-031 | Le contact n'apparaît pas dans l'encadré lors d'un appel téléphonique | retour utilisateur 2026-09-30 | — | moyenne (visuel) | L6c | ouvert — piste : capture de visage (`SceneCapture`/`FaceTexture`) |
|
| ERR-031 | Le contact n'apparaît pas dans l'encadré lors d'un appel téléphonique | retour utilisateur 2026-09-30 | — | moyenne (visuel) | L6c | ouvert — piste : capture de visage (`SceneCapture`/`FaceTexture`) |
|
||||||
| ERR-032 | Scintillement à l'approche d'un personnage | retour utilisateur 2026-09-30 | — | moyenne (visuel) | L6a | **corrigé (CHG-031)**, validé en jeu le 2026-09-30 : on peut s'approcher des PNJ sans scintillement |
|
| ERR-032 | Scintillement à l'approche d'un personnage | retour utilisateur 2026-09-30 | — | moyenne (visuel) | L6a | **corrigé (CHG-031)**, validé en jeu le 2026-09-30 : on peut s'approcher des PNJ sans scintillement |
|
||||||
| ERR-033 | Certaines actions demandent deux clics pour démarrer | retour utilisateur 2026-09-30 | — | moyenne (ergonomie) | L6d | ouvert — capture souris identique à 4.27 ; piste focus UMG (`InputMode:UIOnly … Non-Focusable widget`) |
|
| ERR-033 | Certaines actions demandent deux clics pour démarrer | retour utilisateur 2026-09-30 | — | moyenne (ergonomie) | L6d | ouvert — capture souris identique à 4.27 ; piste focus UMG (`InputMode:UIOnly … Non-Focusable widget`) |
|
||||||
| ERR-034 | La barre de temps est décalée vers la droite | retour utilisateur 2026-09-30 | — | faible (visuel) | L6e | ouvert — piste : mise en page UMG (métrique des polices / DPI) ; capture d'écran demandée |
|
| ERR-034 | La barre de temps est décalée vers la droite | retour utilisateur 2026-09-30 | — | faible (visuel) | L6e | **corrigé (CHG-033, CX-B09)** — cause : marge par défaut des `UButton` passée de 2 px (UE4 `FCoreStyle`) à 12 px horizontaux (UE5 `FUMGCoreStyle`) ; 5 boutons × 20 px = 100 px de débordement ; validation en jeu en attente (build L6e) |
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,18 @@ namespace
|
||||||
{
|
{
|
||||||
return FString::Printf(TEXT("(%g,%g,%g,%g)"), M.Left, M.Top, M.Right, M.Bottom);
|
return FString::Printf(TEXT("(%g,%g,%g,%g)"), M.Left, M.Top, M.Right, M.Bottom);
|
||||||
}
|
}
|
||||||
|
/** Remplace par la valeur UE4 chaque composante egale au defaut UE5. Vrai si modifie. */
|
||||||
|
bool FixMargin(FMargin& M, const FMargin& UE5, const FMargin& UE4)
|
||||||
|
{
|
||||||
|
const FMargin Before = M;
|
||||||
|
if (M.Left == UE5.Left) { M.Left = UE4.Left; }
|
||||||
|
if (M.Top == UE5.Top) { M.Top = UE4.Top; }
|
||||||
|
if (M.Right == UE5.Right) { M.Right = UE4.Right; }
|
||||||
|
if (M.Bottom == UE5.Bottom) { M.Bottom = UE4.Bottom; }
|
||||||
|
return !(M == Before);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
ULPFixButtonPaddingCommandlet::ULPFixButtonPaddingCommandlet()
|
ULPFixButtonPaddingCommandlet::ULPFixButtonPaddingCommandlet()
|
||||||
{
|
{
|
||||||
|
|
@ -91,20 +102,23 @@ int32 ULPFixButtonPaddingCommandlet::Main(const FString& Params)
|
||||||
PRAGMA_DISABLE_DEPRECATION_WARNINGS
|
PRAGMA_DISABLE_DEPRECATION_WARNINGS
|
||||||
FButtonStyle Style = Button->WidgetStyle;
|
FButtonStyle Style = Button->WidgetStyle;
|
||||||
PRAGMA_ENABLE_DEPRECATION_WARNINGS
|
PRAGMA_ENABLE_DEPRECATION_WARNINGS
|
||||||
const bool bNormal = Style.NormalPadding == UE5Normal;
|
// Composante par composante : FMargin est serialise champ par champ, une marge 4.27
|
||||||
const bool bPressed = Style.PressedPadding == UE5Pressed;
|
// partiellement modifiee (ex. Top/Bottom seuls) a recu les autres champs du defaut UE5.
|
||||||
|
const FMargin OldNormal = Style.NormalPadding;
|
||||||
|
const FMargin OldPressed = Style.PressedPadding;
|
||||||
|
const bool bNormal = FixMargin(Style.NormalPadding, UE5Normal, UE4NormalPadding);
|
||||||
|
const bool bPressed = FixMargin(Style.PressedPadding, UE5Pressed, UE4PressedPadding);
|
||||||
if (!bNormal && !bPressed)
|
if (!bNormal && !bPressed)
|
||||||
{
|
{
|
||||||
++ButtonsKept;
|
++ButtonsKept;
|
||||||
UE_LOG(LogLPFixButton, Display, TEXT(" garde %s :: %s Normal=%s Pressed=%s"),
|
UE_LOG(LogLPFixButton, Display, TEXT(" garde %s :: %s Normal=%s Pressed=%s"),
|
||||||
*Blueprint->GetName(), *Button->GetName(), *Str(Style.NormalPadding), *Str(Style.PressedPadding));
|
*Blueprint->GetName(), *Button->GetName(), *Str(OldNormal), *Str(OldPressed));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
UE_LOG(LogLPFixButton, Warning, TEXT(" %s :: %s Normal %s%s | Pressed %s%s"),
|
UE_LOG(LogLPFixButton, Warning, TEXT(" %s :: %s Normal %s -> %s | Pressed %s -> %s"),
|
||||||
*Blueprint->GetName(), *Button->GetName(),
|
*Blueprint->GetName(), *Button->GetName(),
|
||||||
*Str(Style.NormalPadding), bNormal ? TEXT(" -> UE4") : TEXT(" (garde)"),
|
*Str(OldNormal), *Str(Style.NormalPadding), *Str(OldPressed), *Str(Style.PressedPadding));
|
||||||
*Str(Style.PressedPadding), bPressed ? TEXT(" -> UE4") : TEXT(" (garde)"));
|
|
||||||
++ButtonsFixed;
|
++ButtonsFixed;
|
||||||
++FixedHere;
|
++FixedHere;
|
||||||
|
|
||||||
|
|
@ -112,14 +126,6 @@ int32 ULPFixButtonPaddingCommandlet::Main(const FString& Params)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (bNormal)
|
|
||||||
{
|
|
||||||
Style.NormalPadding = UE4NormalPadding;
|
|
||||||
}
|
|
||||||
if (bPressed)
|
|
||||||
{
|
|
||||||
Style.PressedPadding = UE4PressedPadding;
|
|
||||||
}
|
|
||||||
Button->Modify();
|
Button->Modify();
|
||||||
Button->SetStyle(Style);
|
Button->SetStyle(Style);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,10 @@
|
||||||
// Les assets 4.27 n'enregistrent la marge que si elle differe du defaut UE4 : charges en 5.5,
|
// Les assets 4.27 n'enregistrent la marge que si elle differe du defaut UE4 : charges en 5.5,
|
||||||
// leurs boutons prennent donc 20 px de large en plus (barre de temps de UI/TopRight decalee).
|
// leurs boutons prennent donc 20 px de large en plus (barre de temps de UI/TopRight decalee).
|
||||||
//
|
//
|
||||||
// La commandlet parcourt les Widget Blueprints de /Game et, pour chaque UButton dont une marge
|
// La commandlet parcourt les Widget Blueprints de /Game et, pour chaque UButton, remplace par la
|
||||||
// vaut exactement le defaut UE5, remet le defaut UE4. Une marge differente (choisie par
|
// valeur UE4 chaque composante de marge egale au defaut UE5 (FMargin est serialise champ par
|
||||||
// l'auteur) n'est pas touchee.
|
// champ : une marge 4.27 partiellement modifiee a recu les autres champs du defaut UE5). Les
|
||||||
|
// composantes choisies par l'auteur ne sont pas touchees. Idempotente.
|
||||||
//
|
//
|
||||||
// Usage :
|
// Usage :
|
||||||
// UnrealEditor-Cmd.exe <projet> -run=LPFixButtonPadding [-DryRun]
|
// UnrealEditor-Cmd.exe <projet> -run=LPFixButtonPadding [-DryRun]
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue