using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.ResourceManagement.AsyncOperations; public class ConstructSlider : MonoBehaviour { static Color cold; static Color colm; static GameObject d; public static void AddSlider(int nO) { string Name = _G.OBJs[nO][0]; float w = DOIT.ConvertStringToNumber(_G.OBJs[nO][6]); float h = DOIT.ConvertStringToNumber(_G.OBJs[nO][7]); float d = DOIT.ConvertStringToNumber(_G.OBJs[nO][8]); //float t = DOIT.ConvertStringToNumber(_G.OBJs[nO][9]); float px = DOIT.ConvertStringToNumber(_G.OBJs[nO][15]); float py = DOIT.ConvertStringToNumber(_G.OBJs[nO][16]); float pz = DOIT.ConvertStringToNumber(_G.OBJs[nO][17]); float rx = DOIT.ConvertStringToNumber(_G.OBJs[nO][18]); float ry = DOIT.ConvertStringToNumber(_G.OBJs[nO][19]); float rz = DOIT.ConvertStringToNumber(_G.OBJs[nO][20]); cold = DOIT.CSc(_G.OBJs[nO][62], 1); colm = DOIT.CSc(_G.OBJs[nO][63], 1); //color _G.SC[0] = _G.OBJs[nO][60]; //frame _G.SC[3] = _G.OBJs[nO][61]; //Molding _G.SC[4] = _G.OBJs[nO][62]; //Color door _G.SC[5] = _G.OBJs[nO][63]; //Color frame & molding //create door GameObject BASE = GameObject.CreatePrimitive(PrimitiveType.Cube); BASE.transform.localScale = new Vector3(w + 05f, h + 05f, 6f); BASE.name = Name; BASE.transform.parent = GameObject.Find("SCENE").transform; Destroy(GameObject.Find("New Game Object")); _G.SC[0] = _G.OBJs[nO][1]; print("TEXTURES/SLIDING/SLID" + _G.SC[0].Substring(4, 3)); int cor = 1; if (_G.OBJs[nO][23] == "R") cor = -1; //create doormodel if (_G.SC[0].Substring(0, 4) == "SLIS") { GameObject doormodel = DoDoor(w, h, 0); doormodel.transform.parent = BASE.transform; //create frame GameObject ft = CreateMcx("ft", w * 2, 1.0f, 1.0f, cor * w / 2, h / 2 + 1f, 0); GameObject fr = CreateMcx("fr", 2.0f, 6, 1.0f, cor * w / 2 - cor * 6f, h / 2, 0); GameObject fl = CreateMcx("fl", 2.0f, 6, 1.0f, cor * -w / 2 + cor * 6f, h / 2, 0); GameObject fk = CreateMcx("fk", 1.0f, 6, 1.0f, cor * -w / 2 + cor * 3f, 0, -1); ft.transform.parent = BASE.transform; fr.transform.parent = BASE.transform; fl.transform.parent = BASE.transform; fk.transform.parent = BASE.transform; } if (_G.SC[0].Substring(0, 4) == "SLID") { GameObject doormodel = DoDoor(w / 2, h, w / 4 + 0.5f); doormodel.transform.parent = BASE.transform; GameObject doormodel2 = DoDoor(w / 2, h, -w / 4 - 0.5f); doormodel2.transform.parent = BASE.transform; GameObject ft = CreateMcx("ft", w * 1.5f, 1.0f, 1.0f, 0, h / 2 + 1f, 0); GameObject fr = CreateMcx("fr", 2.0f, 6, 1.0f, w / 2 - 6f, h / 2, 0); GameObject fl = CreateMcx("fl", 2.0f, 6, 1.0f, -w / 2 + 6f, h / 2, 0); GameObject fr2 = CreateMcx("fr2", 2.0f, 6, 1.0f, -6f, h / 2, 0); GameObject fl2 = CreateMcx("fl2", 2.0f, 6, 1.0f, 6f, h / 2, 0); GameObject fk = CreateMcx("fk", 1.0f, 6, 1.0f, 3f, 0, -1); GameObject fk2 = CreateMcx("fk2", 1.0f, 6, 1.0f, -3f, 0, -1); ft.transform.parent = BASE.transform; fr.transform.parent = BASE.transform; fl.transform.parent = BASE.transform; fr2.transform.parent = BASE.transform; fl2.transform.parent = BASE.transform; fk.transform.parent = BASE.transform; fk2.transform.parent = BASE.transform; } Mesure.Addpoints("BASE",BASE); //RigidBody BASE.AddComponent(); BASE.GetComponent().useGravity = false; BASE.GetComponent().isKinematic = true; BASE.GetComponent().detectCollisions = true; BASE.GetComponent().isTrigger = true; //Set 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 = Resources.Load("MATERIALS/INVISIBLE") as Material; BASE.GetComponent().shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; } public static GameObject CreateMcx(string n, float sx, float sy, float sz, float px, float py, float pz) { GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Cube); obj.transform.localScale = new Vector3(sx, sy, sz); obj.transform.position = new Vector3(px, py, pz); //obj.tag = "door"; obj.GetComponent().material = Resources.Load("MATERIALS/ST") as Material; obj.GetComponent().material.color = colm; if (_G.SC[0].Substring(0, 1) == "w") obj.GetComponent().material.mainTexture = Resources.Load("Molding/m101w") as Texture2D; if (n == "mt" || n == "mr" || n == "ml") { obj.GetComponent().material.color = colm; } obj.name = n; obj.GetComponent().enabled = false; return obj; } public static Mesh CreateMesh(float P1x, float P1y, float P2x, float P2y, float P3x, float P3y, float P4x, float P4y) { Mesh m = new Mesh(); m.name = "ScriptedMesh"; m.vertices = new Vector3[] { new Vector3(P1x, P1y, 0.01f), new Vector3(P2x, P2y, 0.01f), new Vector3(P3x, P3y, 0.01f), new Vector3(P4x, P4y, 0.01f) }; m.uv = new Vector2[] { new Vector2 (0, 1), new Vector2 (1, 1), new Vector2(1, 0), new Vector2 (0, 0) }; m.triangles = new int[] { 0, 1, 2, 0, 2, 3 }; m.RecalculateNormals(); return m; } public static GameObject DoDoor(float w, float h, float x) { d = GameObject.CreatePrimitive(PrimitiveType.Cube); d.transform.localScale = new Vector3(w, h - 1f, -1.5f); d.transform.position = new Vector3(x, -0.5f, 0.75f); d.GetComponent().material = Instantiate(_G.ST);//Resources.Load("MATERIALS/ST") as Material; d.GetComponent().material.mainTexture = Resources.Load("TEXTURES/SLIDING/SLID" + _G.SC[0].Substring(4, 3)) as Texture2D; Addressables.LoadAssetAsync("SLID" + _G.SC[0].Substring(4, 3)).Completed += face_Completed; d.GetComponent().material.mainTextureScale = new Vector2(-1, 1); d.GetComponent().material.color = cold; d.name = "d"; d.GetComponent().enabled = false; return d; } private static void face_Completed(AsyncOperationHandle handle) { if (handle.Status == AsyncOperationStatus.Succeeded) { Texture2D result = handle.Result; d.gameObject.GetComponent().material.mainTexture = result; } } }