Skip to content

Commit eaeb4cf

Browse files
committed
Fix skeleton changes not being detected when switching between hairstyles with same amount of bones
1 parent da7eb91 commit eaeb4cf

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

CustomizePlus/Armatures/Data/Armature.cs

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,12 +172,32 @@ public bool IsSkeletonUpdated(CharacterBase* cBase)
172172
{
173173
for (var i = 0; i < cBase->Skeleton->PartialSkeletonCount; ++i)
174174
{
175+
if (i == 2)
176+
continue; //hair is handled separately
177+
175178
var newPose = cBase->Skeleton->PartialSkeletons[i].GetHavokPose(Constants.TruePoseIndex);
176179

177180
if (newPose != null
178181
&& newPose->Skeleton->Bones.Length != _partialSkeletons[i].Length)
179182
return true;
180-
//todo: compare bones for hair partial skeleton [2]
183+
}
184+
185+
//handle hair separately because different hairstyles can have the same amount of bones.
186+
if(cBase->Skeleton->PartialSkeletonCount > 2)
187+
{
188+
var newPose = cBase->Skeleton->PartialSkeletons[2].GetHavokPose(Constants.TruePoseIndex);
189+
190+
if(newPose != null)
191+
{
192+
if(newPose->Skeleton->Bones.Length != _partialSkeletons[2].Length)
193+
return true;
194+
195+
for(var i = 0; i < newPose->Skeleton->Bones.Length; i++)
196+
{
197+
if (newPose->Skeleton->Bones[i].Name.String != _partialSkeletons[2][i].BoneName)
198+
return true;
199+
}
200+
}
181201
}
182202
}
183203

0 commit comments

Comments
 (0)