예제 #1
0
    // 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);
    }
예제 #2
0
    // 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);
        }
    }
예제 #3
0
 // 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>());
 }
예제 #4
0
    // 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);
    }
예제 #5
0
    // 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));
        }
    }
예제 #6
0
    // 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);
    }
예제 #7
0
 // 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);
 }
예제 #8
0
 // 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);
     });
 }
예제 #9
0
 // 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!");
     }
 }
예제 #10
0
    // 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);
    }