// Rendering public void DrawTerrainMesh() { if (loadedMap == null) { return; } MeshFilter mf = GetComponent <MeshFilter>(); if (mf != null) { Vector3 position = new Vector3(chunk.x - 1, 0, chunk.z - 1); int[,,] chunkData = loadedMap.GenerateChunkData(position); List <MeshGenerator.Node> nodes = MeshGenerator.CalculateNodes(chunkData); // Mesh Mesh mesh; Material[] materials; if (mesh = MeshGenerator.GenerateMesh(nodes, position, out materials)) { mf.sharedMesh.subMeshCount = materials.Length; // Materials MeshRenderer mr = GetComponent <MeshRenderer>(); if (mr != null) { mr.materials = materials; } } mf.sharedMesh = mesh; MeshCollider mc = GetComponent <MeshCollider>(); if (mc != null) { mc.sharedMesh = mf.sharedMesh; } } }