/// <summary>
/// Determines whether this IKMappingSpine is valid
/// </summary>
public override bool IsValid(IKSolver solver, Warning.Logger logger) {
if (!base.IsValid(solver, logger)) return false;
foreach (Transform spineBone in spineBones) if (spineBone == null) {
if (logger != null) logger("Spine bones contains a null reference.");
return false;
}
int nodes = 0;
for (int i = 0; i < spineBones.Length; i++) {
if (solver.GetPoint(spineBones[i]) != null) nodes ++;
}
if (nodes == 0) {
if (logger != null) logger("IKMappingSpine does not contain any nodes.");
return false;
}
if (leftUpperArmBone == null) {
if (logger != null) logger("IKMappingSpine is missing the left upper arm bone.");
return false;
}
if (rightUpperArmBone == null) {
if (logger != null) logger("IKMappingSpine is missing the right upper arm bone.");
return false;
}
if (leftThighBone == null) {
if (logger != null) logger("IKMappingSpine is missing the left thigh bone.");
return false;
}
if (rightThighBone == null) {
if (logger != null) logger("IKMappingSpine is missing the right thigh bone.");
return false;
}
if (solver.GetPoint(leftUpperArmBone) == null) {
if (logger != null) logger("Full Body IK is missing the left upper arm node.");
return false;
}
if (solver.GetPoint(rightUpperArmBone) == null) {
if (logger != null) logger("Full Body IK is missing the right upper arm node.");
return false;
}
if (solver.GetPoint(leftThighBone) == null) {
if (logger != null) logger("Full Body IK is missing the left thigh node.");
return false;
}
if (solver.GetPoint(rightThighBone) == null) {
if (logger != null) logger("Full Body IK is missing the right thigh node.");
return false;
}
return true;
}