protected override ValuedSlimeTrait <int> CombineTraits(ValuedSlimeTrait <int> original, ValuedSlimeTrait <int> other, SpliceSettings settings) { var trait = settings.PickBetween(original, other); return(settings.MaybeMutate(trait, (x) => { x.Value += (int)Mathf.Sign(UnityEngine.Random.value * 2 - 1); return x; })); }
protected override ValuedSlimeTrait <SlimeEat.FoodGroup[]> CombineTraits(ValuedSlimeTrait <SlimeEat.FoodGroup[]> original, ValuedSlimeTrait <SlimeEat.FoodGroup[]> other, SpliceSettings settings) { var trait = CreateDefaultTrait() as ValuedSlimeTrait <SlimeEat.FoodGroup[]>; trait.Value = original.Value.Concat(other.Value).Distinct().ToArray(); return(trait); }
protected override ValuedSlimeTrait <float> CombineTraits(ValuedSlimeTrait <float> original, ValuedSlimeTrait <float> other, SpliceSettings settings) { return(UnityEngine.Random.value > .5 ? original : other); }