public Color GetColorIfNoTexture(Material mat, ShaderTextureProperty texPropertyName) { if (texPropertyName.name.Equals("_BumpMap")) { return(new Color(.5f, .5f, 1f)); } else if (texPropertyName.Equals("_MainTex")) { if (mat != null && mat.HasProperty("_Color")) { try { //need try because can't garantee _Color is a color return(mat.GetColor("_Color")); } catch (Exception) { } } } else if (texPropertyName.name.Equals("_MetallicGlossMap")) { if (mat != null && mat.HasProperty("_Metallic")) { try { //need try because can't garantee _Metallic is a float float v = mat.GetFloat("_Metallic"); Color c = new Color(v, v, v); if (mat.HasProperty("_Glossiness")) { try { c.a = mat.GetFloat("_Glossiness"); } catch (Exception) { } } return(c); } catch (Exception) { } } else { return(new Color(0f, 0f, 0f, .5f)); } } else if (texPropertyName.name.Equals("_ParallaxMap")) { return(new Color(0f, 0f, 0f, 0f)); } else if (texPropertyName.name.Equals("_OcclusionMap")) { return(new Color(1f, 1f, 1f, 1f)); } else if (texPropertyName.name.Equals("_EmissionMap")) { if (mat != null) { if (mat.HasProperty("_EmissionColor")) { try { return(mat.GetColor("_EmissionColor")); } catch (Exception) { } } else { return(Color.black); } } } else if (texPropertyName.name.Equals("_DetailMask")) { return(new Color(0f, 0f, 0f, 0f)); } return(new Color(1f, 1f, 1f, 0f)); }