private void GeneratePlotMesh() { for (int h = 0; h < jsondata.gmfdata.data3d.mesh.horizonts.Length; h++) { THorizontData horzmesh = jsondata.gmfdata.data3d.mesh.horizonts[h]; string name; name = "mesh" + h; GameObject horz; horz = new GameObject(name); horz.transform.parent = transform; horz.AddComponent <MeshFilter>(); Mesh mesh; CombineInstance[] combine = new CombineInstance[3]; combine[0].mesh = mesh = new Mesh(); combine[0].transform = Matrix4x4.identity; mesh.vertices = horzmesh.surfaceup.vertices; mesh.triangles = horzmesh.surfaceup.triangles; combine[1].mesh = mesh = new Mesh(); combine[1].transform = Matrix4x4.identity; mesh.vertices = horzmesh.surfacedn.vertices; mesh.triangles = horzmesh.surfacedn.triangles; combine[2].mesh = mesh = new Mesh(); combine[2].transform = Matrix4x4.identity; mesh.vertices = horzmesh.surfacesd.vertices; mesh.triangles = horzmesh.surfacesd.triangles; horz.GetComponent <MeshFilter>().mesh = mesh = new Mesh(); mesh.name = "Mesh" + h; mesh.CombineMeshes(combine); mesh.RecalculateNormals(); MeshRenderer meshRenderer = horz.AddComponent <MeshRenderer>(); meshRenderer.material = Resources.Load("OnePlaneCrossSection", typeof(Material)) as Material; Material material = meshRenderer.material; material.color = new Color32((byte)(horzmesh.color % (256 * 256)), (byte)((horzmesh.color / 256) % 256), (byte)(horzmesh.color / (256 * 256)), 255); material.SetColor("_CrossColor", new Color32((byte)(horzmesh.color % (256 * 256)), (byte)((horzmesh.color / 256) % 256), (byte)(horzmesh.color / (256 * 256)), 255)); var foundObjects = FindObjectsOfType <GameObject>(); GameObject quad = foundObjects[0]; foreach (object o in foundObjects) { GameObject g = (GameObject)o; if (g.name == "Quad") { quad = g; } } OnePlaneCuttingController ctrl = horz.AddComponent <OnePlaneCuttingController>(); ctrl.plane = quad; ctrl.transform.parent = transform; Rigidbody rigibody = horz.AddComponent <Rigidbody>(); rigibody.isKinematic = true; MeshCollider meshCollider = horz.AddComponent <MeshCollider>(); meshCollider.sharedMesh = mesh; horz.transform.position = new Vector3(0F, 0.0F, 0F); } }
private void Awake() { meshRenderer = GetComponent <MeshRenderer>(); planeController = GetComponent <OnePlaneCuttingController>(); }