Esempio n. 1
0
    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;
    }
Esempio n. 2
0
    //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;
    }