private void OnEnable() { TP = GameObject.Find("MainController").GetComponentInChildren <TrianglePainter>(); buySat.onClick.AddListener(BuySatelite); MainController.NextTurn += GetPaid; //UpdateTexts(); }
void Update() { if (check || Input.GetKeyDown(KeyCode.Space)) { check = false; Triangle3D t = testPlane.triangle; Camera camera = cam; float theta_Y = camera.fieldOfView * 0.5f; float theta_X = Mathf.Atan(Mathf.Tan(camera.fieldOfView * 0.5f * Mathf.Deg2Rad) * camera.aspect) * Mathf.Rad2Deg; Plane left = new Plane(0, new Vector3(-Mathf.Cos((theta_X) * Mathf.Deg2Rad), 0, -Mathf.Sin((theta_X) * Mathf.Deg2Rad))); Plane right = new Plane(0, new Vector3(-Mathf.Cos((180 - theta_X) * Mathf.Deg2Rad), 0, -Mathf.Sin((180 - theta_X) * Mathf.Deg2Rad))); Plane near = new Plane(-camera.nearClipPlane, Vector3.back); Plane far = new Plane(camera.farClipPlane, Vector3.forward); Plane top = new Plane(0, new Vector3(0, -Mathf.Sin((-theta_Y + 90) * Mathf.Deg2Rad), -Mathf.Cos((-theta_Y + 90) * Mathf.Deg2Rad))); Plane buttom = new Plane(0, new Vector3(0, -Mathf.Sin((theta_Y - 90) * Mathf.Deg2Rad), -Mathf.Cos((theta_Y - 90) * Mathf.Deg2Rad))); List <Triangle3D> ts = Rasterizer.ViewSpaceFrustrumClipping(t, cam); print(buttom.Point(p1.position)); foreach (var go in ts) { TrianglePainter.CreateTrianglePainter(go); } } }
public static void DisplayTriangleList(List <Triangle3D> ts, string prefix = "TrianglePainters") { if (!display) { return; } GameObject parent = new GameObject(); parent.name = prefix; for (int i = 0; i < ts.Count; i++) { TrianglePainter tp = TrianglePainter.CreateTrianglePainter(ts[i], prefix + " " + i.ToString()); tp.transform.SetParent(parent.transform); } }
//void Cache() //{ // if (transform.childCount < 3) // return; // if (mesh == null) // mesh = new Mesh(); // if ( mesh.vertices.Length != transform.childCount) // mesh.vertices = new Vector3[transform.childCount]; // int cnt = 0; // foreach (Transform go in transform) // { // if (cnt == 3) // return; // mesh.vertices[cnt++] = go.position; // } // Plane p = new Plane(mesh.vertices[0],mesh.vertices[1],mesh.vertices[2]); // mesh.SetVertices() //} public static TrianglePainter CreateTrianglePainter(Triangle3D triangle, string name = "TrianglePainter") { GameObject go = new GameObject(name); go.transform.position = (triangle.a + triangle.b + triangle.c) / 3; TrianglePainter tp = go.AddComponent <TrianglePainter>(); tp.color = Helper.RandomColor(); GameObject p1 = new GameObject("p1"); GameObject p2 = new GameObject("p2"); GameObject p3 = new GameObject("p3"); p1.transform.position = triangle.a; p2.transform.position = triangle.b; p3.transform.position = triangle.c; p1.transform.SetParent(go.transform); p2.transform.SetParent(go.transform); p3.transform.SetParent(go.transform); return(tp); }