diff --git a/Content/BPs/MapMarkers.uasset b/Content/BPs/MapMarkers.uasset index 806a817..3ccbb98 100644 Binary files a/Content/BPs/MapMarkers.uasset and b/Content/BPs/MapMarkers.uasset differ 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 :