private static CalculateDirectionAxis ( |
||
point | ||
return |
private static Vector3 CalculateDirectionAxis(Vector3 point)
{
float num2;
int direction = 0;
CalculateDirection(point, out direction, out num2);
Vector3 zero = Vector3.zero;
if (num2 > 0f)
{
zero[direction] = 1f;
return zero;
}
zero[direction] = -1f;
return zero;
}
private void BuildJoints() { foreach (RagdollBuilder.BoneInfo boneInfo in this.bones) { if (boneInfo.parent != null) { CharacterJoint characterJoint = boneInfo.anchor.gameObject.AddComponent <CharacterJoint>(); boneInfo.joint = characterJoint; characterJoint.axis = RagdollBuilder.CalculateDirectionAxis(boneInfo.anchor.InverseTransformDirection(boneInfo.axis)); characterJoint.swingAxis = RagdollBuilder.CalculateDirectionAxis(boneInfo.anchor.InverseTransformDirection(boneInfo.normalAxis)); characterJoint.anchor = Vector3.zero; characterJoint.connectedBody = boneInfo.parent.anchor.GetComponent <Rigidbody>(); characterJoint.enablePreprocessing = false; SoftJointLimit softJointLimit = default(SoftJointLimit); softJointLimit.contactDistance = 0f; softJointLimit.limit = boneInfo.minLimit; characterJoint.lowTwistLimit = softJointLimit; softJointLimit.limit = boneInfo.maxLimit; characterJoint.highTwistLimit = softJointLimit; softJointLimit.limit = boneInfo.swingLimit; characterJoint.swing1Limit = softJointLimit; softJointLimit.limit = 0f; characterJoint.swing2Limit = softJointLimit; } } }