Beispiel #1
0
    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);
        }
    }
Beispiel #2
0
 private void Awake()
 {
     meshRenderer    = GetComponent <MeshRenderer>();
     planeController = GetComponent <OnePlaneCuttingController>();
 }