예제 #1
0
 public void PhysicsUpdated(object sender, PhysicsEventArgs e)
 {
     arduinoData.led_color = neoPixelRpm.CalcLinearLeds(e.Physics.Rpms);
     arduinoData.matrix_0  = GEARS[e.Physics.Gear];
     arduinoData.digit_1   = sevenSegment.ConvertFromDecimal(e.Physics.SpeedKmh);
     serialConnection.Write(ACStructs.structToBytes(arduinoData));
 }
예제 #2
0
        public void ac_PhysicsUpdated(object sender, PhysicsEventArgs e)
        {
            curRPM   = e.Physics.Rpms;
            curGear  = e.Physics.Gear - 1;
            PitLimit = e.Physics.PitLimiterOn;
            DRS      = e.Physics.Drs;

            Dispatcher.Invoke(() =>
            {
                try
                {
                    MainLabelUpdater();

                    this.RPMmeter.Value    = curRPM;
                    GearLabel.Content      = curGear.ToString();
                    LabelStatus.Content    = "Connected!";
                    LabelStatus.Foreground = Color.Aquamarine.ToBrush();

                    RPMlabel.Content    = curRPM.ToString();
                    RPMlabel.Foreground = Color.Gray.ToBrush();
                }
                catch
                {
                    LabelStatus.Content    = "Error!";
                    LabelStatus.Foreground = Color.Crimson.ToBrush();
                }
            });
        }
예제 #3
0
        static void ac_PhysicUpdated(object sender, PhysicsEventArgs e)
        {
            _currentGear  = (short)e.Physics.Gear;
            _currentRpm   = (short)e.Physics.Rpms;
            _currentSpeed = (short)e.Physics.SpeedKmh;

            send_Data();
        }
예제 #4
0
        static void ac_PhysicsUpdated(object sender, PhysicsEventArgs pe)
        {
            Carro carro = new Carro();

            carro.Velocidade                              = pe.Physics.SpeedKmh;
            carro.RPM                                     = pe.Physics.Rpms;
            carro.Gasolina                                = pe.Physics.Fuel;
            carro.Acelerador                              = pe.Physics.Gas;
            carro.Brake                                   = pe.Physics.Brake;
            carro.Embragem                                = pe.Physics.Clutch;
            carro.Marcha                                  = pe.Physics.Gear;
            carro.DensidadeAR                             = pe.Physics.AirDensity;
            carro.TemperaturaAR                           = pe.Physics.AirTemp;
            carro.TemperaturaPista                        = pe.Physics.RoadTemp;
            carro.DanoFrente                              = pe.Physics.CarDamage[0];
            carro.DanoTraseira                            = pe.Physics.CarDamage[1];
            carro.DanoLateralEsquerda                     = pe.Physics.CarDamage[2];
            carro.DanoLateralDireita                      = pe.Physics.CarDamage[3];
            carro.BrakeBias                               = pe.Physics.BrakeBias;
            carro.TemperaturaBrakeFrenteEsquerdo          = pe.Physics.BrakeTemp[0];
            carro.TemperaturaBrakeFrenteDireito           = pe.Physics.BrakeTemp[1];
            carro.TemperaturaBrakeTraseiroEsquerdo        = pe.Physics.BrakeTemp[2];
            carro.TemperaturaBrakeTraseiroDireito         = pe.Physics.BrakeTemp[3];
            carro.PressaoPneuFrenteEsquerdo               = pe.Physics.WheelsPressure[0];
            carro.PressaoPneuFrenteDireito                = pe.Physics.WheelsPressure[1];
            carro.PressaoPneuTraseiroEsquerdo             = pe.Physics.WheelsPressure[2];
            carro.PressaoPneuTraseiroDireito              = pe.Physics.WheelsPressure[3];
            carro.TemperaturaPneuCoreFrenteEsquerdo       = pe.Physics.TyreCoreTemperature[0];
            carro.TemperaturaPneuCoreFrenteDireito        = pe.Physics.TyreCoreTemperature[1];
            carro.TemperaturaPneuCoreTraseiroEsquerdo     = pe.Physics.TyreCoreTemperature[2];
            carro.TemperaturaPneuCoreTraseiroDireito      = pe.Physics.TyreCoreTemperature[3];
            carro.TemperaturaPneuInteriorFrenteEsquerdo   = pe.Physics.TyreTempI[0];
            carro.TemperaturaPneuInteriorFrenteDireito    = pe.Physics.TyreTempI[1];
            carro.TemperaturaPneuInteriorTraseiroEsquerdo = pe.Physics.TyreTempI[2];
            carro.TemperaturaPneuInteriorTraseiroDireito  = pe.Physics.TyreTempI[3];
            carro.TemperaturaPneuMeioFrenteEsquerdo       = pe.Physics.TyreTempM[0];
            carro.TemperaturaPneuMeioFrenteDireito        = pe.Physics.TyreTempM[1];
            carro.TemperaturaPneuMeioTraseiroEsquerdo     = pe.Physics.TyreTempM[2];
            carro.TemperaturaPneuMeioTraseiroDireito      = pe.Physics.TyreTempM[3];
            carro.TemperaturaPneuForaFrenteEsquerdo       = pe.Physics.TyreTempO[0];
            carro.TemperaturaPneuForaFrenteDireito        = pe.Physics.TyreTempO[1];
            carro.TemperaturaPneuForaTraseiroEsquerdo     = pe.Physics.TyreTempO[2];
            carro.TemperaturaPneuForaTraseiroDireito      = pe.Physics.TyreTempO[3];
            carro.DesgastePneuFrenteEsquerdo              = pe.Physics.TyreWear[0];
            carro.DesgastePneuFrenteDireito               = pe.Physics.TyreWear[1];
            carro.DesgastePneuTraseiroEsquerdo            = pe.Physics.TyreWear[2];
            carro.DesgastePneuTraseiroDireito             = pe.Physics.TyreWear[3];
            carro.Time                                    = TimeZoneInfo.ConvertTime(DateTime.Now, TimeZoneInfo.FindSystemTimeZoneById("E. South America Standard Time"));
            string jsonstring = JsonSerializer.Serialize(carro);
            //é gambiarra eu sei...
            string jsonarrumado = "[" + jsonstring + "]";

            sendRequest(UrlCarro, jsonarrumado, "Carro");
        }
예제 #5
0
        private static void assettoCorsa_PhysicsUpdated(object sender, PhysicsEventArgs e)
        {
            string jsonSubstring = "{";

            jsonSubstring += "\"gas\": " + e.Physics.Gas;
            jsonSubstring += ",\"brake\": " + e.Physics.Brake;
            jsonSubstring += ",\"gear\": " + e.Physics.Gear;
            jsonSubstring += ",\"rpms\": " + e.Physics.Rpms;
            jsonSubstring += ",\"speedKmh\": " + e.Physics.SpeedKmh;
            jsonSubstring += ",\"accG\": " + JsonConvert.SerializeObject(e.Physics.AccG);
            jsonSubstring += ",\"tyreWear\": " + JsonConvert.SerializeObject(e.Physics.TyreWear);
            jsonSubstring += ",\"tyreCoreTemperature\": " + JsonConvert.SerializeObject(e.Physics.TyreCoreTemperature);

            jsonSubstring += "}";

            Console.WriteLine(jsonSubstring);
        }
예제 #6
0
 static void ac_StaticInfoUpdated(object sender, PhysicsEventArgs e)
 {
     ca.Fuel  = e.Physics.Fuel;
     ca.Rpm   = e.Physics.Rpms;
     ca.Gear  = e.Physics.Gear - 1;
     ca.Speed = e.Physics.SpeedKmh;
     ca.BB    = e.Physics.BrakeBias * 100;
     if (ca.Rpm > ca.MaxRPMC)
     {
         ca.ShiftRGB = 1;
     }
     else if (ca.Rpm > ca.MaxRPMC * 2)
     {
         ca.ShiftRGB = 2;
     }
     else if (ca.Rpm > ca.MaxRPMC * 3)
     {
         ca.ShiftRGB = 3;
     }
     else if (ca.Rpm > ca.MaxRPMC * 4)
     {
         ca.ShiftRGB = 4;
     }
     else if (ca.Rpm > ca.MaxRPMC * 5)
     {
         ca.ShiftRGB = 5;
     }
     else if (ca.Rpm > ca.MaxRPMC * 6)
     {
         ca.ShiftRGB = 6;
     }
     else if (ca.Rpm > ca.MaxRPMC * 7)
     {
         ca.ShiftRGB = 7;
     }
     else if (ca.Rpm > ca.MaxRPMC * 8)
     {
         ca.ShiftRGB = 8;
     }
     // Console.WriteLine(e.Physics.Gear);
 }
예제 #7
0
        private void OnACPhysics(object sender, PhysicsEventArgs e)
        {
            RaceState.ReadFromMemory();

            if (RaceState.Instance.CarVelocities == null || RaceState.Instance.CarVelocities.Count == 0)
            {
                return;
            }

            if (RaceState.Instance.CarPositions == null || RaceState.Instance.CarPositions.Count == 0)
            {
                return;
            }

            var frontX = (float)((e.Physics.TyreContactPoint[0].X + e.Physics.TyreContactPoint[1].X) / 2.0);
            var frontY = (float)((e.Physics.TyreContactPoint[0].Y + e.Physics.TyreContactPoint[1].Y) / 2.0);
            var frontZ = (float)((e.Physics.TyreContactPoint[0].Z + e.Physics.TyreContactPoint[1].Z) / 2.0);

            var rearX = (float)((e.Physics.TyreContactPoint[2].X + e.Physics.TyreContactPoint[3].X) / 2.0);
            var rearY = (float)((e.Physics.TyreContactPoint[2].Y + e.Physics.TyreContactPoint[3].Y) / 2.0);
            var rearZ = (float)((e.Physics.TyreContactPoint[2].Z + e.Physics.TyreContactPoint[3].Z) / 2.0);


            frontCoordinates = new Vector3(frontX, frontY, frontZ);
            rearCoordinates  = new Vector3(rearX, rearY, rearZ);
            if (!isSpeedInit)
            {
                Console.WriteLine("Resetting speed.");
                AntManagerState.Instance.BikeSpeedKmh = e.Physics.SpeedKmh;
                isSpeedInit = true;
            }

            AntManagerState.Instance.AirDensity          = e.Physics.AirDensity;
            AntManagerState.Instance.DraftingCoefficient = (float)draftingPhysics.DraftingCoefficient(RaceState.Instance);

            // Console.WriteLine("Drafting : {0}", AntManagerState.Instance.DraftingCoefficient);

            if (useAssistLine)
            {
                if (RaceState.Instance.CarPositions.Count == 0 || RaceState.Instance.NormalizedCarPositions.Count == 0)
                {
                    Console.WriteLine("No car positions..");
                    return;
                }
                var orientation = frontCoordinates - rearCoordinates;
                orientation = Vector3.Normalize(orientation);
                assistLineFollower.CarOrientation        = orientation;
                assistLineFollower.CarPosition           = RaceState.Instance.CarPositions[0];
                assistLineFollower.CarVelocity           = RaceState.Instance.CarVelocities[0];
                assistLineFollower.NormalizedCarPosition = RaceState.Instance.NormalizedCarPositions[0];
                assistLineFollower.Update(RaceState.Instance);
                if (AntManagerState.Instance.BikeSpeedKmh > assistLineFollower.SpeedLimit)
                {
                    AntManagerState.Instance.BikeSpeedKmh = assistLineFollower.SpeedLimit;
                }
                joyControl.Direction(10 * assistLineFollower.Direction); // Should be ratio between steering value and angle
            }
            else
            {
                joyControl.Direction(0);
            }
            var acSpeed = e.Physics.SpeedKmh;

            var targetSpeed = AntManagerState.Instance.BikeSpeedKmh;

            var throttle = 10 * (targetSpeed - acSpeed) / (10 + targetSpeed);

            joyControl.Throttle(Math.Max(0, throttle));
        }
예제 #8
0
        private void AcOnPhysicsUpdated(object sender, PhysicsEventArgs e)
        {
            var dataModel = (AssettoCorsaDataModel)DataModel;

            dataModel.Physics.Abs                 = e.Physics.Abs;
            dataModel.Physics.Gas                 = e.Physics.Gas;
            dataModel.Physics.Brake               = e.Physics.Brake;
            dataModel.Physics.Fuel                = e.Physics.Fuel;
            dataModel.Physics.Gear                = e.Physics.Gear;
            dataModel.Physics.Rpms                = e.Physics.Rpms;
            dataModel.Physics.SteerAngle          = e.Physics.SteerAngle;
            dataModel.Physics.SpeedKmh            = e.Physics.SpeedKmh;
            dataModel.Physics.Velocity            = e.Physics.Velocity;
            dataModel.Physics.AccG                = e.Physics.AccG;
            dataModel.Physics.WheelSlip           = e.Physics.WheelSlip;
            dataModel.Physics.WheelLoad           = e.Physics.WheelLoad;
            dataModel.Physics.WheelsPressure      = e.Physics.WheelsPressure;
            dataModel.Physics.WheelAngularSpeed   = e.Physics.WheelAngularSpeed;
            dataModel.Physics.TyreWear            = e.Physics.TyreWear;
            dataModel.Physics.TyreDirtyLevel      = e.Physics.TyreDirtyLevel;
            dataModel.Physics.TyreCoreTemperature = e.Physics.TyreCoreTemperature;
            dataModel.Physics.CamberRad           = e.Physics.CamberRad;
            dataModel.Physics.SuspensionTravel    = e.Physics.SuspensionTravel;
            dataModel.Physics.Drs                 = e.Physics.Drs;
            dataModel.Physics.TC                   = e.Physics.TC;
            dataModel.Physics.Heading              = e.Physics.Heading;
            dataModel.Physics.Pitch                = e.Physics.Pitch;
            dataModel.Physics.Roll                 = e.Physics.Roll;
            dataModel.Physics.CgHeight             = e.Physics.CgHeight;
            dataModel.Physics.CarDamage            = e.Physics.CarDamage;
            dataModel.Physics.NumberOfTyresOut     = e.Physics.NumberOfTyresOut;
            dataModel.Physics.PitLimiterOn         = e.Physics.PitLimiterOn;
            dataModel.Physics.KersCharge           = e.Physics.KersCharge;
            dataModel.Physics.KersInput            = e.Physics.KersInput;
            dataModel.Physics.AutoShifterOn        = e.Physics.AutoShifterOn;
            dataModel.Physics.RideHeight           = e.Physics.RideHeight;
            dataModel.Physics.TurboBoost           = e.Physics.TurboBoost;
            dataModel.Physics.Ballast              = e.Physics.Ballast;
            dataModel.Physics.AirDensity           = e.Physics.AirDensity;
            dataModel.Physics.AirTemp              = e.Physics.AirTemp;
            dataModel.Physics.RoadTemp             = e.Physics.RoadTemp;
            dataModel.Physics.LocalAngularVelocity = e.Physics.LocalAngularVelocity;
            dataModel.Physics.FinalFF              = e.Physics.FinalFF;
            dataModel.Physics.PerformanceMeter     = e.Physics.PerformanceMeter;
            dataModel.Physics.EngineBrake          = e.Physics.EngineBrake;
            dataModel.Physics.ErsRecoveryLevel     = e.Physics.ErsRecoveryLevel;
            dataModel.Physics.ErsPowerLevel        = e.Physics.ErsPowerLevel;
            dataModel.Physics.ErsHeatCharging      = e.Physics.ErsHeatCharging;
            dataModel.Physics.ErsisCharging        = e.Physics.ErsisCharging;
            dataModel.Physics.KersCurrentKJ        = e.Physics.KersCurrentKJ;
            dataModel.Physics.DrsAvailable         = e.Physics.DrsAvailable;
            dataModel.Physics.DrsEnabled           = e.Physics.DrsEnabled;
            dataModel.Physics.BrakeTemp            = e.Physics.BrakeTemp;
            dataModel.Physics.Clutch               = e.Physics.Clutch;
            dataModel.Physics.TyreTempI            = e.Physics.TyreTempI;
            dataModel.Physics.TyreTempM            = e.Physics.TyreTempM;
            dataModel.Physics.TyreTempO            = e.Physics.TyreTempO;
            dataModel.Physics.IsAIControlled       = e.Physics.IsAIControlled;
            dataModel.Physics.TyreContactPoint     = e.Physics.TyreContactPoint;
            dataModel.Physics.TyreContactNormal    = e.Physics.TyreContactNormal;
            dataModel.Physics.TyreContactHeading   = e.Physics.TyreContactHeading;
            dataModel.Physics.BrakeBias            = e.Physics.BrakeBias;
        }
예제 #9
0
 private void PAc_PhysicsUpdated(object sender, PhysicsEventArgs e)
 {
     pCarStatus.FillPhysic(e.Physics);
 }
예제 #10
0
 private static void PhysicsUpdated(object sender, PhysicsEventArgs e)
 {
     WriteToSerial("Fuel: {0}", e.Physics.Fuel.ToString(CultureInfo.InvariantCulture));
     WriteToSerial("RPM:  {0}", e.Physics.Rpms);
     WriteToSerial("Tyre wear: {0}", string.Join(", ", e.Physics.TyreWear.Select(x => x.ToString(CultureInfo.InvariantCulture))));
 }
예제 #11
0
 protected void PhysicsUpdated(object sender, PhysicsEventArgs e)
 {
     currentRpm = e.Physics.Rpms;
     ph         = e.Physics;
 }
예제 #12
0
 private void AC_PhysicsUpdated(object sender, PhysicsEventArgs e)
 {
     this._physics = e.Physics;
     // Console.WriteLine("StaticInfo\r\n");
 }