using UnityEngine; using System.Globalization; using UnityEngine.UI; using System.Collections.Generic; public class DOLIST : MonoBehaviour { public static List OBJLIST() { List OBJS = new (); for (var i = 0; i < _G.OBJnum + 1; i++) { if (!DOIT.exist(i, out Transform obj)) continue; OBJS.Add(obj.gameObject); } return OBJS; } public static List CABLIST() { List OBJS = new (); for (var i = 0; i < _G.OBJnum + 1; i++) { if (!DOIT.exist(i, out Transform obj)) continue; if (_G.OBJs[i][2] == "Cabinet") OBJS.Add(obj.gameObject); } return OBJS; } public static List CABLISTint() { List INTS = new List(); for (var i = 0; i < _G.OBJnum + 1; i++) { if (!DOIT.exist(i)) continue; if (_G.OBJs[i][2] == "Cabinet") INTS.Add(i); } return INTS; } public static List> OBJTAGLIST(string TAG) { //List Ol = new List(); List> objectList = new() { new(), new(), new(), new(), new(), new() }; for (var i = 0; i < _G.OBJnum + 1; i++) { if (!DOIT.exist(i, out Transform O)) continue; if (!O.CompareTag(TAG) ) continue; string globalValue = _G.OBJs[i][60]; if (globalValue.Contains("GLOBAL")) { string globalIndexValue = globalValue[6..]; if (int.TryParse(globalIndexValue, out int globalIndex)) { objectList[globalIndex-1].Add(O.gameObject); } } else { int uniqueGlobalIndex = 1; objectList[uniqueGlobalIndex].Add(O.gameObject); } } return objectList; } public static List> OBJTAGLIST_WALLONLY(string TAG) { //List Ol = new List(); List> objectList = new() { new(), new(), new(), new(), new(), new() }; for (var i = 0; i < _G.OBJnum + 1; i++) { if (!DOIT.exist(i, out Transform O)) continue; if (!O.CompareTag(TAG) || _G.OBJs[i][4]=="T1") continue; string globalValue = _G.OBJs[i][60]; if (globalValue.Contains("GLOBAL")) { string globalIndexValue = globalValue[6..]; if (int.TryParse(globalIndexValue, out int globalIndex)) { objectList[globalIndex-1].Add(O.gameObject); } } else { int uniqueGlobalIndex = 1; objectList[uniqueGlobalIndex].Add(O.gameObject); } } return objectList; } public static List CABLISTString() { List CABS = new(); for (var i = 0; i < _G.OBJnum + 1; i++) { if (DOIT.exist(i)) { if (_G.OBJs[i][2] == "Cabinet") {CABS.Add(i.ToString()); } } } return CABS; } public static List CABLISTinSCENE() { List CABS = new List(); foreach (Transform O in GameObject.Find("SCENE").transform) { int On = Get.GetObjectIndex(O.name); if (_G.OBJs[On][2] == "Cabinet" || _G.OBJs[On][5] == "PNL") { CABS.Add(On.ToString()); } } return CABS; } public static List APLIANCELISTString() { List APP= new List(); for (var i = 0; i < _G.OBJnum + 1; i++) { if (DOIT.exist(i)) { if ( _G.OBJs[i][2] == "Appliance") { APP.Add(i.ToString()); } } } return APP ; } public static List APPLANCESinSCENE() { List APP = new List(); foreach (Transform O in GameObject.Find("SCENE").transform) { int On = Get.GetObjectIndex(O.name); if (_G.OBJs[On][2] == "Appliance") { APP.Add(On.ToString()); } } return APP; } public static List OPENLISTString() { List OPEN = new List(); for (var i = 0; i < _G.OBJnum + 1; i++) { if (DOIT.exist(i)) { if (_G.OBJs[i][2] == "Window") { OPEN.Add(i.ToString()); } if ( _G.OBJs[i][2] == "Opening") { OPEN.Add(i.ToString()); } if ( _G.OBJs[i][2] == "Door") { OPEN.Add(i.ToString()); } if ( _G.OBJs[i][2] == "Patio") { OPEN.Add(i.ToString()); } } } return OPEN; } public static List OPENLISTinSCENE() { List PNLS = new List(); foreach (Transform O in GameObject.Find("SCENE").transform) { int On = Get.GetObjectIndex(O.name); if (_G.OBJs[On][2] == "Window") { PNLS.Add(On.ToString()); } if (_G.OBJs[On][2] == "Opening") { PNLS.Add(On.ToString()); } if (_G.OBJs[On][2] == "Door") { PNLS.Add(On.ToString()); } if (_G.OBJs[On][2] == "Patio") { PNLS.Add(On.ToString()); } } return PNLS; } public static List PNLLISTinSCENE() { List PNLS = new (); foreach (Transform O in GameObject.Find("SCENE").transform) { int On = Get.GetObjectIndex(O.name); if (_G.OBJs[On][2] == "Panel") { PNLS.Add(On); } } return PNLS; } public static List PNLLISTString() { List PNLS = new (); for (var i = 0; i < _G.OBJnum + 1; i++) { if (DOIT.exist(i)) { if (_G.OBJs[i][2] == "Side Panel") { PNLS .Add(i.ToString()); } } } return PNLS; } public static List CABLISTinFLOOR() { List INTS = new List(); for (var i = 0; i < _G.OBJnum + 1; i++) { if (DOIT.exist(i)) { if (_G.OBJs[i][2] == "Cabinet" && _G.OBJs[i][22] == "floor") INTS.Add(i); } } return INTS; } public static List DOORINSCENE() { List STR = new List(); for (var i = 0; i < _G.OBJnum + 1; i++) { if (DOIT.exist(i)) { if (_G.OBJs[i][2] == "Cabinet") { if(!STR.Contains(_G.OBJs[i][61])){STR.Add(_G.OBJs[i][61]);} } } } return STR; } public static List TEXTUREINSCENE() { List STR = new List(); for (var i = 0; i < _G.OBJnum + 1; i++) { if (DOIT.exist(i)) { if (_G.OBJs[i][2] == "Cabinet") { if(!STR.Contains(_G.OBJs[i][69])){ STR.Add(_G.OBJs[i][69]);} } } } return STR; } public static List KNOBINSCENE() { List STR = new List(); for (var i = 0; i < _G.OBJnum + 1; i++) { if (DOIT.exist(i)) { if (_G.OBJs[i][2] == "Cabinet" ) { if(!STR.Contains(_G.OBJs[i][85].Split('?')[0]) && _G.OBJs[i][85].Split('?')[0]!="KN.33")STR.Add(_G.OBJs[i][85].Split('?')[0]); if(!STR.Contains(_G.OBJs[i][86].Split('?')[0]) && _G.OBJs[i][85].Split('?')[0]!="KN.33")STR.Add(_G.OBJs[i][86].Split('?')[0]); } } } return STR; } public static SortedDictionary CABSonWALL(int wall,string cat) { SortedDictionary BLIST= new SortedDictionary(); float dis=0; //string OnOut="false"; //bool adding=false; for (var i = 0; i < _G.OBJnum + 1; i++) { if (DOIT.exist(i)) { float Ox=DOIT.ConvertStringToNumber(_G.OBJs[i][15]); float Oz=DOIT.ConvertStringToNumber(_G.OBJs[i][17]); float Oy=DOIT.ConvertStringToNumber(_G.OBJs[i][16]); float w=DOIT.ConvertStringToNumber(_G.OBJs[i][6]); float d=DOIT.ConvertStringToNumber(_G.OBJs[i][8]); Vector2 Opos=new(Ox,Oz); int ws=wall-1;//4 int we=wall; int wb=wall-2; if(wall==_G.NW){we=0;} if(wall==1){ws=0;} if(wall==1){wb=_G.NW-1;} float disS=Vector2.Distance(_G. WallsPointStart[ws],Opos);//3 float disE=Vector2.Distance(_G. WallsPointStart[we],Opos);//0 float As=Mathf.Abs(_G.WallsAngle[ws]-_G.WallsAngle[wb]);//3,2 float Ae=Mathf.Abs(_G.WallsAngle[ws]-_G.WallsAngle[we]);//3,0 float Odis=Mathf.Sqrt(w/2*w/2+d/2*d/2); Vector3 pos=new Vector3(DOIT.ConvertStringToNumber( _G.OBJs[i][15] ), DOIT.ConvertStringToNumber(_G.OBJs[i][16]) ,DOIT.ConvertStringToNumber(_G.OBJs[i][17])); Vector3 Ppos=new Vector3(_G. WallsPointStart[wall-1].x, 0 ,_G. WallsPointStart[wall-1].y); if (_G.OBJs[i][4] == "B1" || _G.OBJs[i][4] == "B2"|| _G.OBJs[i][4] == "B3"|| _G.OBJs[i][4] == "B4" || _G.OBJs[i][4] == "B5"|| _G.OBJs[i][4] == "B9"|| _G.OBJs[i][4] == "B10"|| _G.OBJs[i][4] == "CB") { if(cat=="bottom") { dis=Vector3.Distance(Ppos,pos); if(Wallexist(wall))addingtolist(BLIST,disS,Odis,i,wall, Ae,As, dis,disE); } if(cat=="side base") { dis=DOIT.ConvertStringToNumber(_G.OBJs[i][7]); if(Wallexist(wall))addingtolist(BLIST,disS,Odis,i,wall, Ae,As, dis,disE); } } if (_G.OBJs[i][4] == "W1" || _G.OBJs[i][4] == "W2"|| _G.OBJs[i][4] == "W3"|| _G.OBJs[i][4] == "W4"|| _G.OBJs[i][4] == "W5"|| _G.OBJs[i][4] == "W9"|| _G.OBJs[i][4] == "W10"|| _G.OBJs[i][4] == "CW") { if(cat=="top") { dis=Vector3.Distance(Ppos,pos); if(Wallexist(wall))addingtolist(BLIST,disS,Odis,i,wall, Ae,As, dis,disE); } if(cat=="side wall start") { dis=Oy-DOIT.ConvertStringToNumber(_G.OBJs[i][7])/2; if(Wallexist(wall))addingtolist(BLIST,disS,Odis,i,wall, Ae,As, dis,disE); } if(cat=="side wall end") { dis=Oy+DOIT.ConvertStringToNumber(_G.OBJs[i][7])/2; if(Wallexist(wall))addingtolist(BLIST,disS,Odis,i,wall, Ae,As, dis,disE); } } if ( _G.OBJs[i][4] == "T1"|| _G.OBJs[i][5] == "PNL") { if(cat=="top") { dis=Vector3.Distance(Ppos,pos); if(Wallexist(wall))addingtolist(BLIST,disS,Odis,i,wall, Ae,As, dis,disE); } if(cat=="side tall") { dis=DOIT.ConvertStringToNumber(_G.OBJs[i][7]); if(Wallexist(wall))addingtolist(BLIST,disS,Odis,i,wall, Ae,As, dis,disE); } } } } //print("Base cab on wall "+wall+" ===="+BLIST.Count); return BLIST; } public static SortedDictionary OPENonWALL(int wall) { SortedDictionary OLIST= new SortedDictionary(); float dis=0; for (var i = 0; i < _G.OBJnum + 1; i++) { if (DOIT.exist(i)) { if(_G.OBJs[i][22] == "w"+wall.ToString() ){ if (_G.OBJs[i][2] == "Window" || _G.OBJs[i][2] == "Opening"|| _G.OBJs[i][2] == "Door"|| _G.OBJs[i][2] == "Patio") { Vector3 pos=new Vector3(DOIT.ConvertStringToNumber( _G.OBJs[i][15] ), DOIT.ConvertStringToNumber(_G.OBJs[i][16]) ,DOIT.ConvertStringToNumber(_G.OBJs[i][17])); Vector3 Ppos=new Vector3(_G. WallsPointStart[wall-1].x, 0 ,_G. WallsPointStart[wall-1].y); dis=Vector3.Distance(Ppos,pos); OLIST.Add(dis, i); } } } } return OLIST; } public static SortedDictionary APPLIANCESonWALL(int wall) { SortedDictionary OLIST= new SortedDictionary(); float dis=0; for (var i = 0; i < _G.OBJnum + 1; i++) { if (DOIT.exist(i)) { if(_G.OBJs[i][22] == "w"+wall.ToString() ){ if (_G.OBJs[i][4] == "frid" || _G.OBJs[i][4] == "stov" || _G.OBJs[i][0].IndexOf("dish") != -1 || _G.OBJs[i][0].IndexOf("wadr") != -1 || _G.OBJs[i][4]=="hood" || _G.OBJs[i][4] == "micr") { Vector3 pos=new Vector3(DOIT.ConvertStringToNumber( _G.OBJs[i][15] ), DOIT.ConvertStringToNumber(_G.OBJs[i][16]) ,DOIT.ConvertStringToNumber(_G.OBJs[i][17])); Vector3 Ppos=new Vector3(_G. WallsPointStart[wall-1].x, 0 ,_G. WallsPointStart[wall-1].y); dis=Vector3.Distance(Ppos,pos); if(!OLIST.ContainsKey(dis))OLIST.Add(dis, i); } } } } return OLIST; } public static void addingtolist(SortedDictionary LIST,float disS,float Odis,int i,int wall, float Ae, float As, float dis,float disE){ //print("addingtolist to wall"+wall+" Cabinet no=="+i); float XOW=Mathf.Abs(MESURE.FindXWonWall(i,wall,"X"));//Dis center wall to object float ww2=_G. WallsWidth[wall-1]/2; if(XOW