public void SendAsText(TriggeredEventFrame frame) { foreach (var connection in connections) { if (connection != null && connection.events) { byte[] data; data = Encoding.ASCII.GetBytes(frame.ToCSV()); SendTCP(data, connection.client); } } }
void Update() { float yaw = (transform.localRotation.eulerAngles.y - lastYaw) / Time.deltaTime; float roll = (transform.localRotation.eulerAngles.z - lastRoll) / Time.deltaTime; lastRoll = transform.localRotation.eulerAngles.z; lastYaw = transform.localRotation.eulerAngles.y; if (Time.time - lastSend < sendRate) { return; } float time = Time.time; //GearPosActual int gear = vehicleController.IsShifting ? -3 : vehicleController.Gear; //AcceleratorPedalPos int pedalPos = Mathf.RoundToInt(Mathf.Clamp01(vehicleController.accellInput) * 100); //DeceleratorPedalPos int brakePos = Mathf.RoundToInt(Mathf.Clamp(-1, 0, vehicleController.accellInput) * 100); //SteeringWheelAngle int wheelAngle = Mathf.RoundToInt(vehicleController.steerInput * 720); //VehicleSpeed float kmh = rb.velocity.magnitude * 3.6f; //TODO: calculate this from wheel rpm FullDataFrame frame = new FullDataFrame() { time = time, cruiseSpeed = 0f, rpm = vehicleController.RPM, gearPosActual = gear, gearPosTarget = vehicleController.Gear, accelleratorPos = pedalPos, deceleratorPos = brakePos, rollRate = roll, steeringWheelAngle = wheelAngle, vehicleSpeed = kmh, vehicleSpeedOverGround = kmh, wheelSpeedFL = vehicleController.WheelFL.rpm * 60, wheelSpeedFR = vehicleController.WheelFR.rpm * 60, wheelSpeedRL = vehicleController.WheelRL.rpm * 60, wheelSpeedRR = vehicleController.WheelRR.rpm * 60, yawRate = yaw, triggeredEvent1TimeStamp = 0f }; if (triggerTimeStamp1 > 0f || triggerTimeStamp2 > 0f || triggerTimeStamp3 > 0f) { TriggeredEventFrame eventFrame = new TriggeredEventFrame() { triggeredEvent1TimeStamp = triggerTimeStamp1, triggeredEvent2TimeStamp = triggerTimeStamp2, triggeredEvent3TimeStamp = triggerTimeStamp3 }; dataStream.SendAsText(eventFrame); } //add triggered events if required if (triggerTimeStamp1 > 0f) { frame.triggeredEvent1TimeStamp = triggerTimeStamp1; triggerTimeStamp1 = 0f; } if (triggerTimeStamp2 > 0f) { frame.triggeredEvent2TimeStamp = triggerTimeStamp2; triggerTimeStamp2 = 0f; } if (triggerTimeStamp3 > 0f) { frame.triggeredEvent3TimeStamp = triggerTimeStamp3; triggerTimeStamp3 = 0f; } dataStream.SendAsText(frame); }