RevoluteJoint wandHinge; // Moves the wand

        #endregion Fields

        #region Constructors

        public Vehicle(MemoryBank memBank, float distance)
        {
            // Figure out the positions of the vehicle and it's sliderBase
            Vector3 position = new Vector3(memBank.Position.X, memBank.Position.Y, memBank.Position.Z + 10);
            Vector3 motorPos = new Vector3(position.X - memBank.Length - distance, position.Y, position.Z);
            byteDist = memBank.ByteDistance;
            bytes = memBank.NumberOfBytes;

            wandGoal = sliderGoal = false;
            delay = 0;

            // Build the main vechicle
            chassis = XNAGame.Instance.createVehicle(position);

            // Build the slider, and attatch
            sliderBase = new Box(motorPos, 1, 1, 1);
            slider = new PrismaticJoint(sliderBase, chassis.body, sliderBase.Position, Vector3.UnitX, chassis.body.Position);
            XNAGame.Instance.space.Add(slider);
            XNAGame.Instance.space.Add(sliderBase);

            // Change slider settings
            slider.Motor.Settings.Mode = MotorMode.Servomechanism;
            slider.Motor.Settings.Servo.SpringSettings.StiffnessConstant /= 20;
            slider.Motor.Settings.Servo.MaxCorrectiveVelocity = 200;
            slider.Motor.Settings.Servo.BaseCorrectiveSpeed = 120;

            // Create the wand
            setUpWand(position);
        }
        public Controller(Vehicle v, MemoryBank mb, string pathToSourceCode, string pathToInputs)
        {
            // Create a ByteCollection
            collection = new ByteCollection(pathToSourceCode, 300);
            collection.FilterCode();

            // Create an Interpreter
            interpreter = new Interpreter(pathToInputs, this);
            interpreter.PrepareToRun(collection);

            this.mb = mb;

            // Create a VehicleEventControl
            vec = new VehicleEventControl(interpreter.ExtractBlock(collection), v);
        }
        void resetScene()
        {
            for (int i = 0; i < children.Count(); i++)
            {
                if (children[i] is BepuEntity)
                {
                    children.Remove(children[i]);
                    i--;
                }
            }
            space = null;
            space = new Space();
            space.ForceUpdater.Gravity = new Vector3(0, -9.8f, 0);

            groundBox = new Box(Vector3.Zero, ground.width, 0.1f, ground.height);
            groundBox.Material.KineticFriction = 2;
            space.Add(groundBox);

            cameraCylindar = new Cylinder(Camera.Position, 5, 2);
            space.Add(cameraCylindar);

            MemoryBank mb = new MemoryBank(300, new Vector3(0, 2.5f, 0), 8);
            children.Add(mb);

            Vehicle v = new Vehicle(mb, 8.0f);
            //v.FlipTo();

            controller = new Controller(v, mb, program, "input.txt");

            children.Add(v);
        }