Beispiel #1
0
        public Form1()
        {
            InitializeComponent();
            int    a = (40 + (104 * trackBar1.Value));
            string b = a.ToString() + Deg;

            textBox1.Text = b;
            int    c = 10 * trackBar2.Value;
            string d = c.ToString() + perc;

            textBox2.Text         = d;
            _serialPort.RtsEnable = true;
            string[] ports = SerialPort.GetPortNames();


            // _serialPort.PortName = ports[1];
            //_serialPort.BaudRate = Convert.ToInt32(9600 );
            // _serialPort.Parity = Parity.None;
            // _serialPort.DataBits = Convert.ToInt32( 8);
            // _serialPort.StopBits = StopBits.One;
            _serialPort.Handshake = Handshake.None;

            // Set the read/write timeouts
            _serialPort.ReadTimeout  = 4000;
            _serialPort.WriteTimeout = 5000;
            lapData       = new PacketLapData(0);
            motionData    = new PacketMotionData(0);
            sessionData   = new PacketSessionData(0);
            telemetryData = new PacketCarTelemetryData(0);
        }
        }                                                                // From telemetry data packets stored in lastRPMs

        public F12019NewTelemetryData(PacketMotionData data)
        {
            this.posX               = data.m_carMotionData[0].m_worldPositionX;
            this.posY               = data.m_carMotionData[0].m_worldPositionY;
            this.posZ               = data.m_carMotionData[0].m_worldPositionZ;
            this.worldVelocityX     = data.m_carMotionData[0].m_worldVelocityX;
            this.worldVelocityY     = data.m_carMotionData[0].m_worldVelocityY;
            this.worldVelocityZ     = data.m_carMotionData[0].m_worldVelocityZ;
            this.localVelocityX     = data.m_localVelocityX;
            this.localVelocityY     = data.m_localVelocityY;
            this.localVelocityZ     = data.m_localVelocityZ;
            this.gForceLateral      = data.m_carMotionData[0].m_gForceLateral;
            this.gForceLongitudinal = data.m_carMotionData[0].m_gForceLongitudinal;
            this.gForceVertical     = data.m_carMotionData[0].m_gForceVertical;
            this.yaw                  = data.m_carMotionData[0].m_yaw;
            this.pitch                = data.m_carMotionData[0].m_pitch;
            this.roll                 = data.m_carMotionData[0].m_roll;
            this.wheelSlipRL          = data.m_wheelSlip[0];
            this.wheelSlipRR          = data.m_wheelSlip[1];
            this.wheelSlipFL          = data.m_wheelSlip[2];
            this.wheelSlipFR          = data.m_wheelSlip[3];
            this.suspAccelRL          = data.m_suspensionAcceleration[0];
            this.suspAccelRR          = data.m_suspensionAcceleration[1];
            this.suspAccelFL          = data.m_suspensionAcceleration[2];
            this.suspAccelFR          = data.m_suspensionAcceleration[3];
            this.angularVelocityX     = data.m_angularVelocityX;
            this.angularVelocityY     = data.m_angularVelocityY;
            this.angularVelocityZ     = data.m_angularVelocityZ;
            this.angularAccelerationX = data.m_angularAccelerationX;
            this.angularAccelerationY = data.m_angularAccelerationY;
            this.angularAccelerationZ = data.m_angularAccelerationZ;
            this.frontWheelsAngle     = data.m_frontWheelsAngle;
            this.RPMs                 = F12019NewTelemetryProvider.lastRPMs;
        }
        private void HandlePacket(PacketHeader packet, byte[] bytes)
        {
            _telemetryRecorder.RecordPacket(packet, bytes);

            switch (packet.PacketType)
            {
            case PacketType.Motion:
                var motionPacket = StructUtility.ConvertToPacket <PacketMotionData>(bytes);
                OnMotionPacketReceived(new PacketReceivedEventArgs <PacketMotionData>(_oldMotionData, motionPacket));
                _oldMotionData = motionPacket;
                break;

            case PacketType.Session:
                var sessionPacket = StructUtility.ConvertToPacket <PacketSessionData>(bytes);
                OnSessionPacketReceived(new PacketReceivedEventArgs <PacketSessionData>(_oldSessionData, sessionPacket));
                _oldSessionData = sessionPacket;
                break;

            case PacketType.LapData:
                var lapPacket = StructUtility.ConvertToPacket <PacketLapData>(bytes);
                OnLapPacketReceivedReceived(new PacketReceivedEventArgs <PacketLapData>(_oldLapData, lapPacket));
                _oldLapData = lapPacket;
                break;

            case PacketType.Event:
                var eventPacket = StructUtility.ConvertToPacket <EventPacket>(bytes);
                OnEventPacketReceived(new PacketReceivedEventArgs <EventPacket>(_oldEventPacket, eventPacket));
                _oldEventPacket = eventPacket;
                break;

            case PacketType.Participants:
                var participantPacket = StructUtility.ConvertToPacket <PacketParticipantsData>(bytes);
                OnParticipantsPacketReceived(new PacketReceivedEventArgs <PacketParticipantsData>(_oldParticipantsData, participantPacket));
                _oldParticipantsData = participantPacket;
                break;

            case PacketType.CarSetups:
                var carSetupsPacket = StructUtility.ConvertToPacket <PacketCarSetupData>(bytes);
                OnCarSetupPacketReceived(new PacketReceivedEventArgs <PacketCarSetupData>(_oldCarSetupData, carSetupsPacket));
                _oldCarSetupData = carSetupsPacket;
                break;

            case PacketType.CarTelemetry:
                var carTelemetryPacket = StructUtility.ConvertToPacket <PacketCarTelemetryData>(bytes);
                OnCarTelemetryPacketReceived(new PacketReceivedEventArgs <PacketCarTelemetryData>(_oldCarTelemetryData, carTelemetryPacket));
                _oldCarTelemetryData = carTelemetryPacket;
                break;

            case PacketType.CarStatus:
                var carStatusPacket = StructUtility.ConvertToPacket <PacketCarStatusData>(bytes);
                OnCarStatusPacketReceived(new PacketReceivedEventArgs <PacketCarStatusData>(_oldCarStatusData, carStatusPacket));
                _oldCarStatusData = carStatusPacket;
                break;
            }

            _oldSessionId       = packet.SessionUId;
            _oldFrameIdentifier = packet.FrameIdentifier;
        }
Beispiel #4
0
        public void Parse(byte[] buffer)
        {
            F1BytesAccessor bytesAccessor = new F1BytesAccessor(buffer, true);

            PacketMotionData packetMotion = new PacketMotionData();

            //packetMotion.


            packetReceived?.Invoke(this, new F1PacketEventEventArgs(packetMotionData: packetMotion));
        }
Beispiel #5
0
        public F1PacketEventEventArgs(PacketHeader packetHeader           = null,
                                      CarMotionData carMotionData         = null,
                                      PacketSessionData packetSessionData = null,
                                      PacketMotionData packetMotionData   = null)
        {
            this.packetHeader     = packetHeader;
            this.carMotionData    = carMotionData;
            this.packetMotionData = packetMotionData;

            this.packetSessionData = packetSessionData;
        }
        public void OnDebugDataSelected(object sender, SelectionChangedEventArgs e)
        {
            if (e.AddedItems.Count == 0)
            {
                return;
            }

            var selectedDebugData = ((DebugModel)e.AddedItems[0]);

            switch (selectedDebugData.PacketType)
            {
            case PacketType.Motion:
                PacketMotionData motionData = StructUtility.ConvertToPacket <PacketMotionData>(selectedDebugData.Data);
                DebugDetails = new ObjectViewModelHierarchy(motionData);
                return;

            case PacketType.Session:
                PacketSessionData sessionData = StructUtility.ConvertToPacket <PacketSessionData>(selectedDebugData.Data);
                DebugDetails = new ObjectViewModelHierarchy(sessionData);
                return;

            case PacketType.LapData:
                PacketLapData lapData = StructUtility.ConvertToPacket <PacketLapData>(selectedDebugData.Data);
                DebugDetails = new ObjectViewModelHierarchy(lapData);
                return;

            case PacketType.Event:
                EventPacket eventData = StructUtility.ConvertToPacket <EventPacket>(selectedDebugData.Data);
                DebugDetails = new ObjectViewModelHierarchy(eventData);
                return;

            case PacketType.Participants:
                PacketParticipantsData participantsData = StructUtility.ConvertToPacket <PacketParticipantsData>(selectedDebugData.Data);
                DebugDetails = new ObjectViewModelHierarchy(participantsData);
                return;

            case PacketType.CarSetups:
                PacketCarSetupData carSetupsData = StructUtility.ConvertToPacket <PacketCarSetupData>(selectedDebugData.Data);
                DebugDetails = new ObjectViewModelHierarchy(carSetupsData);
                return;

            case PacketType.CarTelemetry:
                PacketCarTelemetryData carTelemetryData = StructUtility.ConvertToPacket <PacketCarTelemetryData>(selectedDebugData.Data);
                DebugDetails = new ObjectViewModelHierarchy(carTelemetryData);
                return;

            case PacketType.CarStatus:
                PacketCarStatusData carStatusData = StructUtility.ConvertToPacket <PacketCarStatusData>(selectedDebugData.Data);
                DebugDetails = new ObjectViewModelHierarchy(carStatusData);
                return;
            }
        }
Beispiel #7
0
        public async Task ReceiveLoop(CancellationToken cancellationToken)
        {
            while (!cancellationToken.IsCancellationRequested)
            {
                UdpReceiveResult receiveResult = await _udpReceiver.Receive(cancellationToken).ConfigureAwait(false);

                byte[]       rawPacked = receiveResult.Buffer;
                PacketHeader header    = DeserializePackedHeader(rawPacked);
                switch (header.MPacketId)
                {
                case 0:
                    PacketMotionData packetMotionData = Deserialize <PacketMotionData>(rawPacked);
                    _dataSetCompositor.ProcessPacket(packetMotionData);
                    break;

                case 1:
                    PacketSessionData packetSessionData = Deserialize <PacketSessionData>(rawPacked);
                    _dataSetCompositor.ProcessPacket(packetSessionData);
                    break;

                case 2:
                    PacketLapData packetLapData = Deserialize <PacketLapData>(rawPacked);
                    _dataSetCompositor.ProcessPacket(packetLapData);
                    break;

                case 3:
                    PacketEventData packetEventData = Deserialize <PacketEventData>(rawPacked);
                    _dataSetCompositor.ProcessPacket(packetEventData);
                    break;

                case 4:
                    PacketParticipantsData packetParticipantsData = Deserialize <PacketParticipantsData>(rawPacked);
                    _dataSetCompositor.ProcessPacket(packetParticipantsData);
                    break;

                case 5:
                    PacketCarSetupData packetCarSetupData = Deserialize <PacketCarSetupData>(rawPacked);
                    _dataSetCompositor.ProcessPacket(packetCarSetupData);
                    break;

                case 6:
                    PacketCarTelemetryData packetCarTelemetryData = Deserialize <PacketCarTelemetryData>(rawPacked);
                    _dataSetCompositor.ProcessPacket(packetCarTelemetryData);
                    break;

                case 7:
                    PacketCarStatusData packetCarStatusData = Deserialize <PacketCarStatusData>(rawPacked);
                    _dataSetCompositor.ProcessPacket(packetCarStatusData);
                    break;
                }
            }
        }
        private static void AddTyresInfo(ref CarTelemetryData rawTelemetryData, ref CarStatusData rawCarStatusData, ref PacketMotionData rawMotionData, SimulatorDataSet simData)
        {
            simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.TyrePressure.ActualQuantity  = Pressure.FromPsi(rawTelemetryData.MTyresPressure[TyreIndices.FrontLeft]);
            simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.TyrePressure.ActualQuantity = Pressure.FromPsi(rawTelemetryData.MTyresPressure[TyreIndices.FrontRight]);
            simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.TyrePressure.ActualQuantity   = Pressure.FromPsi(rawTelemetryData.MTyresPressure[TyreIndices.RearLeft]);
            simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.TyrePressure.ActualQuantity  = Pressure.FromPsi(rawTelemetryData.MTyresPressure[TyreIndices.RearRight]);

            simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.TyreWear.ActualWear  = rawCarStatusData.MTyresWear[TyreIndices.FrontLeft] / 100.0;
            simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.TyreWear.ActualWear = rawCarStatusData.MTyresWear[TyreIndices.FrontRight] / 100.0;
            simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.TyreWear.ActualWear   = rawCarStatusData.MTyresWear[TyreIndices.RearLeft] / 100.0;
            simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.TyreWear.ActualWear  = rawCarStatusData.MTyresWear[TyreIndices.RearRight] / 100.0;

            simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.Rps  = rawMotionData.MWheelSpeed[TyreIndices.FrontLeft];
            simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.Rps = rawMotionData.MWheelSpeed[TyreIndices.FrontRight];
            simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.Rps   = rawMotionData.MWheelSpeed[TyreIndices.RearLeft];
            simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.Rps  = rawMotionData.MWheelSpeed[TyreIndices.RearRight];

            simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.SuspensionTravel  = Distance.FromCentimeters(rawMotionData.MSuspensionPosition[TyreIndices.FrontLeft]);
            simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.SuspensionTravel = Distance.FromCentimeters(rawMotionData.MSuspensionPosition[TyreIndices.FrontRight]);
            simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.SuspensionTravel   = Distance.FromCentimeters(rawMotionData.MSuspensionPosition[TyreIndices.RearLeft]);
            simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.SuspensionTravel  = Distance.FromCentimeters(rawMotionData.MSuspensionPosition[TyreIndices.RearRight]);

            /*simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.SuspensionVelocity = Velocity.FromMs(rawMotionData.MSuspensionVelocity[TyreIndices.FrontLeft]);
            *  simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.SuspensionVelocity = Velocity.FromMs(rawMotionData.MSuspensionVelocity[TyreIndices.FrontRight]);
            *  simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.SuspensionVelocity = Velocity.FromMs(rawMotionData.MSuspensionVelocity[TyreIndices.RearLeft]);
            *  simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.SuspensionVelocity = Velocity.FromMs(rawMotionData.MSuspensionVelocity[TyreIndices.RearRight]);*/

            // Front Left Tyre Temps
            simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.CenterTyreTemp.IdealQuantity       = Temperature.FromCelsius(85);
            simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.CenterTyreTemp.IdealQuantityWindow = Temperature.FromCelsius(20);
            simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.LeftTyreTemp.ActualQuantity        = Temperature.FromCelsius(rawTelemetryData.MTyresSurfaceTemperature[TyreIndices.FrontLeft]);
            simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.RightTyreTemp.ActualQuantity       = Temperature.FromCelsius(rawTelemetryData.MTyresSurfaceTemperature[TyreIndices.FrontLeft]);
            simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.CenterTyreTemp.ActualQuantity      = Temperature.FromCelsius(rawTelemetryData.MTyresSurfaceTemperature[TyreIndices.FrontLeft]);
            simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.TyreCoreTemperature.ActualQuantity = Temperature.FromCelsius(rawTelemetryData.MTyresInnerTemperature[TyreIndices.FrontLeft]);


            // Front Right Tyre Temps
            simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.CenterTyreTemp.IdealQuantity       = Temperature.FromCelsius(85);
            simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.CenterTyreTemp.IdealQuantityWindow = Temperature.FromCelsius(20);
            simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.LeftTyreTemp.ActualQuantity        = Temperature.FromCelsius(rawTelemetryData.MTyresSurfaceTemperature[TyreIndices.FrontRight]);
            simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.RightTyreTemp.ActualQuantity       = Temperature.FromCelsius(rawTelemetryData.MTyresSurfaceTemperature[TyreIndices.FrontRight]);
            simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.CenterTyreTemp.ActualQuantity      = Temperature.FromCelsius(rawTelemetryData.MTyresSurfaceTemperature[TyreIndices.FrontRight]);
            simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.TyreCoreTemperature.ActualQuantity = Temperature.FromCelsius(rawTelemetryData.MTyresInnerTemperature[TyreIndices.FrontRight]);


            // Rear Left Tyre Temps
            simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.CenterTyreTemp.IdealQuantity       = Temperature.FromCelsius(85);
            simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.CenterTyreTemp.IdealQuantityWindow = Temperature.FromCelsius(20);
            simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.LeftTyreTemp.ActualQuantity        = Temperature.FromCelsius(rawTelemetryData.MTyresSurfaceTemperature[TyreIndices.RearLeft]);
            simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.RightTyreTemp.ActualQuantity       = Temperature.FromCelsius(rawTelemetryData.MTyresSurfaceTemperature[TyreIndices.RearLeft]);
            simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.CenterTyreTemp.ActualQuantity      = Temperature.FromCelsius(rawTelemetryData.MTyresSurfaceTemperature[TyreIndices.RearLeft]);
            simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.TyreCoreTemperature.ActualQuantity = Temperature.FromCelsius(rawTelemetryData.MTyresInnerTemperature[TyreIndices.RearLeft]);

            // Rear Right Tyre Temps
            simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.CenterTyreTemp.IdealQuantity       = Temperature.FromCelsius(85);
            simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.CenterTyreTemp.IdealQuantityWindow = Temperature.FromCelsius(20);
            simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.LeftTyreTemp.ActualQuantity        = Temperature.FromCelsius(rawTelemetryData.MTyresSurfaceTemperature[TyreIndices.RearRight]);
            simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.RightTyreTemp.ActualQuantity       = Temperature.FromCelsius(rawTelemetryData.MTyresSurfaceTemperature[TyreIndices.RearRight]);
            simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.CenterTyreTemp.ActualQuantity      = Temperature.FromCelsius(rawTelemetryData.MTyresSurfaceTemperature[TyreIndices.RearRight]);
            simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.TyreCoreTemperature.ActualQuantity = Temperature.FromCelsius(rawTelemetryData.MTyresInnerTemperature[TyreIndices.RearRight]);

            // Fuel System
            simData.PlayerInfo.CarInfo.FuelSystemInfo.FuelCapacity  = Volume.FromLiters(rawCarStatusData.MFuelCapacity);
            simData.PlayerInfo.CarInfo.FuelSystemInfo.FuelRemaining = Volume.FromLiters(rawCarStatusData.MFuelInTank);
        }
Beispiel #9
0
        private static IPacket Motion(PacketHeader packetHeader, BinaryReader reader)
        {
            var packetCarMotionData = new PacketMotionData(packetHeader);

            for (int i = 0; i < MaxNumberOfCarsOnTrack; i++)
            {
                var carMotionData = new CarMotionData();

                carMotionData.WorldPositionX = reader.ReadSingle();
                carMotionData.WorldPositionY = reader.ReadSingle();
                carMotionData.WorldPositionZ = reader.ReadSingle();

                carMotionData.WorldVelocityX = reader.ReadSingle();
                carMotionData.WorldVelocityY = reader.ReadSingle();
                carMotionData.WorldVelocityZ = reader.ReadSingle();

                carMotionData.WorldForwardDirX = reader.ReadInt16();
                carMotionData.WorldForwardDirY = reader.ReadInt16();
                carMotionData.WorldForwardDirZ = reader.ReadInt16();

                carMotionData.WorldRightDirX = reader.ReadInt16();
                carMotionData.WorldRightDirY = reader.ReadInt16();
                carMotionData.WorldRightDirZ = reader.ReadInt16();

                carMotionData.GForceLateral      = reader.ReadSingle();
                carMotionData.GForceLongitudinal = reader.ReadSingle();
                carMotionData.GForceVertical     = reader.ReadSingle();

                carMotionData.Yaw   = reader.ReadSingle();
                carMotionData.Pitch = reader.ReadSingle();
                carMotionData.Roll  = reader.ReadSingle();

                packetCarMotionData.CarMotionData[i] = carMotionData;
            }

            // Extra player data
            for (int j = 0; j < NumberOfTyres; j++)
            {
                packetCarMotionData.SuspensionPosition[j] = reader.ReadSingle();
            }

            for (int j = 0; j < NumberOfTyres; j++)
            {
                packetCarMotionData.SuspensionVelocity[j] = reader.ReadSingle();
            }

            for (int j = 0; j < NumberOfTyres; j++)
            {
                packetCarMotionData.SuspensionAcceleration[j] = reader.ReadSingle();
            }

            for (int j = 0; j < NumberOfTyres; j++)
            {
                packetCarMotionData.WheelSpeed[j] = reader.ReadSingle();
            }

            for (int j = 0; j < NumberOfTyres; j++)
            {
                packetCarMotionData.WheelSlip[j] = reader.ReadSingle();
            }

            packetCarMotionData.LocalVelocityX = reader.ReadSingle();
            packetCarMotionData.LocalVelocityY = reader.ReadSingle();
            packetCarMotionData.LocalVelocityZ = reader.ReadSingle();

            packetCarMotionData.AngularVelocityX = reader.ReadSingle();
            packetCarMotionData.AngularVelocityY = reader.ReadSingle();
            packetCarMotionData.AngularVelocityZ = reader.ReadSingle();

            packetCarMotionData.AngularAccelerationX = reader.ReadSingle();
            packetCarMotionData.AngularAccelerationY = reader.ReadSingle();
            packetCarMotionData.AngularAccelerationZ = reader.ReadSingle();

            packetCarMotionData.FrontWheelsAngle = reader.ReadSingle();

            return(packetCarMotionData);
        }
 public void OnPacketMotionData(ref PacketMotionData pMotion, PacketSource packetSource)
 {
     WritePacket(pMotion.Header.SessionUID, ref pMotion, packetSource);
 }
 public void OnPacketMotionData(ref PacketMotionData pMotion, PacketSource packetSource)
 {
     HandlePacket(ph => ph.OnPacketMotionData, ref pMotion, packetSource);
 }
Beispiel #12
0
        /* Runs when triggered by an F118Reader object */
        private void OnPacketReceived(object sender, F118ReceivedEventArgs args)
        {
            PacketID id       = args.id;
            int      carIndex = 0;

            switch (id)
            {
            case PacketID.MOTION:

                PacketMotionData motion = (PacketMotionData)args.packet;
                carIndex = motion.m_header.m_playerCarIndex;

                PositionEventArgs newPos = new PositionEventArgs();

                newPos.x = motion.m_carMotionData[carIndex].m_worldPositionX;
                newPos.y = motion.m_carMotionData[carIndex].m_worldPositionY;
                newPos.z = motion.m_carMotionData[carIndex].m_worldPositionZ;

                GForceEventArgs newGs = new GForceEventArgs();

                newGs.lat = motion.m_carMotionData[carIndex].m_gForceLateral;
                newGs.lon = motion.m_carMotionData[carIndex].m_gForceLongitudinal;

                RaisePositionReceived(newPos);
                RaiseGForceReceived(newGs);

                break;

            case PacketID.TELEMETRY:

                PacketCarTelemetryData telemetry = (PacketCarTelemetryData)args.packet;
                carIndex = telemetry.m_header.m_playerCarIndex;

                PowertrainEventArgs newPow = new PowertrainEventArgs();

                sbyte gearByte = telemetry.m_carTelemetryData[carIndex].m_gear;
                if (gearByte == -1)
                {
                    newPow.gear = 'R';
                }
                else if (gearByte == 0)
                {
                    newPow.gear = 'N';
                }
                else
                {
                    newPow.gear = (char)('0' + gearByte);
                }

                newPow.rpm = telemetry.m_carTelemetryData[carIndex].m_engineRPM;
                newPow.kmh = telemetry.m_carTelemetryData[carIndex].m_speed;
                newPow.mph = telemetry.m_carTelemetryData[carIndex].m_speed * 0.621371f;

                AxesEventArgs newAxes = new AxesEventArgs();

                newAxes.throttle = telemetry.m_carTelemetryData[carIndex].m_throttle / 100.0f;
                newAxes.brake    = telemetry.m_carTelemetryData[carIndex].m_brake / 100.0f;
                newAxes.clutch   = telemetry.m_carTelemetryData[carIndex].m_clutch / 100.0f;
                newAxes.steering = telemetry.m_carTelemetryData[carIndex].m_steer / 100.0f;

                RaisePowertrainReceived(newPow);
                RaiseAxesReceived(newAxes);

                break;

            case PacketID.STATUS:

                PacketCarStatusData status = (PacketCarStatusData)args.packet;
                dataMtx.WaitOne();
                maxRpm = status.m_carStatusData[carIndex].m_maxRPM;
                dataMtx.ReleaseMutex();

                break;

            default:

                return;
            }
        }
Beispiel #13
0
 public void ProcessPacket(PacketMotionData packetMotionData)
 {
     AllPacketsComposition.PacketMotionData = packetMotionData;
     _isPacketMotionDataFilled = true;
 }
 public void OnPacketMotionData(ref PacketMotionData pMotion, PacketSource packetSource)
 {
 }
Beispiel #15
0
 public void OnPacketMotionData(ref PacketMotionData pMotion, PacketSource packetSource)
 {
     Delay(pMotion.Header.SessionUID, pMotion.Header.SessionTime, packetSource);
 }