public void Update()
{
var playerPosition = this.transform.position;
var maxWidthRoomIndexX = playerPosition.x + this.screenWidth;
var minWidthRoomIndexX = playerPosition.x - this.screenWidth;
float farthestDistanceX = 0.0f;
var roomsToRemove = new List<GameObject>();
foreach (var room in this.currentRooms)
{
var currentRoomX = room.transform.position.x + this.GetRoomWidth(room) / 2;
farthestDistanceX = Mathf.Max(currentRoomX, farthestDistanceX);
if (currentRoomX < minWidthRoomIndexX)
{
roomsToRemove.Add(room);
}
}
foreach (var room in roomsToRemove)
{
this.currentRooms.Remove(room);
Destroy(room.gameObject);
}
if (farthestDistanceX < maxWidthRoomIndexX)
{
this.AddRoom(farthestDistanceX);
}
}