public void Init()
 {
     secondaryDrive = new SecondaryDrive();
     secondaryDrive.Transmission                    = 2;    // rpmIn/prmOut
     GearBoxOutput.LastCalculation.Torque           = 100;  // 1/min
     OverallCarOutput.LastCalculation.Speed         = 20f;  // m/s
     CalculationController.Instance.Wheels.Diameter = 0.3f; //m
 }
        /// <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);
        }