private bool CreateRagdoll() { if (this.ragdollPrefab != null) { ArmorModelRenderer local = this.ragdollPrefab.GetLocal <ArmorModelRenderer>(); if (local != null) { AnimationClip clip; float num; ActorRig actorRig = local.actorRig; if ((actorRig != null) && actorRig.FindPoseClip("sleep", out clip, out num)) { this.ragdollInstance = Object.Instantiate(this.ragdollPrefab, base.transform.position, base.transform.rotation) as Ragdoll; this.ragdollInstance.sourceMain = this; GameObject gameObject = this.ragdollInstance.gameObject; Object.Destroy(gameObject, 80f); gameObject.SampleAnimation(clip, num); local = this.ragdollInstance.GetLocal <ArmorModelRenderer>(); ArmorModelMemberMap map = new ArmorModelMemberMap(); bool flag = false; flag |= BindArmorMap <ArmorModelFeet>(this.footArmor, ref map); flag |= BindArmorMap <ArmorModelLegs>(this.legArmor, ref map); flag |= BindArmorMap <ArmorModelTorso>(this.torsoArmor, ref map); if (flag | BindArmorMap <ArmorModelHead>(this.headArmor, ref map)) { local.BindArmorModels(map); } return(true); } } } return(false); }
private static void BindRenderer <TArmorModel>(ArmorModelRenderer prefabRenderer, ArmorDataBlock armor, MeshFilter filter, MeshRenderer renderer) where TArmorModel : ArmorModel <TArmorModel>, new() { TArmorModel armorModel; if (armor != null) { armorModel = armor.GetArmorModel <TArmorModel>(); if ((armorModel == null) && (prefabRenderer != null)) { armorModel = prefabRenderer.GetArmorModel <TArmorModel>(); } } else if (prefabRenderer != null) { armorModel = prefabRenderer.GetArmorModel <TArmorModel>(); } else { return; } if (armorModel != null) { Mesh mesh; if (ArmorModelRenderer.Censored && (armorModel.censoredModel != null)) { armorModel = armorModel.censoredModel; } if ((armorModel != null) && armorModel.actorMeshInfo.FindPose("sleep", out mesh)) { filter.sharedMesh = mesh; renderer.sharedMaterials = armorModel.sharedMaterials; } } }
private bool CreateRagdoll() { AnimationClip animationClip; float single; if (this.ragdollPrefab) { ArmorModelRenderer local = this.ragdollPrefab.GetLocal <ArmorModelRenderer>(); if (local) { ActorRig actorRig = local.actorRig; if (actorRig) { if (actorRig.FindPoseClip("sleep", out animationClip, out single)) { this.ragdollInstance = UnityEngine.Object.Instantiate(this.ragdollPrefab, base.transform.position, base.transform.rotation) as Ragdoll; this.ragdollInstance.sourceMain = this; GameObject gameObject = this.ragdollInstance.gameObject; UnityEngine.Object.Destroy(gameObject, 80f); gameObject.SampleAnimation(animationClip, single); local = this.ragdollInstance.GetLocal <ArmorModelRenderer>(); ArmorModelMemberMap armorModelMemberMaps = new ArmorModelMemberMap(); if (false | SleepingAvatar.BindArmorMap <ArmorModelFeet>(this.footArmor, ref armorModelMemberMaps) | SleepingAvatar.BindArmorMap <ArmorModelLegs>(this.legArmor, ref armorModelMemberMaps) | SleepingAvatar.BindArmorMap <ArmorModelTorso>(this.torsoArmor, ref armorModelMemberMaps) | SleepingAvatar.BindArmorMap <ArmorModelHead>(this.headArmor, ref armorModelMemberMaps)) { local.BindArmorModels(armorModelMemberMaps); } return(true); } } } } return(false); }
private static bool GetCharacterStuff(ref ConsoleSystem.Arg args, out Character character, out CameraMount camera, out ItemRepresentation itemRep, out ArmorModelRenderer armor) { character = null; itemRep = null; armor = null; camera = CameraMount.current; if (!camera) { args.ReplyWith("Theres no active camera mount."); return false; } character = IDBase.GetMain(camera) as Character; if (!character) { args.ReplyWith("theres no character for the current mounted camera"); return false; } armor = character.GetLocal<ArmorModelRenderer>(); InventoryHolder local = character.GetLocal<InventoryHolder>(); if (local) { itemRep = local.itemRepresentation; } return true; }
private void RebindRenderers() { ArmorModelRenderer prefabRenderer = (this.ragdollPrefab == null) ? null : this.ragdollPrefab.GetLocal <ArmorModelRenderer>(); BindRenderer <ArmorModelFeet>(prefabRenderer, this.footArmor, this.footMeshFilter, this.footRenderer); BindRenderer <ArmorModelLegs>(prefabRenderer, this.legArmor, this.legMeshFilter, this.legRenderer); BindRenderer <ArmorModelTorso>(prefabRenderer, this.torsoArmor, this.torsoMeshFilter, this.torsoRenderer); BindRenderer <ArmorModelHead>(prefabRenderer, this.headArmor, this.headMeshFilter, this.headRenderer); }
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 void ClientLocalDeath() { Ragdoll ragdoll = this.DeathRagdoll(); if (base.localControlled) { if (!actor.forceThirdPerson) { CameraMount componentInChildren = base.GetComponentInChildren <CameraMount>(); if ((componentInChildren != null) && componentInChildren.open) { Transform transform; bool flag; RagdollTransferInfoProvider controller = base.controller as RagdollTransferInfoProvider; if (controller != null) { try { flag = controller.RagdollTransferInfo.FindHead(ragdoll.transform, out transform); } catch (Exception exception) { Debug.LogException(exception, this); transform = null; flag = false; } } else { transform = null; flag = false; } if (flag) { Vector3 position = transform.InverseTransformPoint(componentInChildren.transform.position); position.y += 0.08f; Vector3 vector2 = transform.TransformPoint(position); ragdoll.origin += vector2 - transform.position; CameraMount.CreateTemporaryCameraMount(componentInChildren, transform).camera.nearClipPlane = 0.02f; } ArmorModelRenderer local = ragdoll.GetLocal <ArmorModelRenderer>(); if (local != null) { local.enabled = false; } } else { Debug.Log("No camera?"); } } Object.Destroy(base.GetComponent <LocalDamageDisplay>()); } }
private void RebindRenderers() { ArmorModelRenderer local; if (!this.ragdollPrefab) { local = null; } else { local = this.ragdollPrefab.GetLocal <ArmorModelRenderer>(); } ArmorModelRenderer armorModelRenderer = local; SleepingAvatar.BindRenderer <ArmorModelFeet>(armorModelRenderer, this.footArmor, this.footMeshFilter, this.footRenderer); SleepingAvatar.BindRenderer <ArmorModelLegs>(armorModelRenderer, this.legArmor, this.legMeshFilter, this.legRenderer); SleepingAvatar.BindRenderer <ArmorModelTorso>(armorModelRenderer, this.torsoArmor, this.torsoMeshFilter, this.torsoRenderer); SleepingAvatar.BindRenderer <ArmorModelHead>(armorModelRenderer, this.headArmor, this.headMeshFilter, this.headRenderer); }
private Ragdoll CreateRagdoll() { CharacterRagdollTrait trait = base.GetTrait <CharacterRagdollTrait>(); if (!trait) { return(null); } GameObject gameObject = UnityEngine.Object.Instantiate(trait.ragdollPrefab, base.transform.position, base.transform.rotation) as GameObject; Ragdoll component = gameObject.GetComponent <Ragdoll>(); component.sourceMain = base.idMain; this._ragdollInstance = gameObject; UnityEngine.Object.Destroy(gameObject, 80f); this.deathShot.LinkRagdoll(base.transform, gameObject); ArmorModelRenderer local = base.GetLocal <ArmorModelRenderer>(); ArmorModelRenderer armorModelRenderer = component.GetLocal <ArmorModelRenderer>(); if (local && armorModelRenderer) { armorModelRenderer.BindArmorModels(local.GetArmorModelMemberMapCopy()); } return(component); }
private Ragdoll CreateRagdoll() { CharacterRagdollTrait trait = base.GetTrait <CharacterRagdollTrait>(); if (trait == null) { return(null); } GameObject obj2 = Object.Instantiate(trait.ragdollPrefab, base.transform.position, base.transform.rotation) as GameObject; Ragdoll component = obj2.GetComponent <Ragdoll>(); component.sourceMain = base.idMain; this._ragdollInstance = obj2; Object.Destroy(obj2, 80f); this.deathShot.LinkRagdoll(base.transform, obj2); ArmorModelRenderer local = base.GetLocal <ArmorModelRenderer>(); ArmorModelRenderer renderer2 = component.GetLocal <ArmorModelRenderer>(); if ((local != null) && (renderer2 != null)) { renderer2.BindArmorModels(local.GetArmorModelMemberMapCopy()); } return(component); }
private static bool GetCharacterStuff(ref ConsoleSystem.Arg args, out Character character, out CameraMount camera, out ItemRepresentation itemRep, out ArmorModelRenderer armor) { character = null; itemRep = null; armor = null; camera = CameraMount.current; if (!camera) { args.ReplyWith("Theres no active camera mount."); return(false); } character = IDBase.GetMain(camera) as Character; if (!character) { args.ReplyWith("theres no character for the current mounted camera"); return(false); } armor = character.GetLocal <ArmorModelRenderer>(); InventoryHolder local = character.GetLocal <InventoryHolder>(); if (local) { itemRep = local.itemRepresentation; } return(true); }