using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; using UnityEngine.UI; using UnityEngine.UI.Extensions; public class ADDOBJECT : MonoBehaviour { public static void newObstacle() { //_G.SELECTED=Get.o3("PanelPosition", "Texting", "Title").GetComponent().text; int On=int.Parse(_G.SELECTED.Split("_")[1]); string name=_G.SELECTED.Split("_")[0]; float px = 0;// _G.wCP[Wallnum-1].x + (ww/2-sr-w/2)*xf-os*zf; float pz = 0;//Get.o1(_G.SELECTED).transform.localPosition.y;// _G.wCP[Wallnum-1].y-(ww/2-sr-w/2)*zf-os*xf; if(_G.OBJs[On] == null){ _G.OBJs[On] = new string[100];} string[] C = _G.OBJs[On]; float w = DOIT.CSn(Get.o1("PanelPosition/INPUTS/W/mW").GetComponent().text); float h = DOIT.CSn(Get.o1("PanelPosition/INPUTS/H/mH").GetComponent().text); Get.o2("PanelPosition/INPUTS","D").SetActive(true); float d = DOIT.CSn(Get.o1("PanelPosition/INPUTS/D/mD").GetComponent().text);//getd(name); float os = getos(name);//Offset when place on wall most for opening in wall C[0] = getname0(name)+"_"+_G.SELECTED.Split("_")[1]; C[1] = Get.o1("ImageObject").GetComponent().sprite.name;//Model print("C[1]==="+C[1]); C[2] = getname2(name);//Category C[3] = "LOCK"; C[4] = getname4(name); C[5] = get5(C[1]); if(name=="GAZ" || name=="PLUMBING"){w=12;h=12;d=2;} C[6] = w.ToString(); C[7] = h.ToString(); C[8] = d.ToString(); int Wallnum=0; if(_G.WallSELECTED!="floor"){ Wallnum=int.Parse(_G.WallSELECTED.Replace("ALL","").Replace("w","").Replace("W","")); float LeftDistance=DOIT.CSn(Get.o1("PanelPosition/WALL/L/mL").GetComponent().text); Vector2 StartWallPoint= _G.WallPoints2D[Wallnum-1]/2; Vector2 WallCenterPoint= _G.WallsPointCenter[Wallnum-1]/2; Vector2 direction = (WallCenterPoint-StartWallPoint).normalized; Vector2 WallForward = new(-direction.y, direction.x); Vector2 ObjectPosition = StartWallPoint+(LeftDistance+w*0.5f)*direction; ObjectPosition += -d*0.5f*WallForward; px = ObjectPosition.x; pz = ObjectPosition.y; print("ObjectPosition=="+ObjectPosition+" direction====="+direction+" WallCenterPoint===="+WallCenterPoint+" StartWallPoint===="+StartWallPoint); } if(_G.WallSELECTED=="floor"){ // px/pz sont absolus (espace scene = WallPoints2D/2), comme pour un objet sur un mur : // on part du centre de la piece, qui n'est pas l'origine quand la piece est dessinee. Vector2 roomCenter = RepositionPNL.RoomRectScene().center; px=roomCenter.x+_G.WIDE/2-w/2-DOIT.CSn(Get.o1("PanelPosition/WALL/R/mR").GetComponent().text); pz=roomCenter.y+_G.DEPTH/2-d/2-DOIT.CSn(Get.o1("PanelPosition/B/mB").GetComponent().text); } float ff =0; if(RepositionPNL.GetfloorTF(name) && _G.WallSELECTED!="floor") {ff=DOIT.CSn(Get.o1("PanelPosition/F/mF").GetComponent().text);} float py = -_G.HEIGHT / 2 + h / 2 + ff;//Floor to button // La retombee est collee au plafond, pas au plancher : elle n'a pas de cote "F" // (GetfloorTF est faux) donc ff vaut 0 et la formule ci-dessus la posait au sol. // Meme calcul que l'apercu du panneau : ceiling - h/2 (RepositionPNL, case "BULKHEAD"). if (name == "BULKHEAD") py = _G.HEIGHT / 2 - h / 2; float rx = 0;//DOIT.getScenePos("rx", os); float ry = _G.WallsAngle[Wallnum - 1];//DOIT.getScenePos("ry", os); float rz = 0;//DOIT.getScenePos("rz", os); C[13] = os.ToString(); C[15] = px.ToString(); //pos X C[16] = py.ToString(); //pos Y C[17] = pz.ToString(); //pos Z C[18] = rx.ToString(); //rot X C[19] = ry.ToString(); //rot Y C[20] = rz.ToString(); //rot Z C[21] = ff.ToString();//distance from floor C[22] = _G.WallSELECTED.Replace("ALL",""); //Wall select or floor C[23] = get23(C[1]);//Left/Right door C[26] = "666666";//For Dish C[27] = "666666";//For Dish C[28] = os.ToString(); C[41] =get41(name); C[42] = "1.5,0,0,0,1,0,0"; C[45] = "OFF";//Counter side Left ON/OFF C[46] = "OFF";//Counter side back ON/OFF C[47] = "OFF";//Counter side right ON/OFF C[60] = getname60(name);// _G.Wf; model C[61]= get61(C[1]);//_G.Wm; molding model C[62]= "ffffff";//_G.Wcf; color frame C[63]= "ffffff";//_G.Wcm; color molding // Une retombee fait partie du mur : elle en reprend la couleur au lieu de rester blanche. if(name=="BULKHEAD"){ C[62]=WallHex(); C[63]=WallHex(); } //SPLASH C[54] = "mx";//Texture "SPLA101,2,FFFFFF,r0,G"; C[55] = "0,0,0,0";//left,hight,right,back,Tex,sizeX,sizeY,Rot,Shine C[81] = "0,0,0,0"; C[82] = "0,0,0,0"; //print("C[6]==="+C[6]); //print("C[7]==="+C[7]); //print("C[8]==="+C[8]); C[89] = C[0]; if(_G.PNL=="POSITIONING")Get.o2(_G.SELECTED,"Circle").transform.GetComponent().color= Color.green; } ///------GET-------------- // Couleur des murs au format des champs couleur de _G.OBJs (hexa sans '#') : _G.Wallcolor // arrive avec le '#' tant qu'aucune couleur n'a ete choisie dans COLORROOM, sans apres. public static string WallHex(){ string Hex=_G.Wallcolor ?? ""; Hex=Hex.TrimStart('#'); return Hex==""?"ffffff":Hex; } public static string getname0(string N){ string newN=""; switch(N){ case "WINDOW":newN="wind";break; case "FENÊTRE":newN="wind";break; case "DOOR":newN="door";break; case "PORTE":newN="door";break; case "OPENING":newN="open";break; case "OUVERTURE":newN="open";break; case "PATIO":newN="pati";break; case "FRIDGE":newN="frid";break; case "FRIGO":newN="frid";break; case "STOVE":newN="stov";break; case "CUISINIERE":newN="stov";break; case "DISH":newN="dish";break; case "LAVE VAISELLE":newN="dish";break; case "HOOD":newN="hood";break; case "VENTILLATEUR":newN="hood";break; case "WASHER":newN="wadr";break; case "DRYER":newN="wadr";break; case "GAZ":newN="bloc";break; case "PLUMBING":newN="bloc";break; case "BLOC":newN="bloc";break; } return newN; } public static string getname2(string N){ string newN=""; switch(N){ case "WINDOW":newN="Window";break; case "FENÊTRE":newN="Window";break; case "DOOR":newN="Door";break; case "PORTE":newN="Door";break; case "OPENING":newN="Opening";break; case "OUVERTURE":newN="Opening";break; case "PATIO":newN="Patio";break; case "FRIDGE":newN="Appliance";break; case "FRIGO":newN="Appliance";break; case "STOVE":newN="Appliance";break; case "CUISINIERE":newN="Appliance";break; case "DISH":newN="Appliance";break; case "LAVE VAISELLE":newN="Appliance";break; case "HOOD":newN="Appliance";break; case "VENTILLATEUR":newN="Appliance";break; case "WASHER":newN="Appliance";break; case "DRYER":newN="Appliance";break; case "GAZ":newN="Bloc";break; case "PLUMBING":newN="Bloc";break; case "BLOC":newN="Bloc";break; } return newN; } public static string getname4(string N){ string newN=""; switch(N){ case "WINDOW":newN="Wind";break; case "FENÊTRE":newN="Wind";break; case "DOOR":newN="Door";break; case "PORTE":newN="Door";break; case "OPENING":newN="Opening";break; case "OUVERTURE":newN="Opening";break; case "PATIO":newN="Patio";break; case "FRIDGE":newN="frid";break; case "FRIGO":newN="frid";break; case "REFRIGÉRATEUR":newN="frid";break; case "STOVE":newN="stov";break; case "CUISINIERE":newN="stov";break; case "DISH":newN="dish";break; case "WASHER":newN="wadr";break; case "DRYER":newN="wadr";break; case "HOOD":newN="hood";break; case "GAZ":newN="BL";break; case "PLUMBING":newN="BL";break; case "BLOC":newN="BL";break; } return newN; } public static string get23(string N){ string newN="R"; switch(N){ case "PATI101":newN="1";break; } return newN; } public static string getname60(string N){ string newN=Get.o1("ImageObject").GetComponent().sprite.name; switch(N){ case "DISH":newN="GLOBAL1";break; case "WASHER":newN="GLOBAL";break; case "DRYER":newN="GLOBAL";break; case "OPENING":newN="666666";break; case "HOOD":newN="UNIQUE";break; } return newN; } public static float getos(string N){ Get.o2("PanelPosition/INPUTS" ,"D").SetActive(true); float os=DOIT.CSn(Get.o1("PanelPosition/INPUTS/D/mD").GetComponent().text)/2; switch(N){ case "WINDOW":os=-4f;break; case "FENÊTRE":os=-4f;break; case "DOOR":os=-1.5f;break; case "PORTE":os=-1.5f;break; case "OPENING":os=-1.5f;break; case "OUVERTURE":os=-1.5f;break; case "PATIO":os=-4f;break; } return os; } public static float getd(string N){ float d=DOIT.CSn(Get.o1("mD").GetComponent().text); switch(N){ case "WINDOW":d=10f;break; case "FENÊTRE":d=10f;break; case "DOOR":d=6f;break; case "PORTE":d=6f;break; case "OPENING":d=6f;break; case "OUVERTURE":d=6f;break; case "PATIO":d=10f;break; } return d; } public static string get5(string N){ string newN="m1"; switch(N){ case "STOV104":newN="m0";break; case "STOV105":newN="m0";break; case "STOV106":newN="m0";break; case "STOV107":newN="m3";break; case "STOV111":newN="m0";break; case "STOV112":newN="m0";break; case "STOV113":newN="m0";break; case "STOV114":newN="m3";break; case "STOV118":newN="m0";break; case "STOV119":newN="m0";break; case "DISW101":newN="dish";break; case "PATI101":newN="PATI101";break; case "HOOW101":newN="hood";break; } return newN; } public static string get41(string N){ string newN="CT.2";; switch(N){ case "GAZ":newN="COUN109,1,C37D5A,r0,S";break; case "PLUMBING":newN="COUN109,1,1780FF,r0,S";break; case "BLOC":newN="COUN109,1,FFFFFF,r0,S";break; } return newN; } public static string get61(string N){ string newN="1"; switch(N){ case "HOOW101":newN="TEXT101,2,ffffff,0,m";break; } return newN; } }