Fix skeleton changes not being detected when switching between hairstyles with same amount of bones
This commit is contained in:
@@ -172,12 +172,32 @@ public unsafe class Armature
|
|||||||
{
|
{
|
||||||
for (var i = 0; i < cBase->Skeleton->PartialSkeletonCount; ++i)
|
for (var i = 0; i < cBase->Skeleton->PartialSkeletonCount; ++i)
|
||||||
{
|
{
|
||||||
|
if (i == 2)
|
||||||
|
continue; //hair is handled separately
|
||||||
|
|
||||||
var newPose = cBase->Skeleton->PartialSkeletons[i].GetHavokPose(Constants.TruePoseIndex);
|
var newPose = cBase->Skeleton->PartialSkeletons[i].GetHavokPose(Constants.TruePoseIndex);
|
||||||
|
|
||||||
if (newPose != null
|
if (newPose != null
|
||||||
&& newPose->Skeleton->Bones.Length != _partialSkeletons[i].Length)
|
&& newPose->Skeleton->Bones.Length != _partialSkeletons[i].Length)
|
||||||
return true;
|
return true;
|
||||||
//todo: compare bones for hair partial skeleton [2]
|
}
|
||||||
|
|
||||||
|
//handle hair separately because different hairstyles can have the same amount of bones.
|
||||||
|
if(cBase->Skeleton->PartialSkeletonCount > 2)
|
||||||
|
{
|
||||||
|
var newPose = cBase->Skeleton->PartialSkeletons[2].GetHavokPose(Constants.TruePoseIndex);
|
||||||
|
|
||||||
|
if(newPose != null)
|
||||||
|
{
|
||||||
|
if(newPose->Skeleton->Bones.Length != _partialSkeletons[2].Length)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
for(var i = 0; i < newPose->Skeleton->Bones.Length; i++)
|
||||||
|
{
|
||||||
|
if (newPose->Skeleton->Bones[i].Name.String != _partialSkeletons[2][i].BoneName)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user