From d13a17dd26eb7dedd3e0dac5ac4c04c25f8ee85f Mon Sep 17 00:00:00 2001 From: edujiro5972 <336072401+edujiro5972@users.noreply.github.com> Date: Fri, 2 Oct 2026 08:40:54 +0200 Subject: [PATCH] O9b : collision retiree des marqueurs de batiments de la carte (MapMarkers NODE_AddHISM-0/1) Co-Authored-By: Claude Opus 5.5 --- Content/BPs/MapMarkers.uasset | Bin 723520 -> 724564 bytes Docs/Migration/Journal_Modifications.md | 1 + .../LPSetComponentCollisionCommandlet.cpp | 24 +++++++++++++++--- .../LPSetComponentCollisionCommandlet.h | 2 +- 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/Content/BPs/MapMarkers.uasset b/Content/BPs/MapMarkers.uasset index 806a81774d3ce08ed8d8d8012aa7333eeb8037a8..3ccbb986e55bb0caffeb06bfeb0f7050ca86b147 100644 GIT binary patch delta 4699 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 diff --git a/Docs/Migration/Journal_Modifications.md b/Docs/Migration/Journal_Modifications.md index eea5f53..506aa45 100644 --- a/Docs/Migration/Journal_Modifications.md +++ b/Docs/Migration/Journal_Modifications.md @@ -907,3 +907,4 @@ Validation L7c/L7d (2026-10-02, parc, même cadrage) : la nuit reste claire (sol | CHG-060 | 2026-10-02 | O0 | `Docs/Migration/11_Audit_Optimisation.md` §9-10 ; lanceur `LifePlay_profil_O0.bat` corrigé (capture par `-ExecCmds`) | résultats de la mesure en jeu (60 images/s tenues, à-coups du thread de jeu dus aux minuteries Blueprint, 463 Mo de physique) ; produits utiles de la bibliothèque Fab ; lots révisés | `git revert` du commit | | CHG-061 | 2026-10-02 | O1 | `LifePlay.uproject` (20 plugins limités à l'éditeur), `Config/DefaultGame.ini` (16 `DirectoriesToNeverCook`), nouveau `Tools/AuditScriptDeps.py` ; `README.md` : lien Mega de la V1.1 | build Shipping allégé de 387 Mo sans changement de contenu ; build `LifePlay_Build_5.5_O1` | `Tools\Restore.ps1 -Lot O1` ou `git checkout O1-avant -- LifePlay.uproject Config` | | CHG-062 | 2026-10-02 | O9 | nouvelle commandlet `LPSetComponentCollision` ; `Content/BPs/MapMarkers.uasset` : composants `Tree` et `Car` en `NoCollision` (diff avant/après : 2 lignes) | chargement de partie de 71 s (identique en 4.27) dû aux ≈ 160 000 corps physiques des arbres et voitures décoratifs de la carte (décision utilisateur : option 1) ; build `LifePlay_Build_5.5_O9` | `Tools\Restore.ps1 -Lot O9` | +| CHG-063 | 2026-10-02 | O9b | `LPSetComponentCollision` (modèles des nœuds « Add Component ») ; `Content/BPs/MapMarkers.uasset` : modèles `NODE_AddHISM-0` et `-1` (`HISM_C`, marqueurs de bâtiments) en `NoCollision` (diff : 2 lignes) | les clics se font sur les icônes, pas sur les bâtiments (utilisateur) ; ≈ 49 500 corps physiques restants au chargement ; build `LifePlay_Build_5.5_O9b` | `Tools\Restore.ps1 -Lot O9b` | diff --git a/Source/LifePlayEditorTools/LPSetComponentCollisionCommandlet.cpp b/Source/LifePlayEditorTools/LPSetComponentCollisionCommandlet.cpp index 55fc53f..b49a3f6 100644 --- a/Source/LifePlayEditorTools/LPSetComponentCollisionCommandlet.cpp +++ b/Source/LifePlayEditorTools/LPSetComponentCollisionCommandlet.cpp @@ -52,12 +52,29 @@ int32 ULPSetComponentCollisionCommandlet::Main(const FString& Params) UE_LOG(LogLPSetCollision, Warning, TEXT("=== %s : composants [%s] -> profil %s%s ==="), *BPPath, *FString::Join(Names, TEXT(",")), *Profile, bDryRun ? TEXT(" [DRY RUN]") : TEXT("")); + // Composant de la SimpleConstructionScript (par nom de variable), sinon modele d'un noeud "Add Component" + // (Blueprint->ComponentTemplates, par nom d'objet, ex. NODE_AddHISM-0). + auto FindTemplate = [Blueprint](const FString& Name) -> UPrimitiveComponent* + { + if (const USCS_Node* Node = Blueprint->SimpleConstructionScript->FindSCSNode(FName(*Name))) + { + return Cast(Node->ComponentTemplate); + } + for (UActorComponent* Template : Blueprint->ComponentTemplates) + { + if (Template && Template->GetName() == Name) + { + return Cast(Template); + } + } + return nullptr; + }; + TArray Targets; int32 Errors = 0; for (const FString& Name : Names) { - USCS_Node* Node = Blueprint->SimpleConstructionScript->FindSCSNode(FName(*Name)); - UPrimitiveComponent* Template = Node ? Cast(Node->ComponentTemplate) : nullptr; + UPrimitiveComponent* Template = FindTemplate(Name); if (!Template) { ++Errors; @@ -83,8 +100,7 @@ int32 ULPSetComponentCollisionCommandlet::Main(const FString& Params) // Verification apres compilation : relecture des modeles et des composants generes de la classe. for (const FString& Name : Names) { - const USCS_Node* Node = Blueprint->SimpleConstructionScript->FindSCSNode(FName(*Name)); - const UPrimitiveComponent* Template = Node ? Cast(Node->ComponentTemplate) : nullptr; + const UPrimitiveComponent* Template = FindTemplate(Name); if (!Template || Template->GetCollisionProfileName() != FName(*Profile) || (Profile == TEXT("NoCollision") && Template->GetCollisionEnabled() != ECollisionEnabled::NoCollision)) { diff --git a/Source/LifePlayEditorTools/LPSetComponentCollisionCommandlet.h b/Source/LifePlayEditorTools/LPSetComponentCollisionCommandlet.h index 498daac..4becebc 100644 --- a/Source/LifePlayEditorTools/LPSetComponentCollisionCommandlet.h +++ b/Source/LifePlayEditorTools/LPSetComponentCollisionCommandlet.h @@ -7,7 +7,7 @@ // et ~460 Mo de physique en memoire). Ces arbres et voitures sont decoratifs (decision utilisateur). // // Cette commandlet change le profil de collision des composants nommes d'un Blueprint (noeuds de la -// SimpleConstructionScript), recompile et sauvegarde. Controle : le profil et l'etat de collision +// SimpleConstructionScript, ou modeles des noeuds "Add Component" comme NODE_AddHISM-0), recompile et sauvegarde. Controle : le profil et l'etat de collision // sont relus apres modification ; tout ecart, ou composant introuvable : rien n'est sauvegarde. // // Usage :