private void SpawnOneHouse() { var waterAndLot = _worldPlane .GetStableShorelineBlocks() .OrderBy(_ => Random.value) .Take(10) .SelectMany(waterBlock => { return(_worldPlane.GetNearbyVacantLotsStream(waterBlock.GetGridPosition()) .Where(levelVacantLot => waterBlock.IsLevelWith(levelVacantLot)) .Select(vacantLot => new Tuple <Block, Block>(waterBlock, vacantLot))); }) .OrderBy(_ => Random.value) .FirstOrDefault(); if (waterAndLot != null) { var(waterBlock, vacantLot) = waterAndLot; var house = Instantiate(tinyHouseTemplate); vacantLot.Occupy(house); var target = waterBlock.transform.position; target.y = house.transform.position.y; house.transform.LookAt(target); _lastPlacedHouse = Time.fixedTime; } }