Fix NRE caused by missing root bone (#149)

Fixes: #135
This commit is contained in:
bd_ 2022-12-09 11:40:07 -08:00 committed by GitHub
parent 5911973e9d
commit b7b4fde863
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -197,14 +197,24 @@ namespace nadena.dev.modular_avatar.core.editor
newBindPoses[i] = Bp; newBindPoses[i] = Bp;
} }
var rootBone = renderer.rootBone;
var scaleBone = rootBone;
if (rootBone == null)
{
// Sometimes meshes have no root bone set. This is usually not ideal, but let's make sure we don't
// choke on the scale computation below.
scaleBone = renderer.bones[0];
}
dst.bindposes = newBindPoses; dst.bindposes = newBindPoses;
renderer.bones = newBones; renderer.bones = newBones;
renderer.sharedMesh = dst; renderer.sharedMesh = dst;
var newRootBone = BoneDatabase.GetRetargetedBone(renderer.rootBone, true); var newRootBone = BoneDatabase.GetRetargetedBone(rootBone, true);
var newScaleBone = BoneDatabase.GetRetargetedBone(scaleBone, true);
var oldLossyScale = renderer.rootBone.transform.lossyScale; var oldLossyScale = scaleBone.transform.lossyScale;
var newLossyScale = newRootBone.transform.lossyScale; var newLossyScale = newScaleBone.transform.lossyScale;
var bounds = renderer.localBounds; var bounds = renderer.localBounds;
bounds.extents = new Vector3( bounds.extents = new Vector3(