using UnityEngine.UI; using UnityEngine; using System.Collections.Generic; using UnityEngine.SceneManagement; using System.Linq; using System; public class Get : MonoBehaviour { public static int MaxObjectCount => 299; /// /// Extract the index of GameObject name /// /// the name of the GameObject /// Returns the index of the gameObject in the array of data _G.Objs or 299 if no value is found" public static int GetObjectIndex(string On) { if (On.Length > 4 && On != "sfloor" && On != "sceil") { return int.Parse(On[4..]); } Debug.Log($"object number not found : {On}"); return MaxObjectCount; } /// /// Returns the name of the first GameObject that have a toggle on in the child of the parameter /// /// the name of the parent GameObject in the hierarchy on which you want to find the toggle is on /// Returns "none or the name of the first GameObject with a toggle on in child" public static string ToggleOnInChild(string parentName) { //string Togname = "none"; GameObject O = o1(parentName); for (int i = 0; i < O.transform.childCount; i++) { Toggle toggle = O.transform.GetChild(i).GetComponent(); if (!toggle.gameObject.activeInHierarchy) continue; if (toggle != null && toggle.isOn) { return toggle.gameObject.name; } } if(O.transform!=null){return O.transform.GetChild(0).gameObject.name;} return ""; } /// /// Returns a GameObject according to the hierarchy passed as a parameter, Able to return a GameObject even when the GameObject is not active in the hierarchy. /// /// Create an array of string that represent the hierarchy of the gameObject you are searching for /// Returns GameObject using last value of string array, return null and print debug if GameObject doesn't exits public static GameObject GetGameObjectByNameArray(string[] objectHierarchy) { var scene = SceneManager.GetActiveScene(); var sceneRoots = scene.GetRootGameObjects(); Transform[] currentHierarchyLevel = new Transform[sceneRoots.Length]; GameObject result = null; GameObject child = null; for (int i = 0; i < sceneRoots.Length; i++) { GameObject current = sceneRoots[i]; if (objectHierarchy[0] == current.name) { child = current; if (objectHierarchy.Length == 1) { result = current; } break; } } for (int i = 1; i < objectHierarchy.Length; i++) { child = GetGameObjectByNameInParent(child.transform, objectHierarchy[i]); if (child == null) break; if (i == objectHierarchy.Length - 1) { result = child; } } if (result == null) { Debug.Log("No GameObject found for " + objectHierarchy[^1]); } return result; } public static GameObject GetGameObjectByNameInParent(Transform parent, string child) { GameObject result = null; for (int i = 0; i < parent.childCount; i++) { GameObject current = parent.GetChild(i).gameObject; if (current.name == child) { result = current; break; } } return result; } public static GameObject GetGameObjectByName(string objName) { GameObject obj = GameObject.Find(objName); if (obj == null) { Debug.Log("No Object Found For Name == " + objName); } return obj; } public static GameObject o1(string O1) { GameObject O = GameObject.Find(O1); return O; } public static GameObject o2(string O1, string O2) { //print(GameObject.Find(O1)); GameObject O = null; if (GameObject.Find(O1) != null) { O = GameObject.Find(O1); if (O.transform.Find(O2) != null) { O = O.transform.Find(O2).gameObject; } else { O = null; } } return O; } public static GameObject o3(string O1, string O2, string O3) { return GameObject.Find(O1).transform.Find(O2).transform.Find(O3).gameObject; } public static GameObject o4(string O1, string O2, string O3, string O4) { return GameObject.Find(O1).transform.Find(O2).transform.Find(O3).transform.Find(O4).gameObject; } public static GameObject o5(string O1, string O2, string O3, string O4, string O5) { return GameObject.Find(O1).transform.Find(O2).transform.Find(O3).transform.Find(O4).transform.Find(O5).gameObject; } public static string IVs(string Oname) {//Imput Value string return o1(Oname).GetComponent().text; } public static float IVf(string Oname) {//Imput Value float return DOIT.ConvertStringToNumber(o1(Oname).GetComponent().text); } public static bool Active(string Oname) {//Imput Value float bool ONOFF = false; if (GameObject.Find("HIDER").transform.Find(Oname).gameObject.activeInHierarchy) ONOFF = true; return ONOFF; } public static bool Exist(string papa, string child) {//Imput Value float bool ONOFF = false; if (GameObject.Find(papa).transform.Find(child).gameObject.activeInHierarchy) ONOFF = true; return ONOFF; } public static bool ExistActif(string O) {//Imput Value float bool ONOFF = false; if (GameObject.Find("Canvas")) { if (GameObject.Find("Panel_SCENE")) { if (GameObject.Find("PNL_TAB")) { if (GameObject.Find(O)) { ONOFF = true; } } } } return ONOFF; } public static GameObject TogOn(GameObject O) { GameObject Sel = O.transform.GetChild(0).gameObject; for (int i = 0; i < O.transform.childCount; i++) { if (O.transform.GetChild(i).gameObject.activeInHierarchy && O.transform.GetChild(i).GetComponent().isOn) { Sel = O.transform.GetChild(i).gameObject; } } return Sel; } public static bool IsTogOn(GameObject O) { if (O.GetComponent().isOn) { return true; } return false; } public static Texture2D TexDoor(string tex) { string path = "CABTEXTURE/"; Texture2D T = Resources.Load(path + tex) as Texture2D; return T; } public static Sprite SpriteDoor(string tex) { Texture2D T = TexDoor(tex); Sprite mySprite = Sprite.Create(T, new Rect(0.0f, 0.0f, T.width, T.height), new Vector2(0.5f, 0.5f), 100.0f); return mySprite; } public static Sprite SpriteFromTexture(string tex, string R, string Cs) { Texture2D T = Resources.Load("CABTEXTURE/" + tex) as Texture2D; T = CREATE.ChangeColors(T, DOIT.CSc(Cs, 255), Color.white); if (R == "90") T = DOIT.Rotate(T); Sprite mySprite = Sprite.Create(T, new Rect(0.0f, 0.0f, T.width, T.height), new Vector2(0.5f, 0.5f), 100.0f); return mySprite; } public static Sprite SpriteFromTextureCounter(string tex, string R) { //print("tex==="+tex); //print("R==="+R); Texture2D T = Resources.Load("COUNTER/" + tex) as Texture2D; if (R == "90") T = DOIT.Rotate(T); Sprite mySprite = Sprite.Create(T, new Rect(0.0f, 0.0f, T.width, T.height), new Vector2(0.5f, 0.5f), 100.0f); return mySprite; } public static string CsvValue(string name, Dictionary library, CsvHeaders header) { if (library.TryGetValue(name, out var data)) { return data.GetPropertyValue(header); } Debug.Log(header + " Not found for " + name + " in library " + nameof(library)); return ""; } public static string CsvValue(string name, Dictionary library, CsvHeaders header) { if (library.TryGetValue(name, out var data)) { return data.GetPropertyValue(header); } Debug.Log(header + " Not found for " + name + " in library " + nameof(library)); return ""; } public static string CsvValue(string name, Dictionary library, CsvHeaders header) { if (library.TryGetValue(name, out var data)) { return data.GetPropertyValue(header); } Debug.Log(header + " Not found for " + name + " in library " + nameof(library)); return ""; } public static Texture2D CabTexture(string tex, string Rs) { //print("tex=="+tex); string path = "CABTEXTURE/"; Texture2D T = Resources.Load(path + tex) as Texture2D; if (Rs == "90") T = DOIT.Rotate(T); return T; } public static bool CheckTog(string Om) { GameObject O = o1(Om); bool TF = false; if (O.GetComponent().isOn == true) TF = true; return TF; } public static float Rot(string path) { Vector3 Rv = Get.o1(path).transform.GetChild(0).transform.Find("Background").gameObject.transform.localEulerAngles; return Rv.z; } public static CabinetListData CabinetCode(string name) { var dataRef = _G.LibraryCabinets.ElementAt(0).Value; string library = dataRef.GetPropertyValue(CsvHeaders.Library_Name); if (GameObject.Find("CABINETpnl")) library = Get.ToggleOnInChild("FILTERS/Viewport/Content"); if (_G.LibraryCabinets.TryGetValue(name, out CabinetListData data)) { if (data.GetPropertyValue(CsvHeaders.Library_Name) == library) { return data; } } return null; } //FROM LIBRARIES------------------------------------------------------------------------------------------------------------------FROM LIBRARIES- public static string LibraryValue(string name, CsvHeaders header) { DataTypes dataTypeEnum = DataTypes.NULL; string prefix = name.Split("_")[0]; switch (prefix) { case "ME": dataTypeEnum = DataTypes.CabTexture; break; case "CA": dataTypeEnum = DataTypes.Cabinet; break; case "CO": dataTypeEnum = DataTypes.Counter; break; case "KN": dataTypeEnum = DataTypes.Knob; break; case "DO": dataTypeEnum = DataTypes.Door; break; case "KI": dataTypeEnum = DataTypes.Kick; break; case "OG": dataTypeEnum = DataTypes.Ogee; break; case "PA": dataTypeEnum = DataTypes.Panel; break; case "FI": dataTypeEnum = DataTypes.Filler; break; case "FA": dataTypeEnum = DataTypes.Fascia; break; case "VA": dataTypeEnum = DataTypes.Valance; break; case "CR": dataTypeEnum = DataTypes.Cornice; break; case "MI": dataTypeEnum = DataTypes.IntTexture; break; } if (dataTypeEnum == DataTypes.NULL) { Debug.Log("Found no data type corresponding to " + name); return ""; } return LibraryValue(name, header, dataTypeEnum); } public static string LibraryValue(string name, CsvHeaders header, string dataType) { Enum.TryParse(dataType, out DataTypes dataTypeEnum); return LibraryValue(name, header, dataTypeEnum); } public static string LibraryValue(string name, CsvHeaders header, DataTypes dataType) { var library = LibraryCategory(dataType); if (name != null) { string v = LibraryValue(name, header, library); if (string.IsNullOrEmpty(v)) { //Debug.Log("No Header " + header + " found in " + name + " in dataType " + dataType); } return LibraryValue(name, header, library); } return ""; } public static string LibraryValue(string name, CsvHeaders header, Dictionary library) { if (name != null && library.TryGetValue(name, out CsvData data)) { return data.GetPropertyValue(header); } return ""; } public static string CabTextureMatch(string GlobalColor, string dataType) { var Library = LibraryCategory(dataType); GlobalColor = GlobalColor.Split('?')[0]; for (int i = 0; i < Library.Count; i++) { var line = Library.ElementAt(i).Value; if (line.GetPropertyValue(CsvHeaders.Color_ID) == GlobalColor) { return line.GetPropertyValue(CsvHeaders.ID); } } return ""; } public static string CabTextureMatch(string GlobalColor, DataTypes dataType) { return CabTextureMatch(GlobalColor, dataType.ToString()); } public static CabinetListData CabCode(string model, string lib) { if (_G.LibraryCabinets.TryGetValue(model, out CabinetListData data)) { if (data.Library_Name == "Universal") { return data; } } return _G.LibraryCabinets.ElementAt(0).Value; } public static string UserValue(string model, int snum, int num) { string Cat = ""; for (int i = 0; i < _G.LibraryUsers.Count; i++) { if (_G.LibraryUsers[i] != "") { if (_G.LibraryUsers[i].Split(',')[snum] == model) { Cat = _G.LibraryUsers[i].Split(',')[num]; break; } } } return ""; } public static string StdTextureValue(string model, int num) { //print("model===="+model); string Cat = "none"; List L = _G.LibraryWoods; if (model.Split('.')[0] == "WOOD") L = _G.LibraryWoods; if (model.Split('.')[0] == "CERA") L = _G.LibraryCeramics; if (model.Split('.')[0] == "SPLA") L = _G.LibrarySplashs; for (int i = 0; i < L.Count; i++) { if (L[i].Split(',')[0].Equals(model)) { Cat = L[i].Split(',')[num]; break; } } return ""; } //public static string LibraryValue(string name, CsvHeaders header, DataTypes dataType) //{ // Dictionary Library = new(); // switch (dataType) // { // case DataTypes.Ogee: // Library = _G.LibraryOgees.ToDictionary(kvp => kvp.Key, kvp => (CsvData)kvp.Value); break; // case DataTypes.Cornice: // Library = _G.LibraryCornices.ToDictionary(kvp => kvp.Key, kvp => (CsvData)kvp.Value); break; // case DataTypes.Fascia: // Library = _G.LibraryFacias.ToDictionary(kvp => kvp.Key, kvp => (CsvData)kvp.Value); break; // case DataTypes.Valance: // Library = _G.LibraryValances.ToDictionary(kvp => kvp.Key, kvp => (CsvData)kvp.Value); break; // case DataTypes.Kick: // Library = _G.LibraryKicks.ToDictionary(kvp => kvp.Key, kvp => (CsvData)kvp.Value); break; // case DataTypes.Filler: // Library = _G.LibraryFillers.ToDictionary(kvp => kvp.Key, kvp => (CsvData)kvp.Value); break; // case DataTypes.Counter: // Library = _G.LibraryOgees.ToDictionary(kvp => kvp.Key, kvp => (CsvData)kvp.Value); break; // case DataTypes.Cabinet: // Library = _G.LibraryCornices.ToDictionary(kvp => kvp.Key, kvp => (CsvData)kvp.Value); break; // case DataTypes.IntTexture: // Library = _G.LibraryFacias.ToDictionary(kvp => kvp.Key, kvp => (CsvData)kvp.Value); break; // case DataTypes.CabTexture: // Library = _G.LibraryValances.ToDictionary(kvp => kvp.Key, kvp => (CsvData)kvp.Value); break; // case DataTypes.Knob: // Library = _G.LibraryKicks.ToDictionary(kvp => kvp.Key, kvp => (CsvData)kvp.Value); break; // case DataTypes.Panel: // Library = _G.LibraryFillers.ToDictionary(kvp => kvp.Key, kvp => (CsvData)kvp.Value); break; // case DataTypes.NULL: // default: Debug.Log("Should not enter here"); break; // } // if (Library.TryGetValue(name, out CsvData data)) // { // return data.GetPropertyValue(header); // } // return ""; //} public static string BoxTex(string[] C, int sn) { string tx = ""; if (C[83].Split('_')[sn - 1].IndexOf("0")!=-1 ) { tx = C[62]; } if (C[83].Split('_')[sn - 1].IndexOf("1")!=-1 ) { tx = C[82]; } return tx; } public static string CabCat(string str) { string newstr = str; switch (str) { case "Base": newstr = "BASE"; break; case "Tall": newstr = "TALL"; break; case "Wall": newstr = "WALL"; break; case "CBase": newstr = "CBASEL"; break; case "CWall": newstr = "CWALL"; break; case "Corner Base": newstr = "CBASE"; break; case "Corner Wall": newstr = "CWALL"; break; } return newstr; } public static string ChangeOnStringPos(string str, string newstring, int pos, string Separator) { string newstr = ""; string[] strs = str.Split(Separator); for (int i = 0; i < strs.Length; i++) { if (i == pos) strs[i] = newstring; newstr += strs[i]; if (i < strs.Length - 1) newstr += Separator; } return newstr; } public static bool ExistOnList(Dictionary list, string name) { return list.ContainsKey(name); } public static string SpaceDelete(string T) { if (T.Substring(0, 1) == " ") T = T.Substring(1, T.Length - 1); if (T.Substring(T.Length - 1, 1) == " ") T = T.Substring(0, T.Length - 1); if (T.Substring(T.Length - 1, 1) == " ") T = T.Substring(0, T.Length - 1); return T; } public static int IndexCSV(List Library, string ColumName) { string[] items = Library[0].Split(','); for (int i = 0; i < items.Length; i++) { if (items[i] == ColumName) { return i; } } return -1; } public static Dictionary LibraryCategory(string dataType) { Enum.TryParse(dataType, out DataTypes dataTypeEnum); return LibraryCategory(dataTypeEnum); } public static Dictionary LibraryCategory(DataTypes dataType) { //cat = cat.Replace("FL", "").Replace("FR", ""); switch (dataType) { case DataTypes.CabTexture: return _G.LibraryCabTextures.ToDictionary(kvp => kvp.Key, kvp => (CsvData)kvp.Value); case DataTypes.Ogee: return _G.LibraryOgees.ToDictionary(kvp => kvp.Key, kvp => (CsvData)kvp.Value); case DataTypes.Cornice: return _G.LibraryCornices.ToDictionary(kvp => kvp.Key, kvp => (CsvData)kvp.Value); case DataTypes.Fascia: return _G.LibraryFacias.ToDictionary(kvp => kvp.Key, kvp => (CsvData)kvp.Value); case DataTypes.Valance: return _G.LibraryValances.ToDictionary(kvp => kvp.Key, kvp => (CsvData)kvp.Value); case DataTypes.Kick: return _G.LibraryKicks.ToDictionary(kvp => kvp.Key, kvp => (CsvData)kvp.Value); case DataTypes.Panel: return _G.LibraryPanels.ToDictionary(kvp => kvp.Key, kvp => (CsvData)kvp.Value); case DataTypes.Filler: return _G.LibraryFillers.ToDictionary(kvp => kvp.Key, kvp => (CsvData)kvp.Value); case DataTypes.Counter: return _G.LibraryCounters.ToDictionary(kvp => kvp.Key, kvp => (CsvData)kvp.Value); case DataTypes.Knob: return _G.LibraryKnobs.ToDictionary(kvp => kvp.Key, kvp => (CsvData)kvp.Value); case DataTypes.Door: return _G.LibraryDoors.ToDictionary(kvp => kvp.Key, kvp => (CsvData)kvp.Value); case DataTypes.Cabinet: return _G.LibraryCabinets.ToDictionary(kvp => kvp.Key, kvp => (CsvData)kvp.Value); case DataTypes.IntTexture: return _G.LibraryInteriorTextures.ToDictionary(kvp => kvp.Key, kvp => (CsvData)kvp.Value); case DataTypes.NULL: default: Debug.Log("Should not enter here"); return null; } } public static string ActiveCabinetList(){ string LibraryCat="Cabinet"; if(UIT.TogOn("FILTERS")=="Ukitchenit")LibraryCat="CabinetUkitchenit"; return LibraryCat; } public static bool Bool(string Target,string List){ string[] Items=List.Split('_'); for(int i=0; i CabinetsToModifyInt() { List list = new(); for (var i = 0; i < _G.OBJnum; i++) { if (DOIT.exist(i) && _G.OBJs[i][0][..4]=="cabi") { foreach (string ObjectSelect in _G.SELECEDLIST) { print("_G.SELECEDLIST object in======" + ObjectSelect); } string[] ADN = _G.OBJs[i]; //isInList = false; print("ADN[5]=========" + ADN[5]); string CategoryGroup = SetSelectionBTN.GetCategoryGrooup(ADN[5]); if (_G.SELECEDLIST.Count == 0) { if (_G.SelectionToAdd.Contains(CategoryGroup) && ADN[22].Contains("w")) { list.Add(i); }//Base/Wall/Tall else if (_G.SelectionToAdd.Contains("Island") && ADN[22] == "floor") { list.Add(i); } else if (_G.SelectionToAdd.Contains("All")) { list.Add(i); } } else if (_G.SELECEDLIST.Contains(ADN[0])) { list.Add(i); } } } return list; } }