public void generateMesh() { meshData = getRoomData(); _ceilingMesh.vertices = meshData.roomBorderMesh.getVertices(); _ceilingMesh.triangles = meshData.roomBorderMesh.getTriangles(); _ceilingMesh.uv = meshData.roomBorderMesh.getUVs(); _ceilingMesh.colors32 = meshData.roomBorderMesh.getColors(); _ceilingMesh.RecalculateNormals(); MeshCollider collider = _ceiling.AddComponent <MeshCollider>(); collider.sharedMesh = _ceilingMesh; _wallMesh.vertices = meshData.roomBorderMesh.getWallVertices(); _wallMesh.triangles = meshData.roomBorderMesh.getWallTriangles(); _wallMesh.uv = meshData.roomBorderMesh.getWallUVs(); _wallMesh.RecalculateNormals(); MeshCollider wallCollider = _wall.AddComponent <MeshCollider>(); wallCollider.sharedMesh = _wallMesh; _floorMesh.vertices = meshData.floorMesh.getVertices(); _floorMesh.triangles = meshData.floorMesh.getTriangles(); _floorMesh.uv = meshData.floorMesh.getUVs(); _floorMesh.RecalculateNormals(); MeshCollider floorCollider = _floor.AddComponent <MeshCollider>(); floorCollider.sharedMesh = _floorMesh; }
//spawn the mesh for the room void SpawnRoom() { GameObject child = room.gameObject; GameObject go = child.transform.GetChild(0).gameObject; go.layer = LayerMask.NameToLayer("Room"); RoomData roomdata = room.roomData; MeshCollider meshCollider = child.AddComponent <MeshCollider>(); meshCollider.sharedMesh = GetCollision(roomdata); meshCollider.sharedMesh.name = seed.ToString() + " collision"; meshCollider.convex = true; meshCollider.isTrigger = true; MeshFilter meshFilter = go.AddComponent <MeshFilter>(); MeshRenderer meshRenderer = go.AddComponent <MeshRenderer>(); meshCollider = go.AddComponent <MeshCollider>(); List <Vector3> verts = new List <Vector3>(); List <int> tris = new List <int>(); List <Vector2> uvs = new List <Vector2>(); List <Vector3> roomData = new List <Vector3>(); foreach (Part part in roomdata.parts) { RoomMesh.GenerateMesh(part.SW, part.SE, part.NW, part.NE, new WallData(part.hasNorth, part.hasSouth, part.hasWest, part.hasEast).Entrances(part.hasNorthEnt, part.hasSouthEnt, part.hasWestEnt, part.hasEastEnt), wallHeight, doorHeight, doorWidth, tileSize, verts, uvs, tris); } Mesh mesh = new Mesh { name = "terrain " + seed.ToString(), vertices = verts.ToArray(), triangles = tris.ToArray(), uv = uvs.ToArray() }; mesh.RecalculateNormals(); meshFilter.mesh = mesh; meshRenderer.material = themeSettings.roomMaterial; meshCollider.sharedMesh = mesh; }