using UnityEngine; using Slicer; using Unity.Mathematics; using System.Linq; public class Createdoor : MonoBehaviour { static string DCode; static string DMname; static float Thickness; static string ModelNumber; static string ColorID; static Material Material; static Material TambourMat; public static GameObject Patern(string[] code, int nO) { string[] C = _G.OBJs[nO]; DCode=C[61];//ex:D_3?1 GameObject DOORPATERN = new(); if(C[61]!="none" && C[61]!="nodoor" ){ if(DCode.Split('?').Length==1){ string ColorID=UIT.Value(Library.Door,DCode,Header.ColorID).Split("_")[0]; DCode+="?"+ColorID; } DMname = DCode.Split('?')[0]; ModelNumber=UIT.Value("Door",DMname,"Model"); Thickness=DOIT.ConvertStringToNumber(UIT.Value("Door",DMname,"Thick")); ColorID=DCode.Split('?')[1]; if(!UIT.ExistInLibrary(Library.CabTexture, ColorID)){ColorID = UIT.Global(Header.Ext, _G.G).Split("?")[0]; } string Rotation = UIT.Value(Library.CabTexture,ColorID,Header.Rotation); if(Rotation==ColorID){Rotation="0";} //print("ColorID======"+ColorID); Material = Get.MaterialInScene(ColorID+"?"+Rotation,Rotation); //print("Rotation==========="+Rotation); float E = 0f;//edge float sx = DOIT.ConvertStringToNumber(code[3]); float sy = DOIT.ConvertStringToNumber(code[4]); float sz = Thickness; float PW = DOIT.ConvertStringToNumber(code[0]);//Wide of the patern float PH = DOIT.ConvertStringToNumber(code[1]);//Height of the patern float px = -PW / 2f + sx / 2f; float py = PH / 2f - sy / 2f; int DoorQty = (code.Length - 2) / 4; for (int i = 0; i < DoorQty ; i++) { int a = 2 + 4 * i; if (i>0 ) { px += DOIT.ConvertStringToNumber(code[a-3])*0.5f+DOIT.ConvertStringToNumber(code[a+1])*0.5f; if (px >= PW *0.5f) { _G.RTOT += 1; px = - PW / 2f + DOIT.ConvertStringToNumber(code[a+1])*0.5f ; py -= DOIT.ConvertStringToNumber(code[a-2])*0.5f + DOIT.ConvertStringToNumber(code[a+2])*0.5f; } } CreateDoor(DOORPATERN , (i + 1).ToString(), code, a , DOIT.ConvertStringToNumber(code[a+1]), DOIT.ConvertStringToNumber(code[a+2]) , px, py, nO, ModelNumber, C[1]); } float DSw = (PW - E) / PW; float DSh = (PH - E) / PH; DOORPATERN.transform.localScale = new(DSw, DSh, 1); DOORPATERN.name = "D_Patern"; DOORPATERN.tag = "unhit"; return DOORPATERN ; } return DOORPATERN ; } public static void CreateDoor(GameObject DOORPATERN, string dn, string[] code, int a , float Sx, float Sy, float Px, float Py, int nO, string ModelNumber,string cabinetID) { ////print("---------------Create Door---------"); string p=code[a]; string KnobPos=code[a+3]; GameObject Door=new("DOOR"+dn); DCode=_G.OBJs[nO][61]; DCode??=UIT.Global(Header.Door,1); //print("DCode============="+DCode); float frameX=0.125f; float frameY=0.125f; if( _P.FrameDoor=="Insert" || _P.FrameDoor=="Partial" ){ frameX=1.5f; frameY=1.5f; } if( _P.FrameDoor=="FingerGrip"){ frameY=1f; Py-=0.5f; } //CreateCaseEdges(ds, Sx, Sy, Px, Py); //Create Door------------------------------------------------------------------ ////print("DCode====p==="+p);//DCode====p===GL.01 if (p == "p" || p == "d"|| p.Contains("g") ) { // if(ModelNumber=="D_01"){Model_1(Door, Sx-frameX, Sy-frameY, Px, Py,p);} // if(ModelNumber=="D_04"){Model_4(Door, Sx-frameX, Sy-frameY, Px, Py,p);} GetModel( Door, Sx, Sy, Px, Py,p,ModelNumber); if(KnobPos=="3" || KnobPos=="6" || KnobPos=="9" ){CREATE.EmptyPoint(Door, "Pivot_L", Px-Sx*0.5f, 0, 0);}//P1} if(KnobPos=="1" || KnobPos=="4" || KnobPos=="7" ){CREATE.EmptyPoint(Door, "Pivot_R", Px+Sx*0.5f, 0, 0);}//P1} if(KnobPos=="2" ){CREATE.EmptyPoint(Door, "Pivot_D", 0, Py-Sy*0.5f, 0);}//P1} if(KnobPos=="8" ){CREATE.EmptyPoint(Door, "Pivot_U", 0, Py+Sy*0.5f, 0);}//P1} } if (p == "dd") { float PyStart = Py; Py += Sy * 0.25f; GetModel(Door, Sx, Sy * 0.5f, Px, Py, "d", ModelNumber); Py -= Sy * 0.5f; GetModel(Door, Sx, Sy * 0.5f, Px, Py, "d", ModelNumber); Py = PyStart; } //Cut out if (p[..1] == "c"){ CreateEdgeAround(Door, dn, p, Sx, Sy, 0.625f, Px, Py, ModelNumber,cabinetID); } //add Tombour if (p[..1] == "t") { GameObject t = GameObject.CreatePrimitive(PrimitiveType.Cube); t.GetComponent().enabled = false; t.tag = "cabdoor"; t.name = "tambour"; t.GetComponent().sharedMaterial = GetTambourMat();; float e1 = 0; float e2 = 0; float e3 = 0; float e4 = 0; //if (Get.CabValue(model, 40) != "") //{ // e1 = DOIT.ConvertStringToNumber(Get.CabValue(model, 40).Split('_')[0]); // e2 = DOIT.ConvertStringToNumber(Get.CabValue(model, 40).Split('_')[1]); // e3 = DOIT.ConvertStringToNumber(Get.CabValue(model, 40).Split('_')[2]); // e4 = DOIT.ConvertStringToNumber(Get.CabValue(model, 40).Split('_')[3]); //} string tambourEdges ="1_1_1_1"; if (!string.IsNullOrEmpty(tambourEdges)) { e1 = DOIT.ConvertStringToNumber(tambourEdges.Split('_')[0]); e2 = DOIT.ConvertStringToNumber(tambourEdges.Split('_')[1]); e3 = DOIT.ConvertStringToNumber(tambourEdges.Split('_')[2]); e4 = DOIT.ConvertStringToNumber(tambourEdges.Split('_')[3]); } t.transform.localScale = new(Sx - e2 - e4, Sy - e1 - e3, 0.2f); t.transform.position = new(Px - (e2 - e4) / 2, Py - (e1 - e3) / 2, -Thickness / 2 - 0.1f); t.transform.parent = Door.transform; } if ( p != "o" && p != "w" && p != "c" ) { if(p.Contains("g")){AddMenos(Door, p,Sx,Sy,Px, Py); } if(code[a+3]!="0"){ Addknob.Knob(Door,DOIT.ConvertStringToNumber(code[a+1]), DOIT.ConvertStringToNumber(code[a+2]), code[a+3], Px, Py, nO, code[a], Thickness, ModelNumber);//int nO, string cat, float depth, string modelDoor } } Door.transform.SetParent(DOORPATERN.transform); //return ds; } //MENO public static void AddMeno(GameObject Door,float w,float h ,float x, float y, string M) { GameObject meno = GameObject.CreatePrimitive(PrimitiveType.Cube); meno.transform.localScale=new(w,h,0.5f); meno.transform.SetParent(Door.transform); meno.transform.localPosition = new(x,y,0); Material mat=Material; if(M=="W")mat=Get.MaterialInScene("#ffffff_Semi_Flat","0");//UIT_MATERIAL.ColorGlobalbySimpleColor("#ffffff_Semi_Flat"); if(M=="B")mat=Get.MaterialInScene("#222222_Semi_Flat","0");//UIT_MATERIAL.ColorGlobalbySimpleColor("#222222_Semi_Flat"); if(M=="G")mat=Get.MaterialInScene("#222222_Semi_Flat","0");//UIT_MATERIAL.ColorGlobalbySimpleColor("#BFA46F_Semi_Flat"); meno.GetComponent().sharedMaterial = mat; } public static void AddMenoX(GameObject Door, float w, float h, float x, float y, float thickness, string M) { // Matériau (comme ton code) Material mat = Material; if (M == "W") mat = UIT_MATERIAL.ColorGlobalbySimpleColor("#ffffff_Semi_Flat"); if (M == "B") mat = UIT_MATERIAL.ColorGlobalbySimpleColor("#222222_Semi_Flat"); if (M == "G") mat = UIT_MATERIAL.ColorGlobalbySimpleColor("#BFA46F_Semi_Flat"); // Demi-dimensions float hw = w * 0.5f; float hh = h * 0.5f; // Les 4 coins du rectangle du X Vector2 topLeft = new Vector2(x - hw, y + hh); Vector2 topRight = new Vector2(x + hw, y + hh); Vector2 bottomLeft = new Vector2(x - hw, y - hh); Vector2 bottomRight = new Vector2(x + hw, y - hh); // Diagonale 1 : topLeft -> bottomRight CreateLine(Door.transform, "Meno_X_A", topLeft, bottomRight, thickness, mat); // Diagonale 2 : topRight -> bottomLeft CreateLine(Door.transform, "Meno_X_B", topRight, bottomLeft, thickness, mat); } private static void CreateLine(Transform parent, string name, Vector2 a, Vector2 b, float thickness, Material mat) { GameObject go = new(name); go.transform.SetParent(parent, false); LineRenderer lr = go.AddComponent(); lr.positionCount = 2; lr.useWorldSpace = false; lr.alignment = LineAlignment.TransformZ; // Optionnel: coins/bouts plus beaux lr.numCapVertices = 4; lr.numCornerVertices = 4; lr.startWidth = thickness; lr.endWidth = thickness; lr.SetPosition(0, a); lr.SetPosition(1, b); lr.sharedMaterial = mat; } public static GameObject CreateEdgeAround(GameObject ds, string dn, string p, float Sx, float Sy, float Sz, float Px, float Py, string model,string cabinetID) { ////print("Sx==="+Sx); GameObject d = new ("CONTOUR"); d.transform.parent = ds.transform; // string edges =UIT.Value(Library.Cabinet,cabinetID,Header.Cutout);//Cutout // //print("edges===="+edges);//edges====TDL11OVDR1 // if(string.IsNullOrEmpty(edges) || edges=="0_0_0_0")edges="0.75_0.75_0.75_0.75"; string edges="1_1_1_1"; float e1=DOIT.ConvertStringToNumber(edges.Split('_')[0]); float e2=DOIT.ConvertStringToNumber(edges.Split('_')[1]); float e3=DOIT.ConvertStringToNumber(edges.Split('_')[2]); float e4=DOIT.ConvertStringToNumber(edges.Split('_')[3]); if(e1!=0){CreateEdge(d,"ContourT",e1,e2,e3,e4,Sx,Sy,Sz,Px,Py);} if(e2!=0){CreateEdge(d,"ContourR",e1,e2,e3,e4,Sx,Sy,Sz,Px,Py);} if(e3!=0){CreateEdge(d,"ContourB",e1,e2,e3,e4,Sx,Sy,Sz,Px,Py);} if(e4!=0){CreateEdge(d,"ContourL",e1,e2,e3,e4,Sx,Sy,Sz,Px,Py);} if (p[..1] == "t") {//Tambour GameObject center = GameObject.CreatePrimitive(PrimitiveType.Cube); //Rot = Get.DoorValue(DMname, 10); //Rot = Get.DoorValue(DMname, CsvHeaders.Rotation); center.GetComponent().enabled = false; center.transform.localScale = new(Sx - 0.25f - e2 - e4, Sy - e1 - e3, Sz); center.transform.parent = ds.transform; center.transform.position = new(Px - (e2 - e4) / 2, Py - (e1 - e3) / 2, 0.5f); center.name = "d" + dn; center.tag = "wooddoor"; //AddTexture(center,"p"); GameObject cs = GameObject.CreatePrimitive(PrimitiveType.Cube);//Shadow cs.tag = "cabdoor"; cs.name = "cs"; cs.GetComponent().sharedMaterial = GetTambourMat(); e1 = 0; e2 = 0; e3 = 0; e4 = 0; string tambourEdges = Get.LibraryValue(model, CsvHeaders.Tambour_Edges, DataTypes.Cabinet); if (!string.IsNullOrEmpty(tambourEdges)) { e1 = DOIT.ConvertStringToNumber(tambourEdges.Split('_')[0]); e2 = DOIT.ConvertStringToNumber(tambourEdges.Split('_')[1]); e3 = DOIT.ConvertStringToNumber(tambourEdges.Split('_')[2]); e4 = DOIT.ConvertStringToNumber(tambourEdges.Split('_')[3]); } cs.transform.localScale = new(Sx - e2 - e4, Sy - e1 - e3, 0.2f); cs.transform.position = new(Px - (e2 - e4) / 2, Py - (e1 - e3) / 2, 0); cs.transform.parent = d.transform; } return d; } public static void CreateEdge(GameObject d,string name, float e1,float e2,float e3,float e4,float Sx, float Sy, float Sz, float Px, float Py){ GameObject E = GameObject.CreatePrimitive(PrimitiveType.Cube); E.name=name; //AddTexture(E,"p",Material,24*24/Sx,24*24/Sy); E.GetComponent().sharedMaterial=Material; if(name=="ContourT"){ E.transform.localScale = new(Sx, e1, 0.5f); E.transform.position = new(Px, Py + Sy / 2 - e1 / 2, Sz*0.5f); } if(name=="ContourR"){ E.transform.localScale = new(e2, Sy - e1 - e3, 0.5f); E.transform.position = new(Px + Sx / 2 - e2 / 2, Py - (e1 - e3) / 2, Sz*0.5f); } if(name=="ContourB"){ E.transform.localScale = new(Sx, e3, 0.5f); E.transform.position = new(Px, Py - Sy / 2 + e3 / 2, Sz*0.5f); } if(name=="ContourL"){ E.transform.localScale = new(e4, Sy - e1 - e3, 0.5f); E.transform.position = new(Px - Sx / 2 + e4 / 2, Py - (e1 - e3) / 2, Sz*0.5f); } E.transform.SetParent(d.transform); } public static void AddTexture(GameObject Door,string DCat,Material Mat,float scaleMapX,float ScaleMapY) { foreach(Transform Mcx in Door.transform) { Mcx.GetComponent().sharedMaterial = Mat; DOIT.SetSizeTex(Mcx.gameObject, scaleMapX, ScaleMapY, 0, 0, 0, 0, 0, 0); if(Mcx.name=="Top_12" || Mcx.name=="Buttom_12"){DOIT.SetSizeTex(Mcx.gameObject, scaleMapX, ScaleMapY, 90, 90, 0, 0, 0, 0);} if(Mcx.name.IndexOf("Center")!=-1 && ModelNumber!="D_01" && (IsAvailableGlass() || DCat.Contains("g"))) { Mcx.GetComponent().sharedMaterial=Mat; if(DCat.Contains("g")){ Material GlassMat=_G.DOORGLASS; string GlassCode=DCat.Split("?")[0]; if (GlassCode == "g2"){ GlassMat=_G.FROSTYGLASS;} if (GlassCode == "g3"){ GlassMat=_G.FROSTYGLASSDARK;} Mcx.GetComponent().sharedMaterial = GlassMat; DOIT.SetSizeTex(Mcx.gameObject, scaleMapX, ScaleMapY, 0, 0, 0, 0, 0, 0); } } Mcx.GetComponent().shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.On; Mcx.GetComponent().probeAnchor = GameObject.Find("Reflection Probe").transform; Mcx.GetComponent().receiveShadows = true; } } public static bool IsAvailableGlass() { if(_G.PATH=="free"){return true;} DCode??=UIT.Global(Header.Door,1); string DoorID=DCode.Split("?")[0]; string Glass=UIT.Value(Library.Door,DoorID,Header.Glass); if(Glass=="y" ){return true;} return false; } public static GameObject GetModel(GameObject ds, float Sx, float Sy, float Px, float Py, string DCat, string modelNumber) { ////print("Pass GetModel=="+modelNumber); if(modelNumber=="D_29" || modelNumber=="D_KIT" ){modelNumber="D_11";} // D_32 = porte shaker (base D_11) avec lattes verticales au centre (effet beadboard) bool beadboard=false; if(modelNumber=="D_32"){ beadboard=true; modelNumber="D_11"; } //modelNumber="D_17"; Sx -=0.2f; Sy -=0.2f; GameObject DoorModel = new("DoorModel"+ds.name); float EdgeH=DOIT.ConvertStringToNumber( UIT.Value(Library.Door,DMname,Header.E_H) ); float EdgeV=DOIT.ConvertStringToNumber( UIT.Value(Library.Door,DMname,Header.E_V) ); string[] DCodeSplit= DCode.Split("?"); if(DCodeSplit.Length>2){ EdgeH=DOIT.ConvertStringToNumber(DCodeSplit[2]); EdgeV=DOIT.ConvertStringToNumber(DCodeSplit[3]); } if(Sy(); Door.transform.localScale=new(ScaleV,ScaleH,1f); //AddMeno(Door, DCat,Sx,Sy); Door.transform.position=new(Px,Py,0); Door.transform.SetParent(DoorModel.transform); DoorModel.transform.SetParent(ds.transform); //AddMeno(DoorModel, DCat,SizeV,SizeH); AddTexture(Door,DCat,Material,24*24/Sx,24*24/Sy); DoorModel.AddComponent(typeof(MeshSlicerComponent)); DoorModel.transform.GetComponent().Size=new(Sx/SizeV,Sy/SizeH,1f); DoorModel.transform.GetComponent().Slices=new(EdgeScaleV,EdgeScaleH,1f); if(beadboard){ AddVerticalGrooves(ds, Sx, Sy, Px, Py); } return ds; } // Lattes verticales au centre du panneau (effet beadboard) : largeur 0.25, espacées de 2 public static void AddVerticalGrooves(GameObject ds, float Sx, float Sy, float Px, float Py) { float lineWidth=0.25f; float spacing=2f; float innerW=Sx-4f; // panneau intérieur (à l'intérieur du cadre shaker) float innerH=Sy-4f; if(innerW<=0f || innerH<=0f) return; int count=Mathf.FloorToInt(innerW/spacing)+1; if(count<1) return; float totalSpan=(count-1)*spacing; float startX=Px-totalSpan*0.5f; for(int i=0;i 1) { if (GlassCode[1] == "2") { AddMeno(Door, 0.5f,Sy-2, Px,Py, GlassCode[2]); AddMeno(Door, Sx-2,0.5f, Px,Py, GlassCode[2]); } else if (GlassCode[1] == "3") { float offset=(Sy-2)/3; AddMeno(Door, 0.5f,Sy-2, Px,Py, GlassCode[2]); AddMeno(Door, Sx-2,0.5f, Px,Py+offset*0.5f, GlassCode[2]); AddMeno(Door, Sx-2,0.5f, Px,Py-offset*0.5f, GlassCode[2]); } else if (GlassCode[1] == "4") { float offset=(Sy-2)/4; AddMeno(Door, 0.5f,Sy-2, Px,Py, GlassCode[2]); AddMeno(Door, Sx-2,0.5f, Px,Py, GlassCode[2]); AddMeno(Door, Sx-2,0.5f, Px,Py+offset, GlassCode[2]); AddMeno(Door, Sx-2,0.5f, Px,Py-offset, GlassCode[2]); } else if (GlassCode[1] == "5") { float offsety=(Sy-2)/6; AddMeno(Door, 0.5f,Sy-2, Px,Py, GlassCode[2]); AddMeno(Door, Sx-2,0.5f, Px,Py, GlassCode[2]); AddMeno(Door, Sx-2,0.5f, Px,Py+offsety, GlassCode[2]); AddMeno(Door, Sx-2,0.5f, Px,Py+offsety*2, GlassCode[2]); AddMeno(Door, Sx-2,0.5f, Px,Py-offsety, GlassCode[2]); AddMeno(Door, Sx-2,0.5f, Px,Py-offsety*2, GlassCode[2]); } else if (GlassCode[1] == "6") { float offsetx=(Sx-2)/4; float offsety=(Sy-2)/4; AddMeno(Door, 0.5f,Sy-2, Px,Py, GlassCode[2]); AddMeno(Door, Sx-2,0.5f, Px,Py, GlassCode[2]); AddMeno(Door, 0.5f,Sy-2, Px+offsetx,Py, GlassCode[2]); AddMeno(Door, 0.5f,Sy-2, Px-offsetx,Py, GlassCode[2]); AddMeno(Door, Sx-2,0.5f, Px,Py+offsety, GlassCode[2]); AddMeno(Door, Sx-2,0.5f, Px,Py-offsety, GlassCode[2]); } else if (GlassCode[1] == "7") { float offsetx=(Sx-2)/3; AddMeno(Door, Sx-2,0.5f, Px,Py, GlassCode[2]); AddMeno(Door, 0.5f,Sy-2, Px+offsetx*0.5f,Py, GlassCode[2]); AddMeno(Door, 0.5f,Sy-2, Px-offsetx*0.5f,Py, GlassCode[2]); } else if (GlassCode[1] == "8") { float offsetx=(Sx-2)/4; AddMeno(Door, Sx-2,0.5f, Px,Py, GlassCode[2]); AddMeno(Door, 0.5f,Sy-2, Px,Py, GlassCode[2]); AddMeno(Door, 0.5f,Sy-2, Px+offsetx,Py, GlassCode[2]); AddMeno(Door, 0.5f,Sy-2, Px-offsetx,Py, GlassCode[2]); } else if (GlassCode[1] == "9") { float offsetx=(Sx-2)/6; AddMeno(Door, Sx-2,0.5f, Px,Py, GlassCode[2]); AddMeno(Door, 0.5f,Sy-2, Px,Py, GlassCode[2]); AddMeno(Door, 0.5f,Sy-2, Px+offsetx,Py, GlassCode[2]); AddMeno(Door, 0.5f,Sy-2, Px+offsetx*2,Py, GlassCode[2]); AddMeno(Door, 0.5f,Sy-2, Px-offsetx,Py, GlassCode[2]); AddMeno(Door, 0.5f,Sy-2, Px-offsetx*2,Py, GlassCode[2]); } else if (GlassCode[1] == "10") { float offsetx=(Sx-4)*0.5f; float offsety=(Sy-4)*0.5f; AddMeno(Door, Sx-2,0.5f, Px,offsety-2, GlassCode[2]); AddMeno(Door, Sx-2,0.5f, Px,-offsety+2, GlassCode[2]); AddMeno(Door, 0.5f,Sy-2, Px+offsetx-2,Py, GlassCode[2]); AddMeno(Door, 0.5f,Sy-2, Px-offsetx+2,Py, GlassCode[2]); } else if (GlassCode[1] == "11") { float Wide=Sx-4; float Height=Sy-4; AddMenoX( Door, Wide, Height, Px, Py, 0.5f,GlassCode[2]); } else if (GlassCode[1] == "12") { float Wide=(Sx-4)*0.5f; float Height=Sy-4; AddMenoX( Door, Wide, Height, Px-Wide*0.5f, Py, 0.5f,GlassCode[2]); AddMenoX( Door, Wide, Height, Px+Wide*0.5f, Py, 0.5f,GlassCode[2]); } else if (GlassCode[1] == "13") { float Wide=(Sx-4)*0.33f; float Height=Sy-4; AddMenoX( Door, Wide, Height, Px-Wide, Py, 0.5f,GlassCode[2]); AddMenoX( Door, Wide, Height, Px, Py, 0.5f,GlassCode[2]); AddMenoX( Door, Wide, Height, Px+Wide, Py, 0.5f,GlassCode[2]); } else if (GlassCode[1] == "14") { float Wide=Sx-4; float Height=(Sy-4)*0.5f; AddMenoX( Door, Wide, Height, Px, Py+Height*0.5f, 0.5f,GlassCode[2]); AddMenoX( Door, Wide, Height, Px, Py-Height*0.5f, 0.5f,GlassCode[2]); } else if (GlassCode[1] == "15") { float Wide=Sx-4; float Height=(Sy-4)*0.33f; AddMenoX( Door, Wide, Height, Px, Py+Height, 0.5f,GlassCode[2]); AddMenoX( Door, Wide, Height, Px, 0, 0.5f,GlassCode[2]); AddMenoX( Door, Wide, Height, Px, Py-Height, 0.5f,GlassCode[2]); } } } //Panel Kit--------------------------------------------------------------------------------------------------------------------------- public static GameObject PaternKit(string Door_ID,string Color_ID, string[] code) { GameObject DOORPATERN = new(); ModelNumber="D_11";//UIT.Value("Door",Door_ID,"Model"); Thickness=DOIT.ConvertStringToNumber(UIT.Value("Door",Door_ID,"Thick")); DMname=Door_ID; DCode=Door_ID+"?"+Color_ID; string Rotation = UIT.Value(Library.CabTexture,Color_ID,Header.Rotation); if(Rotation==ColorID)Rotation="0"; Material = Get.MaterialInScene(Color_ID + "?" + Rotation,Rotation); //GameObject DOORPATERN = new(); float E = 0f;//edge float sx = DOIT.ConvertStringToNumber(code[3]); float sy = DOIT.ConvertStringToNumber(code[4]); float sz = Thickness; float PW = DOIT.ConvertStringToNumber(code[0]);//Wide of the patern float PH = DOIT.ConvertStringToNumber(code[1]);//Height of the patern float px = -PW / 2f + sx / 2f; float py = PH / 2f - sy / 2f; int DoorQty = (code.Length - 2) / 4; for (int i = 0; i < DoorQty ; i++) { int a = 2 + 4 * i; if (i>0 ) { px += DOIT.ConvertStringToNumber(code[a-3])*0.5f+DOIT.ConvertStringToNumber(code[a+1])*0.5f; if (px >= PW *0.5f) { _G.RTOT += 1; px = - PW / 2f + DOIT.ConvertStringToNumber(code[a+1])*0.5f ; py -= DOIT.ConvertStringToNumber(code[a-2])*0.5f + DOIT.ConvertStringToNumber(code[a+2])*0.5f; } } CreateDoorKit(DOORPATERN , (i + 1).ToString(), code, a , DOIT.ConvertStringToNumber(code[a+1]), DOIT.ConvertStringToNumber(code[a+2]) , px, py, ModelNumber); } float DSw = (PW - E) / PW; float DSh = (PH - E) / PH; DOORPATERN.transform.localScale = new(DSw, DSh, 1); DOORPATERN.name = "D_Patern"; DOORPATERN.tag = "unhit"; return DOORPATERN ; } public static void CreateDoorKit(GameObject DOORPATERN, string dn, string[] code, int a , float Sx, float Sy, float Px, float Py, string ModelNumber) { ////print("---------------Create Door---------"); string p=code[a]; GameObject Door=new("DOOR"+dn); GetModel( Door, Sx, Sy, Px, Py,p,ModelNumber); Door.layer=7; Door.transform.SetParent(DOORPATERN.transform); SetLayer(Door, 7); } public static void SetLayer(GameObject Object, int Layer) { Object.layer=Layer; foreach(Transform Mcx in Object.transform) { Mcx.gameObject.layer=Layer; foreach(Transform McxIn in Mcx.transform) { McxIn.gameObject.layer=Layer; foreach(Transform McxInIn in McxIn.transform) { McxInIn.gameObject.layer=Layer; foreach(Transform McxInInIn in McxInIn.transform) { McxInInIn.gameObject.layer=Layer; } } } } } static Material GetTambourMat() { if (TambourMat == null) TambourMat = Resources.Load("MATERIALS/TAMBOUR"); return TambourMat; } }