using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.ResourceManagement.AsyncOperations; public class ConstructFRIDGE : MonoBehaviour { static GameObject FACE; public static void AddFridge(int nO) { string[] C = _G.OBJs[nO]; float W = DOIT.ConvertStringToNumber(C[6]); float H = DOIT.ConvertStringToNumber(C[7]); float D = DOIT.ConvertStringToNumber(C[8]); float px = DOIT.ConvertStringToNumber(C[15]); float py = DOIT.ConvertStringToNumber(C[16]); float pz = DOIT.ConvertStringToNumber(C[17]); float rx = DOIT.ConvertStringToNumber(C[18]); float ry = DOIT.ConvertStringToNumber(C[19]); float rz = DOIT.ConvertStringToNumber(C[20]); string PLR = C[23]; int LR = 1; if (PLR == "L") LR = -1; _G.nO = nO; float hf = 1; int Ni = int.Parse(C[1].Substring(4, 3)); Material matdoor = Instantiate(_G.ELEG); Material matbox = UIT_MATERIAL.GetMaterial("ffffff_Glossy");//Glossy-White Material matfront = Instantiate(_G.ELEG); string code="ffffff_Semi"; if (Ni <= 112) {code="F3F3F3_Semi"; }//Grey else if (Ni > 112 && Ni <= 119) {code="333333_Semi"; }//Black else if (Ni > 119) { code="ffffff_Semi"; }//Withe matbox = UIT_MATERIAL.GetMaterial(code); matdoor = matbox; //create BASE GameObject BASE = GameObject.CreatePrimitive(PrimitiveType.Cube);//new GameObject(); BASE.transform.localScale = new Vector3(W + 0.5f, H + 0.5f, D + 0.5f); BASE.name = _G.OBJs[nO][0]; BASE.transform.parent = GameObject.Find("SCENE").transform; Destroy(GameObject.Find("New Game Object")); float back=D*0.5f; float backBox=D*0.5f; float frontBox=D*0.5f; float front=-D*0.5f; float right=W*0.5f; float left=-W*0.5f; float rightBox=W*0.5f; float leftBox=-W*0.5f; float centerBox_X=0; //BOX GameObject BODY = CreateMcx("BODY", W, H - hf, D - 2.5f, 0, hf / 2, 1.25f, 0, 0, 0); BODY.GetComponent().material = matbox; BODY.GetComponent().probeAnchor = GameObject.Find("Reflection Probe").transform; //DOOR GameObject DOOR = CreateMcx("DOOR", W, H - hf, 2, 0, hf / 2, -D / 2 + 1f, 0, 0, 0); DOOR.GetComponent().material = matdoor; DOOR.GetComponent().probeAnchor = GameObject.Find("Reflection Probe").transform; FACE = GameObject.CreatePrimitive(PrimitiveType.Quad); FACE.transform.position = new Vector3(0, hf / 2, -D / 2 - 0.1f); FACE.transform.localRotation = Quaternion.Euler(0, 0, 0); FACE.name = "FACE"; FACE.GetComponent().material = Instantiate(matfront);//matW; Addressables.LoadAssetAsync(C[1]).Completed += face_Completed; FACE.GetComponent().probeAnchor = GameObject.Find("Reflection Probe").transform; FACE.transform.parent = FACE.transform; FACE.transform.localScale = new Vector3(W * LR, H - hf, 1); FACE.tag = "unhit"; //SPLASH DOBS.SplashC(BASE, C[55], W, H, D, C[54]); //LEG AddLeg("L1", BASE, -W / 2 + 1, -H / 2 + 0.5f, -D / 2 + 3); AddLeg("L2", BASE, -W / 2 + 1, -H / 2 + 0.5f, D / 2 - 2); AddLeg("L3", BASE, W / 2 - 1, -H / 2 + 0.5f, D / 2 - 2); AddLeg("L4", BASE, W / 2 - 1, -H / 2 + 0.5f, -D / 2 + 3); //ANCHORE POINT CREATE.Point(BASE, "P1", -W / 2, H / 2, D / 2); CREATE.Point(BASE, "P2", W / 2, H / 2, D / 2); CREATE.Point(BASE, "P3", W / 2, H / 2, -D / 2); CREATE.Point(BASE, "P4", -W / 2, H / 2, -D / 2); CREATE.EmptyPoint(BASE, "PBLU", leftBox, H * 0.5f , backBox);//P CREATE.EmptyPoint(BASE, "PBRU", rightBox, H * 0.5f , backBox);//P2 CREATE.EmptyPoint(BASE, "PFLU", leftBox, H * 0.5f , frontBox);//P3 CREATE.EmptyPoint(BASE, "PFRU", rightBox, H * 0.5f , frontBox);//P4 CREATE.EmptyPoint(BASE, "PBLB", leftBox, -H * 0.5f, backBox);//P1 CREATE.EmptyPoint(BASE, "PBRB", rightBox, -H * 0.5f, backBox);//P2 CREATE.EmptyPoint(BASE, "PFLB", leftBox, -H * 0.5f, frontBox);//P3 CREATE.EmptyPoint(BASE, "PFRB", rightBox, -H * 0.5f, frontBox);//P4 Mesure.Addpoints("BASE",BASE); //RigidBody BASE.AddComponent(); BASE.GetComponent().useGravity = false; BASE.GetComponent().isKinematic = true; BASE.GetComponent().detectCollisions = true; BASE.GetComponent().isTrigger = true; BODY.transform.parent = BASE.transform; DOOR.transform.parent = BASE.transform; FACE.transform.parent = BASE.transform; //Stet in scene BASE.transform.position = new Vector3(px, py, pz); BASE.transform.localRotation = Quaternion.Euler(rx, ry, rz); BASE.AddComponent(typeof(MoveObject)); BASE.GetComponent().material = _G.INV; } public static GameObject CreateMcx(string Name, float sx, float sy, float sz, float px, float py, float pz, float rx, float ry, float rz) { GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Cube); obj.GetComponent().enabled = false; obj.transform.localScale = new Vector3(sx, sy, sz); obj.transform.position = new Vector3(px, py, pz); obj.transform.localRotation = Quaternion.Euler(rx, ry, rz); obj.name = Name; obj.tag = "unhit"; return obj; } private static void face_Completed(AsyncOperationHandle handle) { if (handle.Status == AsyncOperationStatus.Succeeded) { Texture2D result = handle.Result; FACE.GetComponent().material.mainTexture = result; FACE.GetComponent().probeAnchor = GameObject.Find("Reflection Probe").transform; } } public static void AddLeg(string name, GameObject B, float xp, float hp, float zp) { GameObject L1 = GameObject.CreatePrimitive(PrimitiveType.Cube);//new GameObject(); L1.name = name; L1.transform.localScale = new Vector3(1, 1, 1); L1.transform.position = new Vector3(xp, hp, zp); L1.GetComponent().material = UIT_MATERIAL.GetMaterial("444444_Matt"); L1.GetComponent().probeAnchor = GameObject.Find("Reflection Probe").transform; L1.transform.SetParent(B.transform); } }