using System.Collections; using System.Collections.Generic; using UnityEngine; public class AddMCX : MonoBehaviour { public static void CreateMCX(string name, GameObject door, Vector3 Dim, Vector3 Pos, Vector3 Rot,float R,Material Mat) { GameObject C = GameObject.CreatePrimitive(PrimitiveType.Cube); C.transform.localScale = Dim; C.transform.eulerAngles = Rot; C.transform.position = Pos; C.transform.parent = door.transform; //C.GetComponent().probeAnchor = GameObject.Find("Reflection Probe").transform; //print("R==="+R); Mat.SetFloat("_Rotation",R); C.GetComponent().material = Instantiate(Mat); C.GetComponent().probeAnchor = GameObject.Find("Reflection Probe").transform; C.name = name; C.layer=7; if(_G.PON=="")C.layer=0; } public static void AddEdge(GameObject Panel, float w,float h,float d,float eh,float ev, Material Mat){ Vector3 Rot=new(0,0,0); Vector3 Rot90=new(0,0,90); Vector3 Dim=new(ev,h,d); Vector3 Dim90=new(ev,w,d); //Top Vector3 Pos=new(0,h*0.5f-eh*0.5f,0); CreateMCX("Top", Panel,Dim90,Pos,Rot90 ,90,Mat); //Right Pos=new(w*0.5f-ev*0.5f,0,0); CreateMCX("Right", Panel,Dim,Pos,Rot ,0,Mat); //Bottom Pos=new(0,-h*0.5f+eh*0.5f,0); CreateMCX("Bottom", Panel,Dim90,Pos,Rot90 ,90,Mat); //Left Pos=new(-w*0.5f+ev*0.5f,0,0); CreateMCX("Right", Panel,Dim,Pos,Rot ,0,Mat); } public static void AddCenter(GameObject Panel, float w,float h,float d,float ct,float RotateTexture,Material Mat){ Vector3 Dim=new(w,h,ct); Vector3 Pos=new(0,0,d*0.5f-ct*0.5f+0.1f); Vector3 Rot=new(0,0,0); CreateMCX("Center", Panel,Dim,Pos,Rot ,RotateTexture,Mat); } public static void AddMiddle(GameObject Panel, float w,float h,float d,float eh,float ev,Material Mat){ Vector3 Dim=new(w-ev*2,eh,d); Vector3 Pos=new(0,0,0); Vector3 Rot=new(0,0,0); CreateMCX("Middle", Panel,Dim,Pos,Rot ,90,Mat); } public static void AddCross(GameObject Panel, float w,float h,float d,float eh,float ev,Material Mat){ w=w-2; float W=Mathf.Sqrt(w*w+h*h)-eh*2; Vector2 topleft=new(0,0); Vector2 bottomright=new(w,h); //float A=Vector2.Angle(topleft, bottomright); float A=Mathf.Rad2Deg * Mathf.Atan2(bottomright.y - topleft.y, bottomright.x - topleft.x); print("A================================================="+A); //* Mathf.Rad2Deg Vector3 Dim=new(W,eh,d); Vector3 Pos=new(0,0,0); Vector3 Rot=new(0,0,A); CreateMCX("Cross1", Panel,Dim,Pos,Rot ,90,Mat); Rot=new(0,0,-A); CreateMCX("Cross2", Panel,Dim,Pos,Rot ,90,Mat); } public static void AddDoubleCross(GameObject Panel, float w,float h,float d,float eh,float ev,Material Mat){ float W=Mathf.Sqrt(w*w+h*0.5f*h*0.5f)-eh*2; float A=Mathf.Rad2Deg * Mathf.Atan2(0 - h*0.5f, w- 0); Vector3 Dim=new(W,eh,d); Vector3 Pos=new(0,h*0.25f,0); Vector3 Rot=new(0,0,A); CreateMCX("CrossT1", Panel,Dim,Pos,Rot ,90,Mat); Rot=new(0,0,-A); CreateMCX("CrossT2", Panel,Dim,Pos,Rot ,-90,Mat); Pos=new(0,-h*0.25f,0); Rot=new(0,0,A); CreateMCX("CrossT1", Panel,Dim,Pos,Rot ,90,Mat); Rot=new(0,0,-A); CreateMCX("CrossT2", Panel,Dim,Pos,Rot ,-90,Mat); } public static void AddSlat_Vertical(GameObject Panel, float w,float h,float d,float sw,float R,Material Mat){ int Qty= (int)(w / (sw+0.25f)); sw=w/Qty-0.25f; float posx=-w*0.5f+sw*0.5f; Vector3 Dim; Vector3 Pos; Vector3 Rot=new(0,0,0); //Center for(int i=0; i