using System.Collections; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.ResourceManagement.AsyncOperations; public class ConstructPicture : MonoBehaviour { static GameObject FACE; static int ADN; public static void AddPicture(int nO) { _G.Load=false; ADN=nO; string[] C = _G.OBJs[ADN]; 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]); //create BASE GameObject BASE = GameObject.CreatePrimitive(PrimitiveType.Cube);//new GameObject(); BASE.transform.localScale = new Vector3(w + 0.2f, h, d + 1f); BASE.name = C[0]; BASE.transform.parent = GameObject.Find("SCENE").transform; //FRAME GameObject BODY = CreateMcx("BODY", w, h, d, 0, 0, 0, 0, 0, 0); //FACE 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"; Material Mat = Instantiate(_G.ST); FACE.GetComponent().material=Mat; Mat.SetColor("_BaseColor", Color.white); Mat.SetFloat("_Metallic", 0.4f); Mat.SetFloat("_Smoothness", 0f); Addressables.LoadAssetAsync(_G.OBJs[nO][1]).Completed += face_Completed; FACE.transform.parent = FACE.transform; FACE.transform.localScale = new Vector3(w, h, 1); Mesure.Addpoints("BASE",BASE); BODY.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 = Resources.Load("MATERIALS/INVISIBLE") as Material; //BM.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); Material Mat = Instantiate(_G.ST); string Color2= "#000000"; if(_G.OBJs[ADN][61]!="none"){Color2= _G.OBJs[ADN][61];} print("Color2====cp=="+Color2); Mat.SetColor("_BaseColor", DOIT.CSc(Color2, 255)); Mat.SetFloat("_Metallic", 0f); Mat.SetFloat("_Smoothness", 0f); obj.GetComponent().material=Mat; obj.GetComponent().material.mainTextureScale = new Vector2(sx / 12f, sy / 12f); obj.GetComponent().material.SetColor("_EmissionColor", Color.black); return obj; } private static void face_Completed(AsyncOperationHandle handle) { if (handle.Status == AsyncOperationStatus.Succeeded) { Texture2D result = handle.Result; StaticCoroutine.Start(AddTextureToFace(Instantiate(result))); } } private static IEnumerator AddTextureToFace(Texture2D result){ Material Mat=FACE.GetComponent().material; string Color1= "#ffffff"; string Color2= "#000000"; if(_G.OBJs[ADN][60]!="none"){Color1= _G.OBJs[ADN][60];} if(_G.OBJs[ADN][61]!="none"){Color2= _G.OBJs[ADN][61];} print("Color1===="+Color1); print("Color2===="+Color2); ModifyTexture.ModifyTexturePixels( result, DOIT.CSc(Color1, 255), DOIT.CSc(Color2,255) , Color.grey ); yield return new WaitForSeconds(0.5f); Mat.SetTexture("_BaseMap", result); _G.Load=true; } }