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(); }
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; } } }