private void FindWall()
 {
     foreach (Wall wall in (IEnumerable <Wall>)Room)
     {
         if (wall.Door == this)
         {
             _wallField = wall;
             return;
         }
     }
 }
Пример #2
0
    public Room Convert(RoomJSON roomJSON)
    {
        Room.Floor       floor = new Room.Floor(roomJSON.size);
        List <Room.Wall> walls = new List <Room.Wall>();

        List <List <int[]> > wallLines = new List <List <int[]> >();

        wallLines.Add(roomJSON.outerpoints);
        wallLines.AddRange(roomJSON.innerpoints);

        List <Room.Door> windowsAndDoors = new List <Room.Door>();

        foreach (List <int[]> points in wallLines)
        {
            for (int i = 0; i < points.Count - 1; i++)
            {
                int[] p1 = points[i];
                int[] p2 = points[i + 1];

                Vector3Int origin     = new Vector3Int(Mathf.Min(p1[0], p2[0]), 0, Mathf.Min(p1[1], p2[1]));
                bool       isVertical = (p1[0] == p2[0]);
                Room.Wall  wall       = new Room.Wall(origin, isVertical,
                                                      Mathf.Max(Mathf.Abs(p2[0] - p1[0]), Mathf.Abs(p2[1] - p1[1])),
                                                      Mathf.RoundToInt(roomJSON.ceiling * 100));

                foreach (RoomJSON.Door door in roomJSON.door)
                {
                    if (wall.isDoorOn(door))
                    {
                        //int x1 = door.point_1[0];
                        //int x2 = door.point_2[0];
                        //int z1 = door.point_1[1];
                        //int z2 = door.point_2[1];
                        //// Debug.Log(string.Format("wall: [({0}, {1}), ({2}, {3})]\ndoor: [({4}, {5}), ({6}, {7})]",
                        //    p1[0], p1[1], p2[0], p2[1], x1, z1, x2, z2));
                        if (door.height_1 == 0)
                        {
                            wall.addDoor(door);
                        }
                        else
                        {
                            wall.addWindow(door);
                        }
                        break;
                    }
                }
                walls.Add(wall);
            }
        }

        return(new Room(floor, walls));
    }