Esempio n. 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();
 }
Esempio n. 2
0
		public ElevatorTraverser(RoomLink link, Elevator elevator, LinearMapping mapping, RoomNetwork roomnet) {
			this.link = link;
			this.elevator = elevator;
			elevatorCenter = elevator.movingRoot.Find("Center");
			elevatorMapping = mapping;
			this.roomnet = roomnet;
		}
Esempio n. 3
0
 private new void Awake()
 {
     base.Awake();
     entryUp      = transform.Find("UpStairs");
     entryDown    = transform.Find("DownStairs");
     link         = gameObject.AddComponent <RoomLink>();
     interactable = GetComponent <Interactable>();
     wallCheck1   = transform.Find("WallCheck1");
     wallCheck2   = transform.Find("WallCheck2");
 }
Esempio n. 4
0
        public RoomLink GetClosestOpenLinkToConnected()
        {
            RoomLink closestLink = null;

            foreach (RoomLink link in links)
            {
                if (link.isOpen && link.GetOther(this).isConnectedToStart&& (closestLink == null || closestLink.GetOther(this).linkCountToStart > link.GetOther(this).linkCountToStart))
                {
                    closestLink = link;
                }
            }
            return(closestLink);
        }
Esempio n. 5
0
 public void UnregisterLink(RoomLink link)
 {
     links.Remove(link);
     if (roomnet.useLightPaths)
     {
         LightLink lightLink;
         if (linkLightLinks.TryGetValue(link, out lightLink))
         {
             linkLightLinks.Remove(link);
             link.lightLinks.Remove(lightLink);
             LightLink.DestroyLink(lightLink);
         }
     }
 }
Esempio n. 6
0
 public void RegisterLink(RoomLink link)
 {
     links.Add(link);
     if (roomnet.useLightPaths)
     {
         if (lightNode == null)
         {
             BuildLightNode();
         }
         LightLink lightLink = LightLine.BuildLine(transform, link.gameObject.name, lightNode, link.GetLightPoint(this));
         linkLightLinks.Add(link, lightLink);
         link.lightLinks.Add(lightLink);
     }
 }
Esempio n. 7
0
        private List <RoomLink> Retrace(RoomNode start, RoomNode end)
        {
            List <RoomLink> path    = new List <RoomLink>();
            RoomNode        current = end;

            while (current != start)
            {
                RoomLink link = current.room.links[current.parentLinkIndex];
                path.Add(link);
                current = current.parentNode;
                Debug.DrawLine(link.room1.transform.position, link.room2.transform.position, Color.blue);
            }

            path.Reverse();

            return(path);
        }
Esempio n. 8
0
        private void Awake()
        {
            roomnet     = GetComponentInParent <RoomNetwork>();
            link        = GetComponent <RoomLink>();
            levelLoader = GetComponent <SteamVR_LoadLevel>();
            Vector3 entry1Pos = roomnet.WorldToRelativePos(transform.Find("Entry1").position);
            Vector3 entry2Pos = roomnet.WorldToRelativePos(transform.Find("Entry2").position);

            if (Vector3.Distance(entry1Pos, roomnet.WorldToRelativePos(link.room1.center)) < Vector3.Distance(entry2Pos, roomnet.WorldToRelativePos(link.room1.center)))
            {
                link.entry1 = entry1Pos;
                link.entry2 = entry2Pos;
            }
            else
            {
                link.entry1   = entry2Pos;
                link.entry2   = entry1Pos;
                link.reversed = true;
            }
            link.isOpen = true;
        }
Esempio n. 9
0
        private void Awake()
        {
            roomnet       = GetComponentInParent <RoomNetwork>();
            link          = GetComponent <RoomLink>();
            linearMapping = GetComponent <LinearMapping>();
            entry1        = transform.Find("Entry1");
            entry2        = transform.Find("Entry2");
            Vector3 entry1Pos = roomnet.WorldToRelativePos(entry1.position);
            Vector3 entry2Pos = roomnet.WorldToRelativePos(entry2.position);

            if (Vector3.Distance(entry1Pos, roomnet.WorldToRelativePos(link.room1.center)) < Vector3.Distance(entry2Pos, roomnet.WorldToRelativePos(link.room1.center)))
            {
                link.entry1 = entry1Pos;
                link.entry2 = entry2Pos;
            }
            else
            {
                link.entry1   = entry2Pos;
                link.entry2   = entry1Pos;
                link.reversed = true;
            }
            link.isOpen = true;             // Elevator Link Always open
        }
Esempio n. 10
0
        private void Awake()
        {
            roomnet      = GetComponentInParent <RoomNetwork>();
            link         = GetComponentInParent <RoomLink>();
            entry1       = transform.Find("Entry1");
            entry2       = transform.Find("Entry2");
            centerTransf = transform.Find("Center");
            Vector3 entry1Pos = roomnet.WorldToRelativePos(entry1.position);
            Vector3 entry2Pos = roomnet.WorldToRelativePos(entry2.position);

            if (Vector3.Distance(entry1Pos, roomnet.WorldToRelativePos(link.room1.center)) < Vector3.Distance(entry2Pos, roomnet.WorldToRelativePos(link.room1.center)))
            {
                link.entry1 = entry1Pos;
                link.entry2 = entry2Pos;
            }
            else
            {
                link.entry1   = entry2Pos;
                link.entry2   = entry1Pos;
                link.reversed = true;
            }

            outlined = GetComponent <Outlined>();
        }
Esempio n. 11
0
 public void SetTarget(RoomLink link)
 {
     SetTarget(link.GetEntry(room));
 }
Esempio n. 12
0
 public void OnLinkClosed(RoomLink link)
 {
 }
Esempio n. 13
0
 public void OnLinkOpenned(RoomLink link)
 {
 }
Esempio n. 14
0
 public void OnLinkChange(RoomLink link)
 {
     //UpdateRoomConnections();
 }
Esempio n. 15
0
 public DefaultLinkTraverser(RoomLink link, RoomNetwork roomnet)
 {
     this.link    = link;
     this.roomnet = roomnet;
 }
Esempio n. 16
0
 public DoorTraverser(RoomLink link, RoomNetwork roomnet, SnapPoint parentPoint) : base(link, roomnet)
 {
     this.parentPoint = parentPoint;
 }