using UnityEngine; using UnityEngine.UI; using System.Globalization; public class Align : MonoBehaviour { GameObject T; GameObject S; int ntO; int nsO; float rtx; float rty; float rtz; Vector3 tPOS; Vector3 sPOS; float Ow; float Od; float Oh; float Tw; float Td; float Th; public void set() { T = GameObject.Find(_G.TARGET).gameObject; S = GameObject.Find(SceneModeManager.SelectedName).gameObject; ntO = Get.GetObjectIndex(_G.TARGET); nsO = Get.GetObjectIndex(SceneModeManager.SelectedName); Ow = DOIT.ConvertStringToNumber(_G.OBJs[nsO][6]); Od = DOIT.ConvertStringToNumber(_G.OBJs[nsO][8]); Oh = DOIT.ConvertStringToNumber(_G.OBJs[nsO][7]); Tw = DOIT.ConvertStringToNumber(_G.OBJs[ntO][6]); Td = DOIT.ConvertStringToNumber(_G.OBJs[ntO][8]); Th = DOIT.ConvertStringToNumber(_G.OBJs[ntO][7]); rtx = DOIT.ConvertStringToNumber(_G.OBJs[ntO][18]); rty = DOIT.ConvertStringToNumber(_G.OBJs[ntO][19]); rtz = DOIT.ConvertStringToNumber(_G.OBJs[ntO][20]); S.transform.parent = T.transform; T.transform.localRotation = Quaternion.Euler(rtx, 0, rtz); sPOS = S.transform.position; tPOS = T.transform.position; //Wall if (_G.OBJs[ntO][22] != "floor") { switch (name) { case "AC": CenterX(); break; case "AL": LeftX(); break; case "AR": RightX(); break; case "ACH": CenterY(); break; case "AT": TopY(); break; case "AB": BottomY(); break; } } //Floor else if (_G.OBJs[ntO][22] == "floor"){ switch (name) { case "AC": CenterX(); break; case "AL": LeftX(); break; case "AR": RightX(); break; case "ACH": CenterZ(); break; case "AT": BackZ(); break; case "AB": FrontZ(); break; } } ResetCode(); } public void CenterX() { //S.transform.position = new Vector3(tPOS.x, sPOS.y, sPOS.z); SetPosition(new Vector3(tPOS.x, sPOS.y, sPOS.z)); } public void CenterY() { //S.transform.position = new Vector3(sPOS.x , tPOS.y, sPOS.z); SetPosition(new Vector3(sPOS.x, tPOS.y, sPOS.z)); } public void CenterZ() { //S.transform.position = new Vector3(sPOS.x, sPOS.y, tPOS.z); SetPosition(new Vector3(sPOS.x, sPOS.y, tPOS.z)); } public void LeftX() { float dis = -Tw / 2 + Ow / 2; //S.transform.position = new Vector3(tPOS.x+dis, sPOS.y, sPOS.z); SetPosition(new Vector3(tPOS.x + dis, sPOS.y, sPOS.z)); } public void RightX() { float dis=Tw / 2 - Ow / 2; //S.transform.position = new Vector3(tPOS.x+ dis, sPOS.y, sPOS.z); SetPosition(new Vector3(tPOS.x + dis, sPOS.y, sPOS.z)); } public void TopY() { float dis = Th / 2 - Oh / 2; //S.transform.position = new Vector3(sPOS.x, tPOS.y + dis, sPOS.z); SetPosition(new Vector3(sPOS.x, tPOS.y + dis, sPOS.z)); } public void BottomY() { float dis = -Th / 2 + Oh / 2; //S.transform.position = new Vector3(sPOS.x, tPOS.y + dis, sPOS.z); SetPosition(new Vector3(sPOS.x, sPOS.y + dis, tPOS.z)); } public void BackZ() { float dis = -Td / 2 + Od / 2; //S.transform.position = new Vector3(sPOS.x, sPOS.y, tPOS.z + dis); SetPosition(new Vector3(sPOS.x, sPOS.y, tPOS.z + dis)); } public void FrontZ() { float dis = Td / 2 - Od / 2; // S.transform.position = new Vector3(sPOS.x, sPOS.y , tPOS.z+ dis); SetPosition(new Vector3(sPOS.x, sPOS.y, tPOS.z + dis)); } // new function to create move command void SetPosition(Vector3 newPos) { S.GetComponent()?.MoveObjectToPos(newPos); S.transform.SetParent(Get.o1("SCENE").transform); } public void ResetCode() { T.transform.localRotation = Quaternion.Euler(rtx, rty, rtz); S.transform.parent = null; sPOS = S.transform.position; _G.OBJs[nsO][15] = sPOS.x.ToString(); //pos X _G.OBJs[nsO][16] = sPOS.y.ToString(); //pos Y _G.OBJs[nsO][17] = sPOS.z.ToString(); //pos Z float Ar = (360 - rty) * Mathf.PI / 180; float Xd = Mathf.Abs(Ow * Mathf.Cos(Ar)) + Mathf.Abs(Od * Mathf.Sin(Ar)); float Zd = Mathf.Abs(Ow * Mathf.Sin(Ar)) + Mathf.Abs(Od * Mathf.Cos(Ar)); //_G.OBJs[nsO][11] = Xd.ToString(); //Counter Thickness //_G.OBJs[nsO][13] = Zd.ToString(); //Door thickness _G.OBJs[nsO][19] = rty.ToString(); //Dis on Y SetAlignPNL(); S.transform.SetParent(Get.o1("SCENE").transform); } public static void SetAlignPNL() { GameObject ALIGN = GameObject.Find("HIDER").transform.Find("ALIGN").transform.Find("Abtn").gameObject; int nt = int.Parse(_G.TARGET[4..]); //int nO = int.Parse(SceneModeManager.SelectedName.Substring(4, SceneModeManager.SelectedName.Length - 4)); bool Ax = DOIT.CheckAxe("X"); bool Ay = DOIT.CheckAxe("Y"); bool Az = DOIT.CheckAxe("Z"); for (int i = 0; i < ALIGN.transform.childCount; i++) { ALIGN.transform.GetChild(i).gameObject.SetActive(true); ALIGN.transform.GetChild(i).GetComponent().isOn = false; } if (_G.OBJs[nt][22] != "floor") { if (Ay == false) { ALIGN.transform.Find("AL").gameObject.SetActive(false); ALIGN.transform.Find("AC").gameObject.SetActive(false); ALIGN.transform.Find("AR").gameObject.SetActive(false); } if (Ax == false && Az == false) { ALIGN.transform.Find("AB").gameObject.SetActive(false); ALIGN.transform.Find("ACH").gameObject.SetActive(false); ALIGN.transform.Find("AT").gameObject.SetActive(false); } } else if (_G.OBJs[nt][22] == "floor") { if (Ax == false && Az == true) { ALIGN.transform.Find("AT").gameObject.SetActive(false); ALIGN.transform.Find("ACH").gameObject.SetActive(false); ALIGN.transform.Find("AB").gameObject.SetActive(false); } if (Ax == true && Az == false) { ALIGN.transform.Find("AL").gameObject.SetActive(false); ALIGN.transform.Find("AC").gameObject.SetActive(false); ALIGN.transform.Find("AR").gameObject.SetActive(false); } } else { //GameObject.Find("HIDER").transform.Find("MESSAGE").gameObject.transform.GetChild(1).gameObject.GetComponent().text = "You have to select an object"; _M.PH(9,0,"ffffff",0,0); } } public void ClosePanel(){ DOIT.CloseALLPNL(); if(!string.IsNullOrEmpty(_G.TARGET)){ Get.o2("SCENE",_G.TARGET).GetComponent().material = _G.INV; } foreach(Transform obj in Get.o1("SCENE").transform){ print("obj name==="+obj.name); obj.gameObject.GetComponent().material = _G.INV; } if(SceneModeManager.Selected){ SceneModeManager.Selected.GetComponent().material = _G.INV; } } }