using System; using UnityEngine; public class DoorMaterial : MonoBehaviour { public static Material getDoorOnCAB(string name, float W, float H,string CAB_PNL) { string textureName = Get.LibraryValue(name, CsvHeaders.Door_Texture,DataTypes.Door);//15 string modelName = Get.LibraryValue(name, CsvHeaders.Door_Model, DataTypes.Door);//12 string contrast = Get.LibraryValue(name, CsvHeaders.Contrast, DataTypes.Door);//32 // shadow or contrast if(string.IsNullOrEmpty(contrast)) { contrast = "1"; } //Texture Material M; if(CAB_PNL=="CAB")M= Instantiate(_G.DOOR_CAB); else M = Instantiate(_G.DOOR_PNL); Texture2D T = Instantiate(Resources.Load("CABTEXTURE/" + textureName)); Texture2D B = Instantiate(Resources.Load("BUMP/B" + modelName)); //Colors string c1 = Hexiset(Get.LibraryValue(name, CsvHeaders.Color_1, DataTypes.Door)); string c2 = Hexiset(Get.LibraryValue(name, CsvHeaders.Color_2, DataTypes.Door)); string c3 = Hexiset(Get.LibraryValue(name, CsvHeaders.Color_3, DataTypes.Door)); //Smoothness Finish string S = Get.LibraryValue(name, CsvHeaders.Finish, DataTypes.Door); if (S.IndexOf("G") != -1) { S = "0.95"; } else if (S.IndexOf("S") != -1) { S = "0.65"; } else if (S.IndexOf("M") != -1) { S = "0.5"; } else { S = "0.5"; Debug.Log("No Finish for " + name); } M.SetTexture("_MainTex", T); M.SetTexture("_Bump", B); M.SetFloat("_normal_str", -0.5f); M.SetFloat("_Shadow", 1f); M.SetFloat("_smootness", DOIT.ConvertStringToNumber(S)); M.SetColor("_c1", DOIT.CSc(c1, 255)); M.SetColor("_c2", DOIT.CSc(c2, 255)); M.SetColor("_c3", DOIT.CSc(c3, 255)); M.SetFloat("_contrast", DOIT.ConvertStringToNumber(contrast)); setShader("Oncab", name, modelName, M, 18, 18); return M; } public static Material getDoorModelPNL(string name, float W, float H, string CAB_PNL) { try { string texturename; if (!_G.UIT) { texturename = Get.LibraryValue(name, CsvHeaders.Door_Texture, DataTypes.Door); } else { texturename = "TEXT.1.1"; } string Modelname; if (!_G.UIT) { Modelname = Get.LibraryValue(name, CsvHeaders.Door_Model, DataTypes.Door); } else { Modelname = UIT.Value("Door", name, "Model"); } string Contrast; if (!_G.UIT) { Contrast = Get.LibraryValue(name, CsvHeaders.Contrast, DataTypes.Door); } else { Contrast = "1"; } if (string.IsNullOrEmpty(Contrast)) { Contrast = "1"; } //Texture Material M; if (CAB_PNL == "CAB") M = Instantiate(_G.DOOR_CAB); else M = Instantiate(_G.DOOR_PNL); Texture2D T = Instantiate(Resources.Load("CABTEXTURE/" + texturename)); Texture2D B = Instantiate(Resources.Load("BUMP/B" + Modelname)); //Color string c1 = Hexiset(Get.LibraryValue(name, CsvHeaders.Color_1, DataTypes.Door)); string c2 = Hexiset(Get.LibraryValue(name, CsvHeaders.Color_2, DataTypes.Door)); string c3 = Hexiset(Get.LibraryValue(name, CsvHeaders.Color_3, DataTypes.Door)); M.SetTexture("_MainTex", T); M.SetTexture("_Bump", B); M.SetFloat("_normal_str", 0.5f); M.SetFloat("_Shadow", 2.0f); M.SetFloat("_smoothness", 0f); M.SetColor("_c1", DOIT.CSc(c1, 255)); M.SetColor("_c2", DOIT.CSc(c2, 255)); M.SetColor("_c3", DOIT.CSc(c3, 255)); setShader("Onpnl", name, Modelname, M, 18, 18); M.SetFloat("_contrast", DOIT.ConvertStringToNumber(Contrast)); return M; } catch (Exception ex) { Debug.LogError($"An error occurred in getDoorModelPNL: {name}"); return null; // You can decide what to return in case of an error. } } public static Material getDoorModelGrey(string name, float W, float H,string CAB_PNL) { print("name===="+name); string Modelname; Modelname = UIT.Value("Door",name,"Model"); Material M = Instantiate(_G.DOOR_PNL); Texture2D B = Instantiate(Resources.Load("BUMP/B" + Modelname)); M.SetTexture("_Bump", B); M.SetTexture("_MainTex", null); M.SetFloat("_normal_str", 1f); M.SetFloat("_Shadow", 1f); M.SetFloat("_smoothness", 0f); M.SetColor("_c1", DOIT.CSc("B7B7B7", 255)); M.SetColor("_c2", DOIT.CSc("B7B7B7", 255)); M.SetColor("_c3", DOIT.CSc("B7B7B7", 255)); setShader("Grey", name, Modelname, M, 24, 24); return M; } public static Material getDoorTexture(string name, float W, float H,string CAB_PNL) { string texturename =Get.LibraryValue(name, CsvHeaders.Door_Texture, DataTypes.Door); string Modelname = Get.LibraryValue(name, CsvHeaders.Door_Model, DataTypes.Door); string Contrast = Get.LibraryValue(name, CsvHeaders.Contrast, DataTypes.Door); if(string.IsNullOrEmpty(Contrast))Contrast="1"; //Texture Material M; if(CAB_PNL=="CAB")M= Instantiate(_G.DOOR_CAB); else M = Instantiate(_G.DOOR_PNL); Texture2D T = Instantiate(Resources.Load("CABTEXTURE/" + texturename)); Texture2D B = Instantiate(Resources.Load("BUMP/B1")); //Colors string c1 = Hexiset(Get.LibraryValue(name, CsvHeaders.Color_1, DataTypes.Door)); string c2 = Hexiset(Get.LibraryValue(name, CsvHeaders.Color_2, DataTypes.Door)); string c3 = Hexiset(Get.LibraryValue(name, CsvHeaders.Color_3, DataTypes.Door)); //Smoothness Finish string S = Get.LibraryValue(name, CsvHeaders.Finish, DataTypes.Door); if (S.IndexOf("G") != -1) { S = "0.95"; } else if (S.IndexOf("S") != -1) { S = "0.65"; } else if (S.IndexOf("M") != -1) { S = "0.5"; } else { S = "0.5"; Debug.Log("No Finish for " + name); } M.SetTexture("_MainTex", T); M.SetTexture("_Bump", B); M.SetFloat("_normal_str", 0f); M.SetFloat("_Shadow", 0f); M.SetFloat("_smootness", DOIT.ConvertStringToNumber(S)); M.SetColor("_c1", DOIT.CSc(c1, 255)); M.SetColor("_c2", DOIT.CSc(c2, 255)); M.SetColor("_c3", DOIT.CSc(c3, 255)); M.SetFloat("_Tile", 1); M.SetFloat("_contrast", DOIT.ConvertStringToNumber(Contrast)); setShader("Texture", name, Modelname, M, W, H); return M; } public static void setShader(string cat, string name, string Modelname, Material M, float W, float H) { //Size float DES = 2.25f; float DET = 2.25f; if (cat == "Texture") { DES = 0; DET = 0; } //WOOD float EWS = DES / W;//Edge wood side float EWT = DET / H;//Edge wood top //BUMP if (cat == "Texture") { DES = 0; DET = 0; } float ES = (DES + 0.0f) / W;//Edge bump side float ET = (DET + 0.0f) / H;//Edge bump top //CENTER WOOD float wwc = 1 - EWS * 2f; float hwc = 1 - EWT * 2f; float rot = EWS; if (Modelname == "2") rot = 0; float scaleS = 2.25f / DES * (W / 18f);//((_G.DES+0.5f))*W/11f;// float scaleT = 2.25f / DET * (H / 18f);//((_G.DET+0.5f))*H/11f;// float ofS = 1 - scaleS; float osT = 1 - scaleT; Vector2 SR = new Vector2(ET / ES, 1); Vector2 OR = new Vector2(1 - ET / ES, 0); Vector2 Pw1 = new Vector2(0.5f - EWS / 2, -0.5f + EWT / 2); Vector2 Pw2 = new Vector2(0, -0.5f + EWT / 2); Vector2 Pw3 = new Vector2(-0.5f + EWS / 2, -0.5f + EWT / 2); Vector2 Pw7 = new Vector2(0.5f - EWS / 2, 0.5f - EWT / 2); Vector2 Pw8 = new Vector2(0, 0.5f - EWT / 2); Vector2 Pw9 = new Vector2(-0.5f + EWS / 2, 0.5f - EWT / 2); float RTE =0; float RC =0; float RSE =0; if (cat != "Texture") { if(!_G.UIT) {RTE = DOIT.ConvertStringToNumber(Get.LibraryValue(name, CsvHeaders.Rotation_Text_Top_2, DataTypes.Door));} else{RTE= DOIT.ConvertStringToNumber( UIT.Value("Door",name,"Rot_H").Split('_')[0] );} if(!_G.UIT) {RC = DOIT.ConvertStringToNumber(Get.LibraryValue(name, CsvHeaders.Rotation_Text_Center_2, DataTypes.Door));} else{RC = DOIT.ConvertStringToNumber(UIT.Value("Door",name,"Rot_V").Split('_')[0] );} if(!_G.UIT) {RSE = DOIT.ConvertStringToNumber(Get.LibraryValue(name, CsvHeaders.Rotation_Text_Side_2, DataTypes.Door));} else{RSE = DOIT.ConvertStringToNumber(UIT.Value("Door",name,"Rot_C").Split('_')[0] );} } M.SetFloat("_RTE", RTE); M.SetFloat("_RC", RC); M.SetFloat("_RSE", RSE); M.SetFloat("_hwc", hwc);//hwc M.SetFloat("_wwc", wwc);//wwc M.SetFloat("_EWT", EWT); M.SetFloat("_EWS", EWS); M.SetFloat("_Rotation", rot); M.SetVector("_pw1", Pw1); M.SetVector("_pw2", Pw2); M.SetVector("_pw3", Pw3); M.SetVector("_pw7", Pw7); M.SetVector("_pw8", Pw8); M.SetVector("_pw9", Pw9); M.SetVector("_SR", SR); M.SetVector("_OR", OR); } public static string Hexiset(string H) { H = H.Replace(".", "").Replace("+", ""); if (H.Length == 5) H += "0"; if (H == "0") H = "000000"; return H; } public static void resetMaterialFromName(Material M, string name) { string texturename = Get.LibraryValue(name, CsvHeaders.Door_Texture, DataTypes.Door);//15 string Modelname = Get.LibraryValue(name, CsvHeaders.Door_Model, DataTypes.Door);//12 string Contrast = Get.LibraryValue(name, CsvHeaders.Contrast, DataTypes.Door);//32 //Material M=Instantiate(_G.DOOR_PNL); Texture2D T = Instantiate(Resources.Load("CABTEXTURE/" + texturename)); Texture2D B = Instantiate(Resources.Load("BUMP/" + Modelname)); //Texture M.SetTexture("_MainTex", T); M.SetTexture("_Bump", B); M.SetFloat("_normal_str", 0.5f); M.SetFloat("_Shadow", 1.0f); M.SetFloat("_smoothness", 0f); //M.SetFloat("_Contrast",1.5f); //Colors string c1 = Hexiset(Get.LibraryValue(name, CsvHeaders.Color_1, DataTypes.Door)); string c2 = Hexiset(Get.LibraryValue(name, CsvHeaders.Color_2, DataTypes.Door)); string c3 = Hexiset(Get.LibraryValue(name, CsvHeaders.Color_3, DataTypes.Door)); M.SetColor("_c1", DOIT.CSc(c1, 255)); M.SetColor("_c2", DOIT.CSc(c2, 255)); M.SetColor("_c3", DOIT.CSc(c3, 255)); setShader("Onpnl", name, Modelname, M, 18, 18); //Contrast M.SetFloat("_contrast", DOIT.ConvertStringToNumber(Contrast)); } }