Beispiel #1
0
 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);
 }
Beispiel #2
0
    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;
            }
        }
    }
Beispiel #3
0
    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);
    }
Beispiel #4
0
 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;
 }
Beispiel #5
0
    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);
    }
Beispiel #6
0
    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>());
        }
    }
Beispiel #7
0
    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>());
        }
    }
Beispiel #8
0
    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);
    }
Beispiel #9
0
    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);
    }
Beispiel #10
0
    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);
    }
Beispiel #11
0
    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);
    }