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); } } } }
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; }