public static Animal[] SetGendersRate(GameObject[] creatures, float rate, char sex)
 {
     Animal[] scripts = new Animal[creatures.Length];
     for (int idx = 0; creatures.Length > idx; idx++)
     {
         scripts[idx]     = creatures[idx].GetComponent <Animal>();
         scripts[idx].sex = Sex.SwitchSex(sex);
         if (Random.Range(0.0f, 1.0f) < rate)
         {
             scripts[idx].sex = sex;
         }
     }
     return(scripts);
 }
    public static Animal[] SetParents(Animal[] scripts, float parentsRandomRate, int minParentsCount)
    {
        float            parentsCount = 0;
        char             parentalSex = Sex.female;
        bool             alphaMaleSetted = false, alphaFemaleSetted = false;
        Family           family   = new Family(scripts[0].Group.familySize, scripts[0].Group.parentsRate, scripts[0].Group.parentalCare);
        HashSet <Animal> adults   = new HashSet <Animal>();
        HashSet <Animal> children = new HashSet <Animal>();

        foreach (Animal script in scripts)
        {
            script.Group = family;
            if (minParentsCount > parentsCount || parentsRandomRate > (parentsCount / scripts.Length))
            {
                adults.Add(script);
                parentsCount++;
                script.lifeStage = LifeStage.adult;
                script.sex       = parentalSex;
                if (!alphaFemaleSetted)
                {
                    family.alphaFemale = script;
                    alphaFemaleSetted  = true;
                }
                else if (!alphaMaleSetted)
                {
                    family.alphaMale = script;
                    alphaMaleSetted  = true;
                }
                parentalSex = Sex.SwitchSex(parentalSex);
            }
            else
            {
                script.lifeStage = LifeStage.child;
                children.Add(script);
            }
        }
        family.members = scripts;
        family.fed     = children.ToArray();
        family.feeders = adults.ToArray();
        return(scripts);
    }