using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.UI.Extensions; using TMPro; public class RepositionPNL : MonoBehaviour { public static void StartPNL(string Oname, GameObject selectedOBJ){ print("Oname=="+Oname); Get.o2("Canvas", "PanelPosition").SetActive(true); string OName=Oname.Split('_')[0]; Get.o3("PanelPosition", "Texting", "Title").GetComponent().text = TRANS.This("T_"+OName); bool TF = getfloorTF(OName);//set floor cote Get.o2("PanelPosition", "FloorCote").SetActive(TF); Get.o3("PanelPosition", "INPUTS", "F").SetActive(TF); Get.o2("PanelPosition", "DepthCote").SetActive(false); Get.o3("PanelPosition", "INPUTS", "B").SetActive(false); float w =DOIT.CSn(Get.o1("mW").GetComponent().text); float h =DOIT.CSn(Get.o1("mH").GetComponent().text); float d =DOIT.CSn(Get.o1("mD").GetComponent().text); int On=int.Parse(Oname.Split('_')[1]); CheckWallHit(selectedOBJ,"POSITIONING"); float dx=Mathf.Floor(getdx(selectedOBJ)); float dz=Mathf.Floor(getdz(selectedOBJ)); int Wallnum=0; float xf=1; float zf=1; if(_G.WallSELECTED!="floor"){ Wallnum=int.Parse(_G.WallSELECTED.Replace("w","")); xf=DOIT.xfzf("x",Wallnum);if(Mathf.Abs(xf) < 0.1)xf=0; zf=DOIT.xfzf("z",Wallnum);if(Mathf.Abs(zf) < 0.1)zf=0; } float ff=24; float FR=0; float FL=0; float FB=0; if(OName=="HOOD")ff=60; Positioning.ObjectName= OName; if(_G.OBJs[On] == null){ //_G.OBJs[On] = new string[100]; w=getobjectWide(OName); h=getobjectHight(OName); d=getobjectDepth(OName); SetImage(OName); } else{ w=DOIT.CSn(_G.OBJs[On][6]); h=DOIT.CSn(_G.OBJs[On][7]); dx=DOIT.CSn(_G.OBJs[On][15]); dz=DOIT.CSn(_G.OBJs[On][17]); ff=_G.HEIGHT/2+DOIT.CSn(_G.OBJs[On][16])-DOIT.CSn(_G.OBJs[On][7])/2; } if(_G.WallSELECTED!="floor"){ Get.o4("Canvas", "PanelPosition", "Texting", "dimensions").GetComponent().text = TRANS.This("WallWide")+" = " + _G.wW[Wallnum-1].ToString(); FR=(_G.wW[Wallnum-1]-w)/2-dx*xf+dz*zf; FL=_G.wW[Wallnum-1]-w-FR;//(_G.wW[Wallnum-1]-w)/2-dx*xf-dz*zf; } if(_G.WallSELECTED=="floor"){ Get.o2("PanelPosition", "DepthCote").SetActive(true); Get.o3("PanelPosition", "INPUTS", "B").SetActive(true); Get.o2("PanelPosition", "FloorCote").SetActive(true); Get.o3("PanelPosition", "INPUTS", "F").SetActive(true); FR=(_G.WIDE-w)/2f-dx; FL=(_G.WIDE-w)-FR; FB=(_G.DEPTH-d)/2f-dz; ff=(_G.DEPTH-w)-FB; Get.o4("Canvas", "PanelPosition", "Texting", "dimensions").GetComponent().text = TRANS.This("F_Overall")+" " + _G.WIDE.ToString()+" x " + _G.DEPTH.ToString(); Get.o1("mB").GetComponent().text=FB.ToString(); Get.o1("mF").GetComponent().text=ff.ToString(); } Get.o1("mR").GetComponent().text=FR.ToString(); Get.o1("mL").GetComponent().text=FL.ToString(); if(RepositionPNL.getfloorTF(OName))Get.o1("mF").GetComponent().text=ff.ToString(); Get.o1("mW").GetComponent().text=w.ToString(); Get.o1("mH").GetComponent().text=h.ToString(); Get.o1("mD").GetComponent().text=d.ToString(); SetImage(OName); _G.SELECTED=Oname; //ADDOBJECT.newObstacle(); } //================GET================================================ public static float getdx(GameObject O){ float dx=0; Vector3 pos=O.transform.localPosition; float scale =Get.o2("POSITIONING","Plan").transform.localScale.x/2; dx=pos.x*scale; return dx; } public static float getdz(GameObject O){ float dz=0; Vector3 pos=O.transform.localPosition; float scale =Get.o2("POSITIONING","Plan").transform.localScale.x/2; dz=pos.y*scale; return dz; } public static float getobjectWide(string N){ float W=0; switch(N){ case "WINDOW":W=36;break; case "FENÊTRE":W=36;break; case "DOOR":W=32;break; case "PORTE":W=32;break; case "STOVE":W=30;break; case "CUISINIÈRE":W=30;break; case "FRIDGE":W=30;break; case "REFRIGÉRATEUR":W=30;break; case "DISH":W=24;break; case "PATIO":W=36;break; case "WASHER":W=24;break; case "DRYER":W=24;break; case "OPENING":W=48;break; case "HOOD":W=30;break; case "GAZ":W=12;break; case "PLUMBING":W=12;break; case "BLOC":W=24;break; } return W; } public static float getobjectHight(string N){ float H=0; switch(N){ case "WINDOW":H=42;break; case "FENÊTRE":H=42;break; case "DOOR":H=84;break; case "PORTE":H=84;break; case "STOVE":H=36;break; case "CUISINIÈRE":H=36;break; case "FRIDGE":H=68;break; case "REFRIGÉRATEUR":H=68;break; case "DISH":H=36;break; case "PATIO":H=84;break; case "WASHER":H=36;break; case "DRYER":H=36;break; case "OPENING":H=84;break; case "HOOD":H=36;break; case "GAZ":H=12;break; case "PLUMBING":H=12;break; case "BLOC":H=36;break; } return H; } public static float getobjectDepth(string N){ print("N==="+N); float d=DOIT.CSn(Get.o1("mD").GetComponent().text); switch(N){ case "WINDOW":d=10f;break; case "DOOR":d=6f;break; case "OPENING":d=6f;break; case "STOVE":d=24f;break; case "FRIDGE":d=24f;break; case "DISH":d=24f;break; case "PATIO":d=10f;break; case "WASHER":d=24f;break; case "DRYER":d=24f;break; case "GAZ":d=2f;break; case "PLUMBING":d=2f;break; case "BLOC":d=24f;break; } return d; } public static bool getfloorTF(string N){ bool TF=false; switch(N){ case "WINDOW":TF=true;break; case "FENÊTRE":TF=true;break; case "HOOD":TF=true;break; case "VENTILLATEUR":TF=true;break; case "GAZ":TF=true;break; case "PLUMBING":TF=true;break; case "PLOMBERIE":TF=true;break; case "BLOC":TF=true;break; } return TF; } public static void SetImage(string ObjectName){ Get.o2("Canvas/PanelPosition/ImageObject","BTN_Select").GetComponent().alpha =1; string path="Bloc/BLOC101"; float H=135; float dy=18f; RectTransform Or=Get.o3("Canvas", "PanelPosition", "ImageObject").GetComponent(); switch (ObjectName) { case "WINDOW": path="Windows/WIND101";H=150;dy=19.7f; Or.sizeDelta = new Vector2(100, H); Or.anchoredPosition = new Vector2(Or.anchoredPosition.x, 65f); break; case "PATIO": path="Patio/PATI101";H=220;dy=-30.53f; Or.sizeDelta = new Vector2(100, H); Or.anchoredPosition = new Vector2( Or.anchoredPosition.x, 13.3f); break; case "DOOR": path="Doors/DOOS101";H=220;dy=-30.53f; Or.sizeDelta = new Vector2(100, H); Or.anchoredPosition = new Vector2( Or.anchoredPosition.x, 13.3f); break; case "FRIDGE": if(_G.WallSELECTED!="floor"){path="Fridge/FRID101";H=220;dy=-27f;} Or.sizeDelta = new Vector2(100, H); Or.anchoredPosition = new Vector2( Or.anchoredPosition.x, dy); break; case "STOVE": if(_G.WallSELECTED!="floor"){path="Stove/STOV101";H=135;dy=-67.89f;} Or.sizeDelta = new Vector2(100, H); Or.anchoredPosition = new Vector2( Or.anchoredPosition.x, -21.4f); break; case "DISH": if(_G.WallSELECTED!="floor"){path="Dishwasher/DISW101";H=135;dy=-67.89f;} Or.sizeDelta = new Vector2(100, H); Or.anchoredPosition = new Vector2( Or.anchoredPosition.x, -23.7f); break; case "WASHER": if(_G.WallSELECTED!="floor"){path="WD/WADR101";H=135;dy=-67.89f;} Or.sizeDelta = new Vector2(100, H); Or.anchoredPosition = new Vector2( Or.anchoredPosition.x, -23.7f); break; case "DRYER": if(_G.WallSELECTED!="floor"){path="WD/WADR102";H=135;dy=-67.89f;} Or.sizeDelta = new Vector2(100, H); Or.anchoredPosition = new Vector2( Or.anchoredPosition.x, -23.7f); break; case "HOOD": if(_G.WallSELECTED!="floor"){path="HoodFan/HOOW101";H=100;dy=19.7f;} Or.sizeDelta = new Vector2(100, H); Or.anchoredPosition = new Vector2( Or.anchoredPosition.x, 38.6f); //Get.o3("Canvas", "PanelSelection", "HOOD").gameObject.SetActive(true); break; case "OPENING": path="Openning/o1";H=220;dy=-30.53f; Or.sizeDelta = new Vector2(100, H); Or.anchoredPosition = new Vector2( Or.anchoredPosition.x, 13.3f); Get.o4("Canvas", "PanelPosition", "ImageObject","BTN_Select").GetComponent().alpha =0; break; case "GAZ": if(_G.WallSELECTED!="floor"){path="Gaz/BLOC101";H=80;dy=19.7f;} Or.sizeDelta = new Vector2(80, H); Or.anchoredPosition = new Vector2( Or.anchoredPosition.x, 30.4f); Get.o4("Canvas", "PanelPosition", "ImageObject","BTN_Select").GetComponent().alpha =0; break; case "PLUMBING": if(_G.WallSELECTED!="floor"){path="Plumbing/BLOC101";H=80;dy=19.7f;} Or.sizeDelta = new Vector2(80, H); Or.anchoredPosition = new Vector2( Or.anchoredPosition.x, 28.9f); Get.o4("Canvas", "PanelPosition", "ImageObject","BTN_Select").GetComponent().alpha =0; break; case "BLOC": if(_G.WallSELECTED!="floor"){path="Bloc/BLOC101";H=130;dy=12f;} Or.sizeDelta = new Vector2(100, H); Or.anchoredPosition = new Vector2( Or.anchoredPosition.x, 56.4f); Get.o4("Canvas", "PanelPosition", "ImageObject","BTN_Select").GetComponent().alpha =0; break; } Get.o2("Canvas/PanelPosition", "ImageObject").GetComponent().sprite = Resources.Load("Images/Icons/"+path) as Sprite; } public static void CheckWallHit(GameObject selectedOBJ,string pnl) { _G.WallSELECTED = "floor"; var selRT = selectedOBJ.GetComponent(); if (!selRT) return; Bounds selB = RTBounds(selRT); int setNW = (!_G.ROOMCLOSE) ? 1 : 0; for (int i = 1; i < _G.NW + 1 - setNW; i++) { var wall = Get.o3(pnl, "Plan", "w" + i); if (!wall) continue; var wallRT = wall.GetComponent(); var img = wall.GetComponent(); if (!wallRT || !img) continue; bool hit = selB.Intersects(RTBounds(wallRT)); img.color = hit ? Color.green : Color.black; if (hit) _G.WallSELECTED = "w" + i; } // //print("----checkWallHi----"); // _G.WallSELECTED="floor"; // int setNW =0; // if(!_G.ROOMCLOSE){setNW =1;} // for (int i = 1; i < _G.NW+1-setNW ; i++) // { // if( CollisionDetection.IsTouching( selectedOBJ, Get.o3(pnl,"Plan","w"+i) )){ // //print("-----------------------------ok doit---------------"+" w"+i); // Get.o3(pnl,"Plan","w"+i).transform.GetComponent().color=Color.green; // _G.WallSELECTED="w"+i.ToString(); // } // else{ Get.o3(pnl,"Plan","w"+i).transform.GetComponent().color=Color.black; } // } } static Bounds RTBounds(RectTransform rt) { Vector3[] c = new Vector3[4]; rt.GetWorldCorners(c); var b = new Bounds(c[0], Vector3.zero); for (int i = 1; i < 4; i++) b.Encapsulate(c[i]); return b; } public static string getName(string N){ string Name=N; switch(Name){ case "FENÊTRE":N="WINDOW";break; case "PORTE":N="DOOR";break; case "CUISINIÈRE":N="STOVE";break; case "REFRIGÉRATEUR":N="FRIDGE";break; case "DISHWASHER":N="DISH";break; case "LAVE VAILSELLE":N="DISH";break; case "LAVEUSE":N="WASHER";break; case "SÈCHEUSE":N="DRYER";break; case "OUVERTURE":N="OPENING";break; case "VENTILATEUR":N="HOOD";break; case "FAN":N="HOOD";break; } return N; } }