public static AsteroidRules GetAsteroidRules(AsteroidForm currentForm, Vector3 parentDirection, int levelNumber)
    {
        AsteroidRules rules = new AsteroidRules();

        switch (currentForm)
        {
        case AsteroidForm.None:
            rules = GetRulesForNone(levelNumber);
            break;

        case AsteroidForm.Large:
            rules = GetRulesForLarge(parentDirection, levelNumber);
            break;

        case AsteroidForm.Medium:
            rules = GetRulesForMedium(parentDirection, levelNumber);
            break;

        case AsteroidForm.Small:
            rules = null;
            break;
        }

        return(rules);
    }
    private static AsteroidRules GetRulesForNone(int levelNumber)
    {
        AsteroidRules rules = new AsteroidRules();

        rules.direction = Quaternion.Euler(0, 0, Random.Range(0f, 360f)) * Vector3.up;
        rules.form      = AsteroidForm.Large;
        rules.scale     = 1;
        rules.speed     = Random.Range(1, 3) * (1 + 0.1f * levelNumber);

        return(rules);
    }
    private static AsteroidRules GetRulesForLarge(Vector3 parentDirection, int levelNumber)
    {
        AsteroidRules rules = new AsteroidRules();

        rules.direction = Quaternion.Euler(0, 0, Random.Range(-90f, 90f)) * parentDirection;
        rules.form      = AsteroidForm.Medium;
        rules.scale     = 0.6f;
        rules.speed     = Random.Range(4, 7) * (1 + 0.1f * levelNumber);

        return(rules);
    }