private ModuleTypeKnower SelectModule(out int?moduleIndex)
 {
     if (_genome.CanSpawn())
     {
         int?number = _genome.GetGeneAsInt();
         if (number.HasValue)
         {
             var numberInRange = number.Value % _moduleList.Modules.Count();
             if (_rootHub.AllowedModuleIndicies == null || !_rootHub.AllowedModuleIndicies.Any() || _rootHub.AllowedModuleIndicies.Contains(numberInRange))
             {
                 //Debug.Log("Adding Module " + number + ": " + Modules[number.Value % _moduleList.Modules.Count()] );
                 moduleIndex = numberInRange;
                 return(_moduleList.Modules[numberInRange]);
             }
             //else
             //{
             //    Debug.Log("Not allowed to spawn module " + numberInRange);
             //}
         }
         //else
         //{
         //    Debug.Log("Failed to parse " + simplified + "as a number");
         //}
     }
     //else
     //{
     //    Debug.Log("Cannot read gene of length " + GeneLength + " at position " + _genomePosition + " in '" + _genome + "'");
     //}
     moduleIndex = null;
     return(null);
 }
Esempio n. 2
0
 protected override GenomeWrapper SubConfigure(GenomeWrapper genomeWrapper)
 {
     RocketGenome    = genomeWrapper.Genome.Substring(genomeWrapper.GetGeneAsInt() ?? 0);
     Velocity       *= genomeWrapper.GetScaledNumber(1);
     RandomStartTime = genomeWrapper.GetScaledNumber(RandomStartTime * 2);
     MinStartTime    = genomeWrapper.GetScaledNumber(MinStartTime * 2);
     RandomSpeed     = genomeWrapper.GetScaledNumber(RandomSpeed * 2, RandomSpeed, 0.1f);
     LoadTime        = genomeWrapper.GetScaledNumber(LoadTime * 2, LoadTime, 0.1f);
     return(genomeWrapper);
 }