示例#1
0
 private void BuildNetwork()
 {
     startingRoom.isConnectedToStart = true;
     startingRoom.isFallback         = true;
     fallbackRoom = startingRoom;
     // Initialize Links and Rooms
     foreach (Transform child in transform)
     {
         RoomLink link = child.GetComponent <RoomLink>();
         if (link != null)
         {
             SnapPoint snapPoint = link.transform.GetComponentInChildren <SnapPoint>();
             if (snapPoint != null && snapPoint.type == SnapPointType.Door)
             {
                 link.traverser = new DoorTraverser(link, this, snapPoint);
             }
             else
             {
                 link.traverser = new DefaultLinkTraverser(link, this);
             }
             link.ApplyLink();
         }
         Room room = child.GetComponent <Room>();
         if (room != null)
         {
             rooms.Add(room);
         }
     }
     GetComponentsInChildren(points);
     startingRoom.UpdateConnected();
 }
示例#2
0
        protected override void Snapped()
        {
            base.Snapped();
            transform.SetParent(roomnet.transform);
            Vector3 wallVec     = wallCheck2.position - wallCheck1.position;
            bool    wallBlocked = Physics.Raycast(new Ray(wallCheck1.position, wallVec.normalized), wallVec.magnitude, LayerMask.GetMask("Decor"));

            if (!wallBlocked)
            {
                Room linkedRoom = roomnet.GetRoomGridHover(entryUp.position);
                if (linkedRoom != null)
                {
                    link.traverser = new DefaultLinkTraverser(link, linkedRoom.GetComponentInParent <RoomNetwork>());
                    link.room1     = currentRoom;
                    link.entry1    = roomnet.WorldToRelativePos(entryDown.position);
                    link.room2     = linkedRoom;
                    link.entry2    = roomnet.WorldToRelativePos(entryUp.position);
                    link.ApplyLink();
                    link.isOpen = true;
                }
            }
        }