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); }
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); }