// Token: 0x06001825 RID: 6181 RVA: 0x00081EA0 File Offset: 0x000800A0 public void ApplyDamageToRagdoll(DamageInfo damageInfo) { GameObject gameObject = null; switch (damageInfo.BodyPart) { case BodyPart.Body: gameObject = this.GetBone(BoneIndex.Spine).gameObject; break; case BodyPart.Head: gameObject = this.GetBone(BoneIndex.Head).gameObject; break; case BodyPart.Nuts: gameObject = this.GetBone(BoneIndex.Hips).gameObject; break; } if (gameObject != null) { RagdollBodyPart component = gameObject.GetComponent <RagdollBodyPart>(); if (component != null) { base.StartCoroutine(this.Die(component, damageInfo)); } else { Debug.LogError(gameObject.name + " doesn't contain a RagdollBodyPart component."); } } else { Debug.LogError("Bone GameObject " + damageInfo.BodyPart + " was not found."); } }
// Use this for initialization void Start() { bodyParts = new List <RagdollBodyPart>(); HumanBodyBones[] bones = (HumanBodyBones[])Enum.GetValues(typeof(HumanBodyBones)); for (int i = 0; i < bones.Length; i++) { Transform animatedTransform = AnimatedAnimator.GetBoneTransform(bones[i]); Transform ragdolledTransform = RagdolledAnimator.GetBoneTransform(bones[i]); if (animatedTransform && ragdolledTransform) { if (ragdolledTransform.rigidbody) { RagdollBodyPartCollider part = ragdolledTransform.gameObject.AddComponent <RagdollBodyPartCollider>(); part.script = this; part.part = bones[i]; part.Init(AnimatedAnimator, RagdolledAnimator); bodyParts.Add(part); } else { RagdollBodyPart part = ragdolledTransform.gameObject.AddComponent <RagdollBodyPart>(); part.script = this; part.part = bones[i]; part.Init(AnimatedAnimator, RagdolledAnimator); bodyParts.Add(part); } } } }
public void LoseStrengthChildren(float loseStrength, Transform ignoreChild = null) { loseStrength *= strengthLoseFalloff; foreach (Transform item in transform) { if (ignoreChild != item) { RagdollBodyPart child = item.GetComponent <RagdollBodyPart>(); if (child) { child.LoseStrength(loseStrength); child.LoseStrengthChildren(loseStrength); } } } }
public void LoseStrengthParents(float loseStrength, Transform currentTransform) { RagdollBodyPart parentScript = currentTransform.parent.GetComponent <RagdollBodyPart>(); if (!parentScript) { return; } parentScript.LoseStrength(loseStrength); loseStrength *= strengthLoseFalloff; parentScript.LoseStrengthChildren(loseStrength, currentTransform); LoseStrengthParents(loseStrength, currentTransform.parent); }
// Token: 0x06001826 RID: 6182 RVA: 0x00081F78 File Offset: 0x00080178 private IEnumerator Die(RagdollBodyPart ragdollBodyPart, DamageInfo damageInfo) { this.SetGravity(false); if (damageInfo.IsExplosion) { damageInfo.Force *= (float)damageInfo.Damage; damageInfo.UpwardsForceMultiplier = 10f; } ragdollBodyPart.ApplyDamage(damageInfo); float bTime = 0f; while (bTime < this._hangTime) { bTime += Time.deltaTime; ragdollBodyPart.rigidbody.AddForce(Vector3.down * this._hangTimeDownwardForce); yield return(new WaitForEndOfFrame()); } this.SetGravity(true); yield break; }
public void Hit(RagdollBodyPart part) { switch (part.part) { case HumanBodyBones.Chest: break; case HumanBodyBones.Head: helper.ragdolled = true; Ragdoll(true); break; case HumanBodyBones.Hips: helper.ragdolled = true; Ragdoll(true); break; case HumanBodyBones.Jaw: break; case HumanBodyBones.LastBone: break; case HumanBodyBones.LeftEye: break; case HumanBodyBones.LeftFoot: break; case HumanBodyBones.LeftHand: break; case HumanBodyBones.LeftIndexDistal: break; case HumanBodyBones.LeftIndexIntermediate: break; case HumanBodyBones.LeftIndexProximal: break; case HumanBodyBones.LeftLittleDistal: break; case HumanBodyBones.LeftLittleIntermediate: break; case HumanBodyBones.LeftLittleProximal: break; case HumanBodyBones.LeftLowerArm: break; case HumanBodyBones.LeftLowerLeg: break; case HumanBodyBones.LeftMiddleDistal: break; case HumanBodyBones.LeftMiddleIntermediate: break; case HumanBodyBones.LeftMiddleProximal: break; case HumanBodyBones.LeftRingDistal: break; case HumanBodyBones.LeftRingIntermediate: break; case HumanBodyBones.LeftRingProximal: break; case HumanBodyBones.LeftShoulder: break; case HumanBodyBones.LeftThumbDistal: break; case HumanBodyBones.LeftThumbIntermediate: break; case HumanBodyBones.LeftThumbProximal: break; case HumanBodyBones.LeftToes: break; case HumanBodyBones.LeftUpperArm: break; case HumanBodyBones.LeftUpperLeg: break; case HumanBodyBones.Neck: break; case HumanBodyBones.RightEye: break; case HumanBodyBones.RightFoot: break; case HumanBodyBones.RightHand: break; case HumanBodyBones.RightIndexDistal: break; case HumanBodyBones.RightIndexIntermediate: break; case HumanBodyBones.RightIndexProximal: break; case HumanBodyBones.RightLittleDistal: break; case HumanBodyBones.RightLittleIntermediate: break; case HumanBodyBones.RightLittleProximal: break; case HumanBodyBones.RightLowerArm: break; case HumanBodyBones.RightLowerLeg: break; case HumanBodyBones.RightMiddleDistal: break; case HumanBodyBones.RightMiddleIntermediate: break; case HumanBodyBones.RightMiddleProximal: break; case HumanBodyBones.RightRingDistal: break; case HumanBodyBones.RightRingIntermediate: break; case HumanBodyBones.RightRingProximal: break; case HumanBodyBones.RightShoulder: break; case HumanBodyBones.RightThumbDistal: break; case HumanBodyBones.RightThumbIntermediate: break; case HumanBodyBones.RightThumbProximal: break; case HumanBodyBones.RightToes: break; case HumanBodyBones.RightUpperArm: break; case HumanBodyBones.RightUpperLeg: break; case HumanBodyBones.Spine: break; default: break; } }