// Something has crashed, burned out or blown up. Stop thinking, moving, or doing anything except
        // emit smoke for a while.
        internal void StopAndSmoke(Color startColor, Color endColor)
        {
            Mover = new NullMover();
            Shutdown();
            ParticleFountainSprite smoke = new ParticleFountainSprite(20, startColor, endColor, 1, 10, 10)
            {
                Position = Position
            };

            Engine?.AddSprite(smoke);
            System.Timers.Timer smokeTimer = new System.Timers.Timer
            {
                Interval  = 1000,
                AutoReset = true
            };
            smokeTimer.Elapsed += (sender2, e2) =>
            {
                if (smoke.EndDiameter >= 2)
                {
                    smoke.EndDiameter -= 1;
                    smoke.Radius      -= 1;
                }
                else
                {
                    smoke.Kill();
                    smokeTimer.Stop();
                }
            };
            smokeTimer.Start();
        }
        // Shut down this Critter.
        internal void Shutdown()
        {
            if (stopped)
            {
                return;
            }

            Mover   = new NullMover();
            stopped = true;

            Log("shutdown");

            Notify("SHUTDOWN:" + Position.ToString());

            controllerThreadRunning = false;
        }