(Fix) Vider les materiaux surcharges au changement de mesh
Passer du corps A au corps B donnait une silhouette feminine peinte avec la peau et les abdominaux du modele masculin. OverrideMaterials appartient au COMPOSANT et pas au mesh : SetSkeletalMeshAsset remplace l'asset sans y toucher, donc le MID derive de MI_BodyA_a restait colle a l'element 0. Le symptome trompe, parce que le mesh, lui, avait bien change -- seule sa peau ne suivait pas. SetPartMesh() vide les overrides avant d'assigner, et rend la main sans rien faire quand le mesh est deja le bon : un changement de couleur seul continue ainsi de reutiliser les MID en place au lieu de tout reconstruire. Vaut pour toutes les pieces, pas seulement le corps -- changer de tete ou de coiffure donnait le meme symptome. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -133,6 +133,15 @@ private:
|
||||
void ApplyColors(const FCharacterBodySet& BodySet);
|
||||
|
||||
/** Pose un parametre vectoriel sur TOUS les elements d'un mesh. */
|
||||
/**
|
||||
* Assigne un mesh a un composant en vidant d'abord ses materiaux surcharges.
|
||||
*
|
||||
* Indispensable : OverrideMaterials appartient au COMPOSANT, pas au mesh, et
|
||||
* survit donc a un changement d'asset. Sans ce vidage, le corps B garderait
|
||||
* la peau du corps A.
|
||||
*/
|
||||
static void SetPartMesh(USkeletalMeshComponent* MeshComponent, USkeletalMesh* NewMesh);
|
||||
|
||||
static void TintAllElements(USkeletalMeshComponent* MeshComponent, FName Parameter, const FLinearColor& Color);
|
||||
|
||||
/** Le mesh porteur, leader de tous les autres. */
|
||||
|
||||
Reference in New Issue
Block a user