using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.ResourceManagement.AsyncOperations; public class ConstructBuildin : MonoBehaviour { static GameObject FACE; public static void AddBuilding(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]); _G.SC[0] = C[1]; int Ni = int.Parse(C[1].Substring(4, 3)); string code="ffffff_Glossy"; if (Ni <= 107) {code="888888_Glossy"; } if (Ni > 108 && Ni < 114) { code="ffffff_Glossy";} if (Ni >= 114) { code="222222_Glossy"; } Material mat = UIT_MATERIAL.GetMaterial(code); GameObject BODY = createmcx("BODY", w, h, d - 1.5f, 0, 0, 0.75f, 0, 0, 0, mat); GameObject DOOR = createmcx("DOOR", w, h - 1, 1, 0, 0, -d / 2 + 0.5f, 0, 0, 0, mat); //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; FACE = GameObject.CreatePrimitive(PrimitiveType.Quad); FACE.transform.position = new Vector3(0, 0, -d / 2 - 0.1f); FACE.transform.localRotation = Quaternion.Euler(0, 0, 0); FACE.name = "FACE"; FACE.GetComponent().material = Instantiate(_G.ELEG); //FACE.gameObject.GetComponent().material.mainTexture = Resources.Load("TEXTURES/STOVE/BUIL" + _G.SC[0].Substring(4, 3)) as Texture2D; Addressables.LoadAssetAsync("BUIL" + _G.SC[0].Substring(4, 3)).Completed += faceA_Completed; FACE.GetComponent().material.EnableKeyword("_SPECULARHIGHLIGHTS_OFF"); FACE.GetComponent().material.EnableKeyword("_GLOSSYREFLECTIONS_OFF"); FACE.transform.localScale = new Vector3(w, h, 1); FACE.tag = "unhit"; //create BASE GameObject BASE = GameObject.CreatePrimitive(PrimitiveType.Cube);//new GameObject(); BASE.transform.localScale = new Vector3(w + 0.2f, h + 2, d + 2); BASE.name = C[0]; BASE.transform.parent = GameObject.Find("SCENE").transform; Destroy(GameObject.Find("New Game Object")); //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 //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; //TOP.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;//Resources.Load("MATERIALS/INVISIBLE") as Material; } public static GameObject createmcx(string Name, float sx, float sy, float sz, float px, float py, float pz, float rx, float ry, float rz, Material M) { 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.GetComponent().material = M; obj.name = Name; obj.tag = "unhit"; return obj; } static void faceA_Completed(AsyncOperationHandle handleA) { if (handleA.Status == AsyncOperationStatus.Succeeded) { Texture2D result = handleA.Result; FACE.GetComponent().material.mainTexture = result; } } }