Example #1
0
        public void Init()
        {
            _overallCar            = new OverallCar();
            _overallCar.Wheelbase  = 1.5f;
            _overallCar.Weight     = 200;
            _overallCar.TrackWidth = 1.5f;
            _overallCar.Drag       = new Spline(new[] { 0d, 100d }, new[] { 0d, 0d });

            OverallCarOutput.LastCalculation.Direction = new Vector3(1, 0, 0);
            OverallCarOutput.LastCalculation.Speed     = 10;
            OverallCarOutput.LastCalculation.Position  = new Vector3();

            WheelOutput.LastCalculations[0]                               = new WheelOutput();
            WheelOutput.LastCalculations[0].Direction                     = new Vector2(1, 1).Normalize();
            WheelOutput.LastCalculations[0].LateralAcceleration           = 100;
            WheelOutput.LastCalculations[0].LongitudinalAccelerationForce = 0;
            WheelOutput.LastCalculations[0].LongitudinalDecelerationForce = 10;
            WheelOutput.LastCalculations[0]                               = new WheelOutput();
            WheelOutput.LastCalculations[0].Direction                     = new Vector2(1, 1).Normalize();
            WheelOutput.LastCalculations[0].LateralAcceleration           = 100;
            WheelOutput.LastCalculations[0].LongitudinalAccelerationForce = 0;
            WheelOutput.LastCalculations[0].LongitudinalDecelerationForce = 10;
            WheelOutput.LastCalculations[0]                               = new WheelOutput();
            WheelOutput.LastCalculations[0].Direction                     = new Vector2(1, 0).Normalize();
            WheelOutput.LastCalculations[0].LateralAcceleration           = 0;
            WheelOutput.LastCalculations[0].LongitudinalAccelerationForce = 50;
            WheelOutput.LastCalculations[0].LongitudinalDecelerationForce = 10;
            WheelOutput.LastCalculations[0]                               = new WheelOutput();
            WheelOutput.LastCalculations[0].Direction                     = new Vector2(1, 0).Normalize();
            WheelOutput.LastCalculations[0].LateralAcceleration           = 0;
            WheelOutput.LastCalculations[0].LongitudinalAccelerationForce = 50;
            WheelOutput.LastCalculations[0].LongitudinalDecelerationForce = 10;

            CalculationController.Initialize(1);
        }
        /// <summary>
        /// controls the calculation process
        /// </summary>
        private CalculationController()
        {
            _calculationEwh      = new EventWaitHandle(false, EventResetMode.AutoReset);
            _continueThreadEwh   = new EventWaitHandle(true, EventResetMode.AutoReset);
            _threadEndedEwh      = new EventWaitHandle(false, EventResetMode.AutoReset);
            _threadInterrupedEwh = new EventWaitHandle(false, EventResetMode.AutoReset);

            Aerodynamic    = new Aerodynamic();
            Brake          = new Brake();
            Engine         = new Engine();
            GearBox        = new GearBox();
            OverallCar     = new OverallCar();
            SecondaryDrive = new SecondaryDrive();
            Steering       = new Steering();
            Suspension     = new Suspension();
            Wheels         = new Wheels();

            _workerThread = new Thread(WorkerFunction);
        }