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(); }
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; }
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"); }
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); }
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); } } }
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); } }
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); }
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; }
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 }
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>(); }
public void SetTarget(RoomLink link) { SetTarget(link.GetEntry(room)); }
public void OnLinkClosed(RoomLink link) { }
public void OnLinkOpenned(RoomLink link) { }
public void OnLinkChange(RoomLink link) { //UpdateRoomConnections(); }
public DefaultLinkTraverser(RoomLink link, RoomNetwork roomnet) { this.link = link; this.roomnet = roomnet; }
public DoorTraverser(RoomLink link, RoomNetwork roomnet, SnapPoint parentPoint) : base(link, roomnet) { this.parentPoint = parentPoint; }