public void Reset()
    {
        floorNumber = startingFloorNumber;
        if (fixedTower)
        {
            if (towerNumber < 0)
            {
                towerNumber = 0;
            }

            if (floors == null ||
                towerNumber != lastTowerNumber ||
                !environmentParameters.Compare(floorGenerator.environmentParameters))
            {
                floorGenerator.SetEnvironmentParams(environmentParameters);
                floors          = floorGenerator.GenerateAllFloors(towerNumber, totalFloors);
                lastTowerNumber = towerNumber;
            }
        }
        else
        {
            // Using System.Random to choose tower number so we don't end up choosing based on
            // the previously fixed seed for UnityEngine.Random.
            floorGenerator.SetEnvironmentParams(environmentParameters);
            towerNumber     = new System.Random().Next(ObstacleTowerManager.MaxSeed);
            lastTowerNumber = towerNumber;
            floors          = floorGenerator.GenerateAllFloors(towerNumber, totalFloors);
        }
        Debug.Log("Resetting episode with seed: " + towerNumber);
    }