public void OnRoomsRotated() { m_EventCallCount++; if (m_EventCallCount < Rooms.Length - 1) //We're rotating only three of them { return; } for (int i = 0; i < Rooms.Length; ++i) { if (Rooms[i].m_ColorIndex != 3) { return; } } for (int i = 0; i < Rooms[ExitRoomIndex].Walls.Length; ++i) { GameObject Wall = Rooms[ExitRoomIndex].Walls[i]; Vector3 bias = Rooms[ExitRoomIndex].transform.position + (Exit.position - Rooms[ExitRoomIndex].transform.position).normalized; if (GameUtilities.IsPositionBetweenAB(bias, Exit.position, Wall.transform.position)) { Wall.GetComponent <BoxCollider>().enabled = false; StartCoroutine(GameUtilities.DissolveMesh(Wall.GetComponent <Renderer>(), true, 0.75f)); AudioMgr.PlaySound(Core.instance.BuiltInResources.SolvedPuzzleClip); break; } } m_EventCallCount = 0; }
List <Renderer> GatherNeighbours() { List <Renderer> neighbours = new List <Renderer>(); for (int i = 0; i < Walls.Length; ++i) { for (int j = 0; j < NeighbourRooms.Length; ++j) { if (GameUtilities.IsPositionBetweenAB(transform.position, NeighbourRooms[j].transform.position, Walls[i].transform.position)) { neighbours.Add(Walls[i].GetComponent <Renderer>()); break; } } } return(neighbours); }