Example #1
0
 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;
         }
     }
 }