public static void GetDefaultDNA(BrainRGBRecognizerDNA dna)
 {
     if (dna.Extra == null)
     {
         dna.Extra = BrainRGBRecognizerDNAExtra.GetDefaultDNA();
     }
 }
        public BrainRGBRecognizer(EditorOptions options, ItemOptions itemOptions, BrainRGBRecognizerDNA dna, IContainer energyTanks)
            : base(options, dna, itemOptions.Brain_Damage.HitpointMin, itemOptions.Brain_Damage.HitpointSlope, itemOptions.Brain_Damage.Damage)
        {
            _itemOptions = itemOptions;
            _energyTanks = energyTanks;

            this.Design = new BrainRGBRecognizerDesign(options, true);
            this.Design.SetDNA(dna);

            _dnaExtra = dna.Extra ?? BrainRGBRecognizerDNAExtra.GetDefaultDNA();

            _isColor = _dnaExtra.IsColor;
            _finalResolution = _dnaExtra.FinalResolution;
            if (_dnaExtra.UseEdgeDetect)
            {
                _convolution = Convolutions.GetEdgeSet_Sobel();
            }
            else
            {
                _convolution = null;
            }

            _somDiscardDupes = _dnaExtra.ShouldSOMDiscardDupes;
            _somIsColor = _isColor;

            _shortTermMemory = new ShortTermMemory<double[]>(itemOptions.ShortTermMemory_MillisecondsBetween, itemOptions.ShortTermMemory_Size);
            //TODO: Get params from itemOptions
            _nonLifeEventSnapshots = new NonLifeEventSnapshots<double[]>();
            //_nonLifeEventSnapshots = new NonLifeEventSnapshots<double[]>(.25, .6, 2);     // faster times for debugging

            GetMass(out _mass, out _volume, out _radius, out _scaleActual, dna, itemOptions);
        }
        public override ShipPartDNA GetDNA()
        {
            BrainRGBRecognizerDNA retVal = new BrainRGBRecognizerDNA();

            base.FillDNA(retVal);

            return retVal;
        }