// Token: 0x06001280 RID: 4736 RVA: 0x0006E4F8 File Offset: 0x0006C6F8 public static AvatarDecorator CreateRemoteAvatar(AvatarGearParts gear, Color skinColor) { AvatarDecorator avatarDecorator = global::AvatarBuilder.CreateAvatarMesh(gear); global::AvatarBuilder.SetupRemoteAvatar(avatarDecorator, skinColor); return(avatarDecorator); }
// Token: 0x060017F5 RID: 6133 RVA: 0x00081768 File Offset: 0x0007F968 public void SpawnRagdoll(DamageInfo damageInfo) { AvatarGearParts ragdollGear = this.Loadout.GetRagdollGear(); this.Ragdoll = global::AvatarBuilder.InstantiateRagdoll(ragdollGear, this.Decorator.Configuration.GetSkinColor()); try { ragdollGear.DestroyGearParts(); this.Ragdoll.transform.position = this.Decorator.transform.position; this.Ragdoll.transform.rotation = this.Decorator.transform.rotation; AvatarDecoratorConfig.CopyBones(this.Decorator.Configuration, this.Ragdoll); foreach (ArrowProjectile arrowProjectile in this.Decorator.GetComponentsInChildren <ArrowProjectile>(true)) { Vector3 localPosition = arrowProjectile.transform.localPosition; Quaternion localRotation = arrowProjectile.transform.localRotation; arrowProjectile.transform.parent = this.Ragdoll.GetBone(BoneIndex.Hips); arrowProjectile.transform.localPosition = localPosition; arrowProjectile.transform.localRotation = localRotation; } foreach (Rigidbody rigidbody in this.Ragdoll.GetComponentsInChildren <Rigidbody>(true)) { if (rigidbody.gameObject.GetComponent <RagdollBodyPart>() == null) { rigidbody.gameObject.AddComponent <RagdollBodyPart>(); } } this.Ragdoll.ApplyDamageToRagdoll(damageInfo); this.Decorator.gameObject.SetActive(false); } catch (Exception message) { Debug.LogWarning(message); } }
// Token: 0x06001284 RID: 4740 RVA: 0x0006E6A0 File Offset: 0x0006C8A0 private static AvatarDecorator CreateAvatarMesh(AvatarGearParts gear) { SkinnedMeshCombiner.Combine(gear.Base, gear.Parts); gear.Parts.ForEach(delegate(GameObject obj) { UnityEngine.Object.Destroy(obj); }); return(gear.Base.GetComponent <AvatarDecorator>()); }
// Token: 0x06001282 RID: 4738 RVA: 0x0006E5A4 File Offset: 0x0006C7A4 public static AvatarDecoratorConfig InstantiateRagdoll(AvatarGearParts gear, Color skinColor) { SkinnedMeshCombiner.Combine(gear.Base, gear.Parts); LayerUtil.SetLayerRecursively(gear.Base.transform, UberstrikeLayer.Ragdoll); gear.Base.GetComponent <SkinnedMeshRenderer>().updateWhenOffscreen = true; AvatarDecoratorConfig component = gear.Base.GetComponent <AvatarDecoratorConfig>(); component.SetSkinColor(skinColor); return(component); }
// Token: 0x060017F3 RID: 6131 RVA: 0x000816A4 File Offset: 0x0007F8A4 public void RebuildDecorator() { if (!this.Decorator) { return; } AvatarGearParts avatarGear = this.Loadout.GetAvatarGear(); if (this._isLocal) { global::AvatarBuilder.UpdateLocalAvatar(avatarGear); } else { this.SetDecorator(global::AvatarBuilder.UpdateRemoteAvatar(this.Decorator, avatarGear, Color.white)); } }
// Token: 0x0600188D RID: 6285 RVA: 0x00083D20 File Offset: 0x00081F20 public AvatarGearParts GetAvatarGear() { bool flag = false; AvatarGearParts avatarGearParts = new AvatarGearParts(); IUnityItem unityItem; if (this._items.TryGetValue(global::LoadoutSlotType.GearHolo, out unityItem)) { avatarGearParts.Base = unityItem.Create(Vector3.zero, Quaternion.identity); } if (!avatarGearParts.Base) { flag = true; avatarGearParts.Base = (UnityEngine.Object.Instantiate(PrefabManager.Instance.DefaultAvatar.gameObject) as GameObject); } if (flag) { foreach (global::LoadoutSlotType loadoutSlotType in LoadoutManager.GearSlots) { if (this._items.TryGetValue(loadoutSlotType, out unityItem)) { GameObject gameObject = unityItem.Create(Vector3.zero, Quaternion.identity); if (gameObject) { avatarGearParts.Parts.Add(gameObject); } } else { GameObject defaultGearItem = Singleton <ItemManager> .Instance.GetDefaultGearItem(ItemUtil.ItemClassFromSlot(loadoutSlotType)); if (defaultGearItem) { GameObject gameObject2 = UnityEngine.Object.Instantiate(defaultGearItem) as GameObject; if (gameObject2) { avatarGearParts.Parts.Add(gameObject2); } } } } } return(avatarGearParts); }
// Token: 0x06001281 RID: 4737 RVA: 0x0006E514 File Offset: 0x0006C714 public static AvatarDecorator UpdateRemoteAvatar(AvatarDecorator avatar, AvatarGearParts gear, Color skinColor) { if (avatar.name != gear.Base.name) { AvatarDecorator avatarDecorator = avatar; avatar = global::AvatarBuilder.CreateAvatarMesh(gear); avatar.transform.ShareParent(avatarDecorator.transform); avatar.gameObject.SetActive(avatarDecorator.gameObject.activeSelf); global::AvatarBuilder.ReparentChildren(avatarDecorator.WeaponAttachPoint, avatar.WeaponAttachPoint); UnityEngine.Object.Destroy(avatarDecorator.gameObject); global::AvatarBuilder.SetupRemoteAvatar(avatar, skinColor); } else { global::AvatarBuilder.UpdateAvatarMesh(avatar, gear); global::AvatarBuilder.SetupRemoteAvatar(avatar, skinColor); } return(avatar); }
// Token: 0x06001283 RID: 4739 RVA: 0x0006E5FC File Offset: 0x0006C7FC private static void UpdateAvatarMesh(AvatarDecorator avatar, AvatarGearParts gear) { if (!avatar) { Debug.LogError("AvatarDecorator is null!"); return; } gear.Parts.Add(gear.Base); foreach (ParticleSystem particleSystem in avatar.GetComponentsInChildren <ParticleSystem>(true)) { UnityEngine.Object.Destroy(particleSystem.gameObject); } SkinnedMeshCombiner.Update(avatar.gameObject, gear.Parts); avatar.renderer.receiveShadows = false; gear.Parts.ForEach(delegate(GameObject obj) { UnityEngine.Object.Destroy(obj); }); }
// Token: 0x0600127E RID: 4734 RVA: 0x0006E3B0 File Offset: 0x0006C5B0 public static void UpdateLocalAvatar(AvatarGearParts gear) { if (GameState.Current.Avatar.Decorator.name != gear.Base.name) { AvatarDecorator decorator = GameState.Current.Avatar.Decorator; AvatarDecorator avatarDecorator = global::AvatarBuilder.CreateAvatarMesh(gear); UnityEngine.Object.DontDestroyOnLoad(avatarDecorator.gameObject); avatarDecorator.transform.ShareParent(decorator.transform); avatarDecorator.gameObject.SetActive(decorator.gameObject.activeSelf); global::AvatarBuilder.ReparentChildren(decorator.WeaponAttachPoint, avatarDecorator.WeaponAttachPoint); UnityEngine.Object.Destroy(decorator.gameObject); GameState.Current.Avatar.SetDecorator(avatarDecorator); global::AvatarBuilder.SetupLocalAvatar(GameState.Current.Avatar.Decorator); } else if (GameState.Current.Avatar.Decorator) { global::AvatarBuilder.UpdateAvatarMesh(GameState.Current.Avatar.Decorator, gear); global::AvatarBuilder.SetupLocalAvatar(GameState.Current.Avatar.Decorator); } else { Debug.LogError("No local Player created yet! Call 'CreateLocalPlayerAvatar' first!"); } }
// Token: 0x0600188E RID: 6286 RVA: 0x00083E44 File Offset: 0x00082044 public AvatarGearParts GetRagdollGear() { AvatarGearParts avatarGearParts = new AvatarGearParts(); try { IUnityItem unityItem; bool flag; if (this._items.TryGetValue(global::LoadoutSlotType.GearHolo, out unityItem)) { flag = !unityItem.IsLoaded; if (unityItem.Prefab) { HoloGearItem component = unityItem.Prefab.GetComponent <HoloGearItem>(); if (component && component.Configuration.Ragdoll) { avatarGearParts.Base = (UnityEngine.Object.Instantiate(component.Configuration.Ragdoll.gameObject) as GameObject); } else { avatarGearParts.Base = (UnityEngine.Object.Instantiate(PrefabManager.Instance.DefaultRagdoll.gameObject) as GameObject); } } else { avatarGearParts.Base = (UnityEngine.Object.Instantiate(PrefabManager.Instance.DefaultRagdoll.gameObject) as GameObject); } } else { flag = true; avatarGearParts.Base = (UnityEngine.Object.Instantiate(PrefabManager.Instance.DefaultRagdoll.gameObject) as GameObject); } if (flag) { foreach (global::LoadoutSlotType loadoutSlotType in LoadoutManager.GearSlots) { if (this._items.TryGetValue(loadoutSlotType, out unityItem)) { GameObject gameObject = unityItem.Create(Vector3.zero, Quaternion.identity); if (gameObject) { avatarGearParts.Parts.Add(gameObject); } } else if (Singleton <ItemManager> .Instance.TryGetDefaultItem(ItemUtil.ItemClassFromSlot(loadoutSlotType), out unityItem)) { GameObject gameObject2 = unityItem.Create(Vector3.zero, Quaternion.identity); if (gameObject2) { avatarGearParts.Parts.Add(gameObject2); } } } } } catch (Exception exception) { Debug.LogException(exception); } return(avatarGearParts); }