private static void LoadMaterials() { switch (currentMaterialsPack) { case MaterialsPack.PBR: currentMaterialsPack = MaterialsPack.PBR; shadowCasting = true; break; case MaterialsPack.Simplified: currentMaterialsPack = MaterialsPack.Simplified; shadowCasting = false; break; default: currentMaterialsPack = MaterialsPack.Standart; shadowCasting = false; break; } var mats = LoadMaterialPack(currentMaterialsPack); glassMaterial_disabled = mats[GLASS_OFF_MAT_INDEX]; basic_material = mats[BASIC_MAT_INDEX]; glassMaterial = mats[GLASS_MAT_INDEX]; metal_material = mats[METAL_MAT_INDEX]; green_material = mats[GREEN_MAT_INDEX]; }
public static void ReplaceMaterials(GameObject g, MaterialsPack mpack) { Renderer[] rrs = g.GetComponentsInChildren <Renderer>(); if (rrs.Length > 0) { ReplaceMaterials(rrs, mpack); } }
private static void DefineMaterialPack() { qualityLevel = QualitySettings.GetQualityLevel(); switch (qualityLevel) { case 0: currentMaterialsPack = MaterialsPack.Simplified; break; case 2: currentMaterialsPack = MaterialsPack.PBR; break; default: currentMaterialsPack = MaterialsPack.Standart; break; } }
private static Material[] LoadMaterialPack(MaterialsPack mptype) { var mats = new Material[5]; switch (mptype) { case MaterialsPack.PBR: { mats[BASIC_MAT_INDEX] = Resources.Load <Material>("Materials/Advanced/Basic_PBR"); mats[GLASS_MAT_INDEX] = Resources.Load <Material>("Materials/Advanced/Glass_PBR"); mats[METAL_MAT_INDEX] = Resources.Load <Material>("Materials/Advanced/Metal_PBR"); mats[GREEN_MAT_INDEX] = Resources.Load <Material>("Materials/Advanced/Green_PBR"); mats[GLASS_OFF_MAT_INDEX] = Resources.Load <Material>("Materials/Advanced/GlassOffline_PBR"); break; } case MaterialsPack.Simplified: { mats[GLASS_OFF_MAT_INDEX] = Resources.Load <Material>("Materials/Simplified/GlassOffline"); mats[BASIC_MAT_INDEX] = Resources.Load <Material>("Materials/Simplified/Basic"); mats[GLASS_MAT_INDEX] = Resources.Load <Material>("Materials/Simplified/Glass"); mats[METAL_MAT_INDEX] = Resources.Load <Material>("Materials/Simplified/Metal"); mats[GREEN_MAT_INDEX] = Resources.Load <Material>("Materials/Simplified/Green"); break; } default: { mats[GLASS_OFF_MAT_INDEX] = Resources.Load <Material>("Materials/StandartPack/GlassOffline"); mats[BASIC_MAT_INDEX] = Resources.Load <Material>("Materials/StandartPack/Basic"); mats[GLASS_MAT_INDEX] = Resources.Load <Material>("Materials/StandartPack/Glass"); mats[METAL_MAT_INDEX] = Resources.Load <Material>("Materials/StandartPack/Metal"); mats[GREEN_MAT_INDEX] = Resources.Load <Material>("Materials/StandartPack/Green"); break; } } return(mats); }
public static void ReplaceMaterials(Renderer[] rrs, MaterialsPack mpack) { Material[] materials; if (mpack == currentMaterialsPack) { materials = new Material[5]; materials[BASIC_MAT_INDEX] = basic_material; materials[GLASS_MAT_INDEX] = glassMaterial; materials[GLASS_OFF_MAT_INDEX] = glassMaterial_disabled; materials[GREEN_MAT_INDEX] = green_material; materials[METAL_MAT_INDEX] = metal_material; } else { materials = LoadMaterialPack(mpack); } foreach (Renderer mr in rrs) { bool castShadows = false, receiveShadows = false; if (mr.sharedMaterials != null) { if (mr.sharedMaterials.Length == 1) { if (mr.sharedMaterial != null) { switch (mr.sharedMaterial.name) { case "Basic": case "Basic_PBR": mr.sharedMaterial = materials[BASIC_MAT_INDEX]; castShadows = true; receiveShadows = true; break; case "Glass": case "Glass_PBR": mr.sharedMaterial = materials[GLASS_MAT_INDEX]; castShadows = true; receiveShadows = true; break; case "GlassOffline": case "GlassOffline_PBR": mr.sharedMaterial = materials[GLASS_OFF_MAT_INDEX]; castShadows = true; receiveShadows = true; break; case "Vegetation": case "Green": case "Green_PBR": mr.sharedMaterial = materials[GREEN_MAT_INDEX]; castShadows = true; receiveShadows = true; break; case "Metal": case "Metal_PBR": mr.sharedMaterial = materials[METAL_MAT_INDEX]; castShadows = true; receiveShadows = true; break; case "Sailcloth": castShadows = true; receiveShadows = true; break; case "BillboardMaterial": case "shadedBillboard": if (shadowCasting) { mr.sharedMaterial = billboardShadedMaterial; } else { mr.sharedMaterial = billboardMaterial; } castShadows = true; receiveShadows = true; break; case "ChargedMaterial": case "ChargedMaterial_advanced": mr.sharedMaterial = energyMaterial; castShadows = true; receiveShadows = false; break; } } } else { var sm = mr.sharedMaterials; var sm2 = new Material[sm.Length]; for (int i = 0; i < sm.Length; i++) { if (sm[i] == null) { sm2[i] = null; continue; } switch (sm[i].name) { case "Basic": case "Basic_PBR": sm2[i] = materials[BASIC_MAT_INDEX]; castShadows = true; receiveShadows = true; break; case "Glass": case "Glass_PBR": sm2[i] = materials[GLASS_MAT_INDEX]; castShadows = true; receiveShadows = true; break; case "GlassOffline": case "GlassOffline_PBR": sm2[i] = materials[GLASS_OFF_MAT_INDEX]; castShadows = true; receiveShadows = true; break; case "Vegetation": case "Green": case "Green_PBR": sm2[i] = materials[GREEN_MAT_INDEX]; castShadows = true; receiveShadows = true; break; case "Metal": case "Metal_PBR": sm2[i] = materials[METAL_MAT_INDEX]; castShadows = true; receiveShadows = true; break; case "Sailcloth": castShadows = true; receiveShadows = true; break; case "BillboardMaterial": case "shadedBillboard": if (shadowCasting) { sm2[i] = billboardShadedMaterial; } else { sm2[i] = billboardMaterial; } castShadows = true; receiveShadows = true; break; case "ChargedMaterial": case "ChargedMaterial_advanced": sm2[i] = energyMaterial; castShadows = true; receiveShadows = false; break; default: sm2[i] = sm[i]; break; } } mr.sharedMaterials = sm2; } } if (shadowCasting) { if (castShadows) { mr.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.On; } else { mr.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; } mr.receiveShadows = receiveShadows; } else { mr.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; mr.receiveShadows = false; } } }