using UnityEngine; public class ConstructBASE : MonoBehaviour { public static void AddCab(int nO)// { //VARIABLES string[] C = _G.OBJs[nO];//CODE CABINET ADN string Name = C[0]; float W = DOIT.ConvertStringToNumber(C[6]); float HB = DOIT.ConvertStringToNumber(C[7]) - DOIT.ConvertStringToNumber(C[10]);//HB HEIGHT BOX ONLY float HBK = DOIT.ConvertStringToNumber(C[7]);//HBK HEIGHT BOX WITH KICK float HBKT = DOIT.ConvertStringToNumber(C[7]) + DOIT.ConvertStringToNumber(C[42].Split("_")[0]);//HBKT HEIGHT BOX WITH KICK AND TOP float DB = DOIT.ConvertStringToNumber(C[8]);//Depth Box float DoorThickness = Get.DoorThickness(nO);//Get.DoorThickness(nO);//SETTING DOOR THICKNESS float DBD = DB + DoorThickness;//Depth Box+Door //float DBC = DB + DOIT.ConvertStringToNumber(C[42].Split('_')[4]);//Depth Box+Counter Projection float K = DOIT.ConvertStringToNumber(C[35]);//KICK HEIGHT float kf = DOIT.ConvertStringToNumber(C[33]);//Kick Front projection float t = DOIT.ConvertStringToNumber(C[9]); //tickness panels float px = DOIT.ConvertStringToNumber(C[15]);//Cabinet position x float py = DOIT.ConvertStringToNumber(C[16]);//Cabinet position y float pz = DOIT.ConvertStringToNumber(C[17]);//Cabinet position z float rx = DOIT.ConvertStringToNumber(C[18]);//Cabinet rotation angle X float ry = DOIT.ConvertStringToNumber(C[19]);//Cabinet rotation angle Y float rz = DOIT.ConvertStringToNumber(C[20]);//Cabinet rotation angle Z float kfl = DOIT.ConvertStringToNumber(C[37]);//kick front left float kfr = DOIT.ConvertStringToNumber(C[38]);//kick front right float fw50=0;//Filler Right float fw51=0;//Filler Left //("C[42]====="+C[42]); string[] CP = C[42].Split('_');//Counter projection float T = DOIT.ConvertStringToNumber(CP[0]);//Counter Top Height float pf = DOIT.ConvertStringToNumber(CP[4]);//Projection front float pb = DOIT.ConvertStringToNumber(CP[2]);//Projection back float pl = DOIT.ConvertStringToNumber(CP[1]);//Projection left float pr = DOIT.ConvertStringToNumber(CP[3]);//Projection right float pbl = DOIT.ConvertStringToNumber(CP[5]);//Projection back left float pbr = DOIT.ConvertStringToNumber(CP[6]);//Projection back right float PosyK = -HBKT*0.5f+K*0.5f;//Kick Y position float OS1 = 0;//Offset on left side float OS2 = 0;//Offset on back float OS3 = 0;//Offset on right side float OS4 = 0;//Offset on front float leftFall = C[45] == "ON" ? T : 0.0f; float backFall = C[46] == "ON" ? T : 0.0f; float rightFall = C[47] == "ON" ? T : 0.0f; float RL;//Retraction Left float RR;//Retraction Right float K1w;//Kick 1 Wide float K2w;//Kick 1 Wide float K3w;//Kick 1 Wide float K4w;//Kick 1 Wide Vector3 K1pos;//K1 position Vector3 K2pos;//K1 position Vector3 K3pos;//K1 position Vector3 K4pos;//K1 position //string Captext;//Caps to add on string texshelf;//Texture shelf string[] C81=C[81].Split("_");//Recover Panel string[] KT=new string[] { C[63], C[62], C[62] };//Kick texture string[] CK;//CODE KICK string[] C39;//Retraction kick Material BLACK_G;//Material for leg Vector3 CenterBox; float backBox,frontBox,leftBox,rightBox; if (C[50].Split('?')[0] != "NONE") { fw50=DOIT.ConvertStringToNumber(C[50].Split("?")[3]);} if (C[51].Split('?')[0] != "NONE") { fw51=DOIT.ConvertStringToNumber(C[51].Split("?")[3]);}// C[51]==f==F1_2?2?90?3 OS4 = DoorThickness; //print("OS4===" + OS4); //SETTING COLLISION VOLUME if (C[48] == "COLLISION" && C[49] == "GHOST") { OS1 = pl + leftFall; OS2 = pb + backFall; OS3 = pr + rightFall; OS4 = Mathf.Max(pf, DoorThickness); } if (C[48] == "COLLISION" && C[49] == "COLLISION") { OS1 = Mathf.Max(pl + leftFall, fw50); OS3 = Mathf.Max(pr + rightFall, fw51); OS2 = pb + backFall; OS4 = Mathf.Max(pf, DoorThickness); } if (C[48] == "GHOST" && C[49] == "COLLISION") { OS1 = fw50; OS3 = fw51; } print("C[81]==="+C[81]);//C[81]===16?0_0_0_0_0_0_0 if(C[81].Split("_").Length!=7){C[81]="0_0_0_0_0_0_0";} C81=C[81].Split("_"); if(C81[0]!="0"){ OS1+=DOIT.ConvertStringToNumber(C81[0].Split('?')[2]);}//C[81] now ==2?2? 5/8_0_2?5? 5/8_0_0_0_0 if(C81[1]!="0"){ OS2+=DOIT.ConvertStringToNumber(C81[1].Split('?')[2]);} if(C81[2]!="0"){ OS3+=DOIT.ConvertStringToNumber(C81[2].Split('?')[2]);} //CREATE BASE GameObject BASE = GameObject.CreatePrimitive(PrimitiveType.Cube);//new GameObject(); //print("HBKT===="+HBKT); BASE.transform.localScale = new(W + OS1 + OS3 + 0.5f, HBKT + 0.5f, DB + OS2 + OS4 + 0.5f); CenterBox=new(OS1*0.5f-OS3*0.5f,(K-T)*0.5f,-OS2*0.5f+OS4*0.5f); BASE.name = Name; BASE.transform.parent = GameObject.Find("SCENE").transform; BASE.tag = "cabbase"; //BOX POSITION backBox=CenterBox.z+DB*0.5f; frontBox=CenterBox.z-DB*0.5f; leftBox=CenterBox.x-W*0.5f; rightBox=CenterBox.x+W*0.5f; // print("Side right Pr===="+pr); // print("Side right rightFall===="+rightFall); // print("Side right pbr===="+pbr); //rightBox + rightFall+pr+pbr C[25] = DC.Resize(C[25], W, HB, nO); if(C[23]=="R")C[25] = DC.FLIP(C[25]); CODE.GetDiv(C[25]); //SIDES DOSIDE.PNLNew(BASE, nO,K*0.5f - T *0.5f,DB*0.5f,HB,K,kf,t,CenterBox,0); //KICK KT = new string[] { C[63], C[62] }; if (C[73] == "null") C[73] = "LEG_F"; if (C[34] == null || C[34] == "none"){ C[34] = "4.5_1_1_1_1_0";} C[34].Replace(",","_"); CK = C[34].Split('_');//CODE KICK if (C[39] == "none") { C[39] = "0_0_0_0_0_0"; }//RETRACTION C[39].Replace(",","_"); C39=C[39].Split('_');//Retraction kick RL=DOIT.ConvertStringToNumber(C39[0]);//Retraction Left RR=DOIT.ConvertStringToNumber(C39[2]);//Retraction Right K1w=DB - kf - t;//Kick 1 Wide K1pos=new(leftBox + t / 2+RL,PosyK,backBox- K1w*0.5f);//K1 position K2w=W-RL-RR; K2pos=new(RL*0.5f-RR*0.5f,PosyK,backBox - t / 2);//K2 position K3w=DB - kf - t; K3pos=new(rightBox - t / 2-RR,PosyK,backBox-K3w*0.5f);//K3 position K4w=W + kfl + kfr-RL-RR; K4pos=new(CenterBox.x +kfr / 2 - kfl / 2 +RL*0.5f-RR*0.5f,PosyK, frontBox+kf+t*0.5f);//K4 position //backBox-(DB - kf - t)*0.5f if (CK[1] != "0") { GameObject K1 = Createkick.Mcx("K1", K1w, K, t, K1pos.x, K1pos.y,K1pos.z, 0, -90, 0, KT[int.Parse(CK[1]) - 1]); K1.transform.parent = BASE.transform; } if (CK[2] != "0") { GameObject K2 = Createkick.Mcx("K2", K2w, K, t, K2pos.x, K2pos.y,K2pos.z, 0, 0, 0, KT[int.Parse(CK[2]) - 1]); K2.transform.parent = BASE.transform; } if (CK[3] != "0") { GameObject K3 = Createkick.Mcx("K3", K3w, K, t, K3pos.x, K3pos.y,K3pos.z, 0, 90, 0, KT[int.Parse(CK[3]) - 1]); K3.transform.parent = BASE.transform; } if (CK[4] != "0") { //print("CK[4]==="+CK[4]); GameObject K4 = Createkick.Mcx("K4", K4w, K, t, K4pos.x, K4pos.y,K4pos.z, 0, 180, 0, KT[int.Parse(CK[4]) - 1]); K4.transform.parent = BASE.transform; } //LEGS if (C[73].IndexOf("LEG")!=-1 && C[34].Split('_')[0]!="0") { BLACK_G=UIT_MATERIAL.GetMaterial("333333_Glossy"); float lh=K;//Legs height float offset=1; if (lh==0){lh=DOIT.ConvertStringToNumber(C[21]);offset=-1; } Vector3 P; Vector3 R = new(0, 0, 0); P = new(leftBox+2+RL+ 2, -HBKT / 2 + lh*offset / 2, frontBox + _G.caKD + 2); LEGS.Standard(BASE, "L1", lh, P, R,BLACK_G); P = new(leftBox +RL+ 2, -HBKT / 2 + lh*offset / 2, backBox - 2); LEGS.Standard(BASE, "L2", lh, P, R, BLACK_G); P = new(rightBox -RR- 2, -HBKT / 2 + lh*offset / 2, backBox - 2); LEGS.Standard(BASE, "L3", lh, P, R, BLACK_G); P = new(rightBox-RR- 2, -HBKT / 2 + lh*offset / 2, frontBox + _G.caKD + 2); LEGS.Standard(BASE, "L4", lh, P, R, BLACK_G); } //DOORS if(C[61]!="none"){ string[] codeD1 = C[25].Split('_'); GameObject DOOR = Createdoor.Patern(codeD1, nO); DOOR.transform.position = new(CenterBox.x, K * 0.5f - T * 0.5f, frontBox- DoorThickness * 0.5f ); DOOR.transform.parent = BASE.transform; } //FILLER GameObject FL; GameObject FR; if (C[50].Split('?')[0] != "NONE") { FL = CreateBoxPnl.Filler("FL", fw50, HB, t, leftBox - fw50*0.5f, K / 2 - T / 2, frontBox+t*0.5f, 0, 0, 0, C[50]); FL.transform.parent = BASE.transform; } if (C[51].Split('?')[0] != "NONE") { FR = CreateBoxPnl.Filler("FR", fw51, HB, t, rightBox+ fw51*0.5f, K / 2 - T / 2,frontBox+t*0.5f, 0, 0, 0, C[51]); FR.transform.parent = BASE.transform; } //COUNTER if (CP[0] != "0" && T != 0) { Vector3 P2 = new(leftBox -pl-pbl, HBKT*0.5f, backBox +pb + backFall); Vector3 P3 = new(rightBox +pr+pbr, HBKT*0.5f, backBox +pb + backFall); Vector3 P4 = new(rightBox +pr, HBKT*0.5f, frontBox-pf); Vector3 P1 = new(leftBox -pl, HBKT*0.5f, frontBox-pf); CREATE.Point(BASE, "PC1", P1.x, P1.y, P1.z); CREATE.Point(BASE, "PC2", P2.x, P2.y, P2.z); CREATE.Point(BASE, "PC3", P3.x, P3.y, P3.z); CREATE.Point(BASE, "PC4", P4.x, P4.y, P4.z); GameObject COUNTER = CounterMCX.MCX4V("CounterTop",T, P1, P2, P3, P4, C[41]); COUNTER.name = "CABCOUNTER"; COUNTER.transform.parent = BASE.transform; if (C[45] == "ON") { GameObject SIDEL = CounterMCX.SideL(T, HBKT, P1, P2); SIDEL.name = "SIDER"; SIDEL.transform.parent = BASE.transform; } if (C[46] == "ON") { GameObject SIDEB = CounterMCX.SideB(T, HBKT, P2, P3); SIDEB.name = "SIDER"; SIDEB.transform.parent = BASE.transform; } if (C[47] == "ON") { GameObject SIDER = CounterMCX.SideR(T, HBKT, P3, P4); SIDER.name = "SIDER"; SIDER.transform.parent = BASE.transform; } } //SPLASH DOBS.SplashARROWN(BASE, C[55], W, HBK, -DB, C[54],backBox); //RECOVER Recover.AddRecoverOnCab(BASE,C,leftBox,backBox,rightBox); //ANCHORE POINT CREATE.Point(BASE, "P50", -W / 2, 0, -DBD / 2); CREATE.Point(BASE, "P51", W / 2, 0, -DBD / 2); //2D VIEW CREATE.EmptyPoint(BASE, "PBLU", leftBox, (HBKT * 0.5f) - T, backBox);//P1 CREATE.EmptyPoint(BASE, "PBRU", rightBox, (HBKT * 0.5f) - T, backBox);//P2 CREATE.EmptyPoint(BASE, "PFLU", leftBox, (HBKT * 0.5f) - T, frontBox);//P3 CREATE.EmptyPoint(BASE, "PFRU", rightBox, (HBKT * 0.5f) - T, frontBox);//P4 CREATE.EmptyPoint(BASE, "PBLB", leftBox, -HBKT * 0.5f, backBox);//P1 CREATE.EmptyPoint(BASE, "PBRB", rightBox, -HBKT * 0.5f, backBox);//P2 CREATE.EmptyPoint(BASE, "PFLB", leftBox, -HBKT * 0.5f, frontBox);//P3 CREATE.EmptyPoint(BASE, "PFRB", rightBox, -HBKT * 0.5f, frontBox);//P4 CREATE.EmptyPoint(BASE, "BackPoint", CenterBox.x, 0, backBox);//P1 CREATE.EmptyPoint(BASE, "CenterBox", CenterBox.x, 0, CenterBox.z);//P1 CREATE.EmptyPoint(BASE, "BackPoint", CenterBox.x, 0, backBox);//P1 //RigidBody BASE.AddComponent(); BASE.GetComponent().useGravity = false; CREATE.EmptyPoint(BASE, "BackPoint", CenterBox.x, 0, backBox);//P1 BASE.GetComponent().isKinematic = true; BASE.GetComponent().detectCollisions = true; if (BASE.GetComponent()) BASE.GetComponent().isTrigger = true; //SHELF AddShelf.OnOpening(C,BASE,K, W, T ,DB, t,"BASE",CenterBox); if(!string.IsNullOrEmpty(C[88])){ AddShelf.Interior(BASE,C[88], W-1,HB-1,DB-1, C[62], CenterBox); } texshelf = C[62];//Get.BoxTex(C, 7); if (C[25].IndexOf("w") != -1) { CODE.GetDiv(C[25]); float k = DOIT.ConvertStringToNumber(C[35]); float toph = DOIT.ConvertStringToNumber(C[11]); //ROW1 if (_G.Rdiv1.Count != 0) { addWinner.AddingOnWinner(BASE, _G.Rdiv1, DB - t * 2, _G.ROWY1[0] + k / 2 - toph / 2, DOIT.ConvertStringToNumber(C[6]), texshelf); } if (_G.Rdiv2.Count != 0) { addWinner.AddingOnWinner(BASE, _G.Rdiv2, DB - t * 2, _G.ROWY1[1]+ k / 2 - toph / 2, DOIT.ConvertStringToNumber(C[6]), texshelf); } if (_G.Rdiv3.Count != 0) { addWinner.AddingOnWinner(BASE, _G.Rdiv3, DB - t * 2, _G.ROWY1[2] + k / 2 - toph / 2, DOIT.ConvertStringToNumber(C[6]), texshelf); } if (_G.Rdiv4.Count != 0) { addWinner.AddingOnWinner(BASE, _G.Rdiv4, DB - t * 2, _G.ROWY1[3]+ k / 2 - toph / 2, DOIT.ConvertStringToNumber(C[6]), texshelf); } if (_G.Rdiv5.Count != 0) { addWinner.AddingOnWinner(BASE, _G.Rdiv5, DB - t * 2, _G.ROWY1[4] + k / 2 - toph / 2, DOIT.ConvertStringToNumber(C[6]), texshelf); } if (_G.Rdiv6.Count != 0) { addWinner.AddingOnWinner(BASE, _G.Rdiv6, DB - t * 2, _G.ROWY1[5] + k / 2 - toph / 2, DOIT.ConvertStringToNumber(C[6]), texshelf); } } //SINK//FAUCET if (C[67] != "NONE") { ConstructSink.AddSink(nO); } if (C[68] != "NONE") { ConstructFaucet.addfaucet(nO); } //ADD LIGHT // Vector3 LightPosition=new(CenterBox.x, K * 0.5f - T * 0.5f, frontBox- DoorThickness * 0.5f ); // Vector3 LightRotation=new(0,0,0); // GameObject ImageLigth = SelectLight.Add_light_on_Base_Cabinet(W, -HBK/2+K, LightPosition, LightRotation ,C[40]); // ImageLigth.transform.SetParent(BASE.transform); //CAPS //string Unique_Name = UIT.Value(Library.Cabinet,C[1],Header.ID); //Captext = Unique_Name + "\n" + DOIT.CSs(C[6]) + "x" + DOIT.CSs(C[7]); // Captext = C[0][4..]; //CAPS.Show(Captext, BASE, DBD, 0, -DBC / 2 - 5); CAPS.ShowTOP(C[0][4..], BASE, 0, HBK*0.5f, frontBox+3,Color.red); CAPS.ShowFRONT(C[0][4..], BASE, 0, 0, frontBox, Color.red); Mesure.Addpoints("BASE",BASE); //Stet in scene Vector3 CabinetPosition=new(px,py,pz); BASE.transform.position = CabinetPosition;//new(px, py, pz); BASE.transform.localRotation = Quaternion.Euler(rx, ry, rz); BASE.AddComponent(typeof(MoveObject)); BASE.GetComponent().material = _G.INV; // if(SceneModeManager.Selected!=null && _G.PON != "AIpnl") // { // if(!string.IsNullOrEmpty(_G.SC[15])){ // float PosX=float.Parse(_G.SC[15]);_G.SC[15]=""; // float PosZ=float.Parse(_G.SC[17]);_G.SC[17]=""; // Vector3 OldCenterBox=new(PosX,py,PosZ); // Vector3 NewCenterPosition=BASE.transform.Find("CenterBox").transform.position; // NewCenterPosition=new(NewCenterPosition.x,py,NewCenterPosition.z); // float distance=Vector3.Distance(OldCenterBox,NewCenterPosition); // var direction = (OldCenterBox-NewCenterPosition).normalized; // CabinetPosition += distance*direction; // BASE.transform.position = CabinetPosition; // DOIT.SaveObjectPositionInData(BASE.transform); // } // } switch(C[4] ){ case "B1": B1();break; case "B2": B2();break; } } public static void B1(){ } public static void B2(){ } }