public bool FindHead(Transform root, out Transform headBone) { Transform transforms; if (this.providedHeadBoneName) { Transform transforms1 = root.Find(this.headBoneName); transforms = transforms1; headBone = transforms1; return(transforms); } if (!this.providedHeadBone || !this.headBone) { headBone = root; return(false); } StringBuilder stringBuilder = new StringBuilder(); RagdollTransferInfo.FindNameRecurse(this.headBone, stringBuilder); Transform transforms2 = root.Find(stringBuilder.ToString()); transforms = transforms2; headBone = transforms2; return(transforms); }
private void ClientLocalDeath() { Transform transforms; bool flag; Ragdoll ragdoll = this.DeathRagdoll(); if (base.localControlled) { if (!actor.forceThirdPerson) { CameraMount componentInChildren = base.GetComponentInChildren <CameraMount>(); if (!componentInChildren || !componentInChildren.open) { Debug.Log("No camera?"); } else { RagdollTransferInfoProvider ragdollTransferInfoProvider = base.controller as RagdollTransferInfoProvider; if (ragdollTransferInfoProvider == null) { transforms = null; flag = false; } else { try { RagdollTransferInfo ragdollTransferInfo = ragdollTransferInfoProvider.RagdollTransferInfo; flag = ragdollTransferInfo.FindHead(ragdoll.transform, out transforms); } catch (Exception exception) { Debug.LogException(exception, this); transforms = null; flag = false; } } if (flag) { Vector3 vector3 = transforms.InverseTransformPoint(componentInChildren.transform.position); vector3.y = vector3.y + 0.08f; Vector3 vector31 = transforms.TransformPoint(vector3); Ragdoll ragdoll1 = ragdoll; ragdoll1.origin = ragdoll1.origin + (vector31 - transforms.position); CameraMount.CreateTemporaryCameraMount(componentInChildren, transforms).camera.nearClipPlane = 0.02f; } ArmorModelRenderer local = ragdoll.GetLocal <ArmorModelRenderer>(); if (local) { local.enabled = false; } } } UnityEngine.Object.Destroy(base.GetComponent <LocalDamageDisplay>()); } }
private static void FindNameRecurse(Transform child, StringBuilder sb) { Transform transforms = child.parent; if (transforms) { RagdollTransferInfo.FindNameRecurse(transforms, sb); if (sb.Length <= 0) { sb.Append(child.name); } else { sb.Append('/'); } } }