public BodyGenome(BodyGenome parentGenome, MutationSettingsInstance mutationSettings) { unlockedTech = new UnlockedTech(parentGenome.unlockedTech); data = new BodyGenomeData(unlockedTech); FirstTimeInitializeCritterModuleGenomes(); SetToMutatedCopyOfParentGenome(parentGenome, mutationSettings); }
public BodyGenome() { unlockedTech = lookup.baseInitialAbilities.GetInitialUnlocks(); data = new BodyGenomeData(unlockedTech); FirstTimeInitializeCritterModuleGenomes(); GenerateInitialRandomBodyGenome(); }
// WPP: Not used (no templates) //public float[] waterGradX; // plan B //public float[] waterGradY; // plan B //public float[] depthSouth; //public float[] depthWest; //public float[] velTopRightX; //public float[] velTopLeftY; //public float[] velBottomLeftX; //public float[] velBottomRightY; public CritterModuleEnvironment(BodyGenomeData genomeData) { this.genomeData = genomeData; waterDepth = new float[1]; waterVelX = new float[1]; waterVelY = new float[1]; depthGradX = new float[1]; depthGradY = new float[1]; //depthSouth = new float[1]; //depthWest = new float[1]; //velTopRightX = new float[1]; //velTopLeftY = new float[1]; //velBottomLeftX = new float[1]; //velBottomRightY = new float[1]; }
public void Initialize(BodyGenomeData genome) { this.genome = genome; // * WPP: Vulnerable to index out of range errors (such as in UI) // consider initializing in variable declarations and leaving values at zero if (genome.useNutrients) { nutrientDensity = new float[1]; nutrientGradX = new float[1]; nutrientGradY = new float[1]; } if (genome.useFoodPosition) { foodPlantPosX = new float[1]; foodPlantPosY = new float[1]; foodAnimalPosX = new float[1]; foodAnimalPosY = new float[1]; } if (genome.useFoodVelocity) { foodPlantVelX = new float[1]; foodPlantVelY = new float[1]; foodAnimalVelX = new float[1]; foodAnimalVelY = new float[1]; } foodPlantDistance = new float[1]; foodPlantDirX = new float[1]; foodPlantDirY = new float[1]; foodAnimalDistance = new float[1]; foodAnimalDirX = new float[1]; foodAnimalDirY = new float[1]; foodEggDistance = new float[1]; foodEggDirX = new float[1]; foodEggDirY = new float[1]; foodCorpseDistance = new float[1]; foodCorpseDirX = new float[1]; foodCorpseDirY = new float[1]; if (genome.useFoodStats) { foodPlantQuality = new float[1]; foodPlantRelSize = new float[1]; foodAnimalQuality = new float[1]; foodAnimalRelSize = new float[1]; } sensorRange = 16f; // TEMP HARDCODED ***** /*foodPreferenceOrder = new int[3]; // 0 == particle, 1=egg, 2==creature * if(genome.preferenceParticles >= genome.preferenceEggs) { * if(genome.preferenceParticles >= genome.preferenceCreatures) { // particles first place * foodPreferenceOrder[0] = 0; * if(genome.preferenceEggs >= genome.preferenceCreatures) { // particles --> eggs --> creatures * foodPreferenceOrder[1] = 1; * foodPreferenceOrder[2] = 2; * } * else { // particles --> creatures --> eggs * foodPreferenceOrder[1] = 2; * foodPreferenceOrder[2] = 1; * } * } * else { // creatures --> particles --> eggs * foodPreferenceOrder[0] = 2; * foodPreferenceOrder[1] = 0; * foodPreferenceOrder[2] = 1; * } * } * else { * if(genome.preferenceEggs >= genome.preferenceCreatures) { // eggs first place! * foodPreferenceOrder[0] = 1; * if(genome.preferenceParticles >= genome.preferenceCreatures) { // eggs --> particles --> creatures * foodPreferenceOrder[1] = 0; * foodPreferenceOrder[2] = 2; * } * else { // eggs --> creatures --> particles * foodPreferenceOrder[1] = 2; * foodPreferenceOrder[2] = 0; * } * } * else { // creatures --> eggs --> particles * foodPreferenceOrder[0] = 2; * foodPreferenceOrder[1] = 1; * foodPreferenceOrder[2] = 0; * } * }*/ }
public CritterModuleFood(BodyGenomeData genome) { Initialize(genome); }