private void SetReplacementRenderMaterial(ref ViewModel.MeshInstance.ReplacementRenderer rr, int itsa, Material mat) { if (!this.disposed) { if (rr.initialized) { rr.SetOverride(this.originalMaterials, mat, itsa); } else { this.legacy = (ViewModel.force_legacy_fallback ? true : this.renderer.sharedMesh.subMeshCount > 1); rr.Initialize(this.renderer, this.renderer, this.originalMaterials, mat, itsa, this.legacy); } Material[] materialArray = rr.UpdateMaterials(this.legacy); if (!this.legacy) { if (materialArray != null) { if (rr.offset == 0) { rr.offset = (int)this.modifiedMaterials.Length; Array.Resize<Material>(ref this.modifiedMaterials, (int)this.modifiedMaterials.Length + (int)this.originalMaterials.Length); } int num = rr.offset; for (int i = 0; i < (int)this.originalMaterials.Length; i++) { this.modifiedMaterials[num] = materialArray[i]; num++; } } else if (rr.offset != 0) { int num1 = rr.offset; for (int j = rr.offset + (int)this.originalMaterials.Length; j < (int)this.modifiedMaterials.Length; j++) { this.modifiedMaterials[num1] = this.modifiedMaterials[j]; num1++; } Array.Resize<Material>(ref this.modifiedMaterials, (int)this.modifiedMaterials.Length - (int)this.originalMaterials.Length); rr.offset = 0; } this.renderer.sharedMaterials = this.modifiedMaterials; } } }