Ejemplo n.º 1
0
    private void setupCutSkin()
    {
        MeshRenderer meshRenderer        = null;
        getMesh      componentInChildren = base.transform.GetComponentInChildren <getMesh>();

        if (componentInChildren)
        {
            meshRenderer = componentInChildren.transform.GetComponent <MeshRenderer>();
        }
        if (meshRenderer)
        {
            for (int i = 0; i < meshRenderer.sharedMaterials.Length; i++)
            {
                if (!meshRenderer.sharedMaterials[i].name.Contains("JustBlood"))
                {
                    if (this.slmi.mat != null)
                    {
                        Material[] materials = meshRenderer.materials;
                        materials[i]           = this.slmi.mat;
                        meshRenderer.materials = materials;
                    }
                    MaterialPropertyBlock materialPropertyBlock = new MaterialPropertyBlock();
                    materialPropertyBlock.SetColor("_Color", this.slmi.matColor);
                    if (this.slmi.bloodPropertyBlock != null)
                    {
                        materialPropertyBlock.SetFloat("_Damage1", this.slmi.bloodPropertyBlock.GetFloat("_Damage1"));
                        materialPropertyBlock.SetFloat("_Damage2", this.slmi.bloodPropertyBlock.GetFloat("_Damage2"));
                        materialPropertyBlock.SetFloat("_Damage3", this.slmi.bloodPropertyBlock.GetFloat("_Damage3"));
                        materialPropertyBlock.SetFloat("_Damage4", this.slmi.bloodPropertyBlock.GetFloat("_Damage4"));
                    }
                    meshRenderer.SetPropertyBlock(materialPropertyBlock);
                }
            }
        }
    }
Ejemplo n.º 2
0
    private IEnumerator setupCutSkin(GameObject go, bool skinny)
    {
        GameObject source;

        if (skinny)
        {
            source = this.MyPartSkinny;
        }
        else
        {
            source = this.MyPart;
        }
        if (source == null)
        {
            yield break;
        }
        MeshRenderer r = null;

        if (go)
        {
            getMesh componentInChildren = go.GetComponentInChildren <getMesh>();
            if (componentInChildren)
            {
                r = componentInChildren.transform.GetComponent <MeshRenderer>();
            }
        }
        if (r)
        {
            for (int i = 0; i < r.materials.Length; i++)
            {
                if (!r.materials[i].name.Contains("JustBlood"))
                {
                    MeshRenderer mr = source.GetComponent <MeshRenderer>();
                    this.sourceMat = r.material;
                    if (mr)
                    {
                        this.sourceMat = mr.material;
                    }
                    SkinnedMeshRenderer sm = source.GetComponent <SkinnedMeshRenderer>();
                    if (sm)
                    {
                        this.sourceMat = sm.material;
                    }
                    Material[] newMats = r.materials;
                    newMats[i]  = this.sourceMat;
                    r.materials = newMats;
                    yield return(YieldPresets.WaitForFixedUpdate);

                    MaterialPropertyBlock sourceBlock = new MaterialPropertyBlock();
                    Color sourceColor = default(Color);
                    if (this.propManager)
                    {
                        sourceBlock = this.propManager.bloodPropertyBlock;
                        if (this.isPoisoned)
                        {
                            sourceColor = Scene.SceneTracker.poisonedColor;
                        }
                        else
                        {
                            sourceColor = this.propManager.sourceColor;
                        }
                    }
                    else if (this.setupManager)
                    {
                        sourceBlock = this.setupManager.bloodPropertyBlock;
                        if (this.isPoisoned)
                        {
                            sourceColor = Scene.SceneTracker.poisonedColor;
                        }
                        else
                        {
                            sourceColor = this.setupManager.sourceColor;
                        }
                    }
                    r.GetPropertyBlock(this.bloodPropertyBlock);
                    this.bloodPropertyBlock.SetColor("_Color", sourceColor);
                    this.bloodPropertyBlock.SetFloat("_Damage1", sourceBlock.GetFloat("_Damage1"));
                    this.bloodPropertyBlock.SetFloat("_Damage2", sourceBlock.GetFloat("_Damage2"));
                    this.bloodPropertyBlock.SetFloat("_Damage3", sourceBlock.GetFloat("_Damage3"));
                    this.bloodPropertyBlock.SetFloat("_Damage4", sourceBlock.GetFloat("_Damage4"));
                    r.SetPropertyBlock(this.bloodPropertyBlock);
                }
            }
        }
        else
        {
            MeshRenderer component = source.GetComponent <MeshRenderer>();
            if (component)
            {
                this.sourceMat = component.material;
            }
            SkinnedMeshRenderer component2 = source.GetComponent <SkinnedMeshRenderer>();
            if (component2)
            {
                this.sourceMat = component2.material;
            }
            MaterialPropertyBlock materialPropertyBlock = new MaterialPropertyBlock();
            if (this.propManager)
            {
                materialPropertyBlock = this.propManager.bloodPropertyBlock;
            }
            else if (this.setupManager)
            {
                materialPropertyBlock = this.setupManager.bloodPropertyBlock;
            }
        }
        yield return(null);

        yield break;
    }