public override void SetupChannels()
        {
            //Total Power
            m_powerTotal       = dataLogger.NewChannel("Power Total");
            m_powerTotal.color = GColor.blue;
            m_powerTotal.SetOriginAndSpan(7.0f, 1.0f, 500f);
            m_powerTotal.valueFormat      = "0.0 kW";
            m_powerTotal.captionPositionY = 1;

            // Front Power
            m_powerFront       = dataLogger.NewChannel("Power Front");
            m_powerFront.color = GColor.red;
            m_powerFront.SetOriginAndSpan(7.0f, 1.0f, 500f);
            m_powerFront.valueFormat      = "0.0 kW";
            m_powerFront.captionPositionY = 0;

            // Rear Power
            m_powerRear       = dataLogger.NewChannel("Power Rear");
            m_powerRear.color = GColor.green;
            m_powerRear.SetOriginAndSpan(7.0f, 1.0f, 500f);
            m_powerRear.valueFormat      = "0.0 kW";
            m_powerRear.captionPositionY = -1;

            m_batCapacity       = dataLogger.NewChannel("Battery Capacity");
            m_batCapacity.color = GColor.yellow;
            m_batCapacity.SetOriginAndSpan(1.0f, 1.0f, 25f);
            m_batCapacity.valueFormat      = "0.0 kWh";
            m_batCapacity.captionPositionY = 1;

            m_stateOfCharge       = dataLogger.NewChannel("State of Charge");
            m_stateOfCharge.color = GColor.orange;
            m_stateOfCharge.SetOriginAndSpan(1.0f, 1.0f, 25f);
            m_stateOfCharge.valueFormat      = "0.0";
            m_stateOfCharge.captionPositionY = 0;
        }
        public override void SetupChannels()
        {
            m_damperFactor       = dataLogger.NewChannel("Damper");
            m_damperFactor.color = GColor.Alpha(GColor.orange, 1.0f);
            m_damperFactor.SetOriginAndSpan(0.0f, 5.0f);
            m_damperFactor.valueFormat = "0.0 %";

            m_forceFactor       = dataLogger.NewChannel("Force");
            m_forceFactor.color = GColor.Alpha(GColor.accentBlue, 1.0f);
            m_forceFactor.SetOriginAndSpan(5.0f, 5.0f);
            m_forceFactor.valueFormat = "0.0 %";
        }
        public override void SetupChannels()
        {
            // Total Distance
            m_totalDistanceTravelled       = dataLogger.NewChannel("Total Distance");
            m_totalDistanceTravelled.color = GColor.blue;
            m_totalDistanceTravelled.SetOriginAndSpan(4.6f, 1.0f, 10000f);
            m_totalDistanceTravelled.valueFormat      = "0 m";
            m_totalDistanceTravelled.captionPositionY = 1;

            // Lap Distance
            m_lapDistanceTravelled       = dataLogger.NewChannel("Lap Distance");
            m_lapDistanceTravelled.color = GColor.red;
            m_lapDistanceTravelled.SetOriginAndSpan(3.5f, 1.0f, 10000f);
            m_lapDistanceTravelled.valueFormat      = "0 m";
            m_lapDistanceTravelled.captionPositionY = 1;
        }
        public override void SetupChannels()
        {
            m_frame3       = dataLogger.NewChannel("Frame3");
            m_frame3.color = GColor.yellow;
            m_frame3.SetOriginAndSpan(11.5f, 1.0f, 50000.0f);
            m_frame3.valueFormat      = "0.00";
            m_frame3.captionPositionY = 1;

            m_frame4       = dataLogger.NewChannel("Frame4");
            m_frame4.color = GColor.yellow;
            m_frame4.SetOriginAndSpan(11.5f, 1.0f, 50000.0f);
            m_frame4.valueFormat      = "0.00";
            m_frame4.captionPositionY = 0;

            m_error       = dataLogger.NewChannel("Error");
            m_error.color = GColor.gray;
            m_error.SetOriginAndSpan(10.0f, 6.0f, 0.5f);
            m_error.valueFormat      = "0.00";
            m_error.captionPositionY = 1;

            m_proportional       = dataLogger.NewChannel("P");
            m_proportional.color = GColor.red;
            m_proportional.SetOriginAndSpan(8.0f, 6.0f, 200000.0f);
            m_proportional.valueFormat      = "0.00";
            m_proportional.captionPositionY = 0;

            m_integral       = dataLogger.NewChannel("I");
            m_integral.color = GColor.green;
            m_integral.SetOriginAndSpan(6.0f, 6.0f, 200000.0f);
            m_integral.valueFormat      = "0.00";
            m_integral.captionPositionY = 0;

            m_derivative       = dataLogger.NewChannel("D");
            m_derivative.color = GColor.blue;
            m_derivative.SetOriginAndSpan(4.0f, 6.0f, 200000.0f);
            m_derivative.valueFormat      = "0.00";
            m_derivative.captionPositionY = 0;

            m_PID       = dataLogger.NewChannel("PID");
            m_PID.color = GColor.white;
            m_PID.SetOriginAndSpan(2.0f, 6.0f, 200000.0f);
            m_PID.valueFormat      = "0.00";
            m_PID.captionPositionY = 0;
        }
        public override void SetupChannels()
        {
            m_suspensionTravel       = dataLogger.NewChannel("Suspension travel");
            m_suspensionTravel.color = GColor.Alpha(GColor.lime, 0.7f);
            m_suspensionTravel.SetOriginAndSpan(3.0f, 1.0f, reference.maxSuspensionDistance * 1000.0f);
            m_suspensionTravel.alphaBlend       = true;
            m_suspensionTravel.valueFormat      = "0 mm";
            m_suspensionTravel.captionPositionY = 0;

            m_contactSpeed       = dataLogger.NewChannel("Contact Speed");
            m_contactSpeed.color = GColor.Alpha(GColor.lightBlue, 0.7f);
            m_contactSpeed.SetOriginAndSpan(3.0f, 0.5f, reference.maxSuspensionDistance * 1000.0f);
            m_contactSpeed.alphaBlend       = true;
            m_contactSpeed.scale            = 1.0f / (reference.maxSuspensionDistance * 1000.0f) * 0.5f;
            m_contactSpeed.valueFormat      = "0 mm/s";
            m_contactSpeed.captionPositionY = 1;

            m_contactDepth       = dataLogger.NewChannel("Contact Depth");
            m_contactDepth.color = GColor.Alpha(GColor.accentTeal, 0.7f);
            m_contactDepth.SetOriginAndSpan(3.0f, 1.0f, reference.maxSuspensionDistance * 1000.0f);
            m_contactDepth.alphaBlend       = true;
            m_contactDepth.valueFormat      = "0 mm";
            m_contactDepth.captionPositionY = 2;

            m_damperForce       = dataLogger.NewChannel("Damper force");
            m_damperForce.color = GColor.Alpha(GColor.purple, 0.7f);
            m_damperForce.SetOriginAndSpan(3.0f, 2.0f, reference.maxSuspensionDistance * reference.maxSpringRate);
            m_damperForce.alphaBlend       = true;
            m_damperForce.valueFormat      = "0 N";
            m_damperForce.captionPositionY = -2;

            m_suspensionForce       = dataLogger.NewChannel("Suspension force");
            m_suspensionForce.color = GColor.Alpha(GColor.red, 0.7f);
            m_suspensionForce.SetOriginAndSpan(3.0f, 2.0f, reference.maxSuspensionDistance * reference.maxSpringRate);
            m_suspensionForce.alphaBlend       = true;
            m_suspensionForce.valueFormat      = "0 N";
            m_suspensionForce.captionPositionY = -1;
        }
        public override void SetupChannels()
        {
            // Yaw
            m_yaw       = dataLogger.NewChannel("Yaw");
            m_yaw.color = GColor.blue;
            m_yaw.SetOriginAndSpan(8.6f, 1.0f, 200f);
            m_yaw.valueFormat      = "0.0 deg/s";
            m_yaw.captionPositionY = 1;

            // Pitch
            m_pitch       = dataLogger.NewChannel("Pitch");
            m_pitch.color = GColor.red;
            m_pitch.SetOriginAndSpan(6.6f, 1.0f, 40f);
            m_pitch.valueFormat      = "0.0 deg/s";
            m_pitch.captionPositionY = 2;

            // Roll
            m_roll       = dataLogger.NewChannel("Roll");
            m_roll.color = GColor.green;
            m_roll.SetOriginAndSpan(4.5f, 1.0f, 20);
            m_roll.valueFormat      = "0.0 deg/s";
            m_roll.captionPositionY = 3;
        }
        public override void SetupChannels()
        {
            // FrontAero
            m_aeroDRS       = dataLogger.NewChannel("DRS Position");
            m_aeroDRS.color = GColor.blue;
            m_aeroDRS.SetOriginAndSpan(11.4f, 1.5f, 3.0f);
            m_aeroDRS.valueFormat      = "0.0";
            m_aeroDRS.captionPositionY = 0;

            m_aeroCoeffFront       = dataLogger.NewChannel("SCzFront");
            m_aeroCoeffFront.color = GColor.blue;
            m_aeroCoeffFront.SetOriginAndSpan(9.0f, 0.8f, 1.5f);
            m_aeroCoeffFront.valueFormat      = "0.00";
            m_aeroCoeffFront.captionPositionY = 1;

            m_aeroCoeffRear       = dataLogger.NewChannel("SCzRear");
            m_aeroCoeffRear.color = GColor.yellow;
            m_aeroCoeffRear.SetOriginAndSpan(9.0f, 0.8f, 1.5f);
            m_aeroCoeffRear.valueFormat      = "0.0";
            m_aeroCoeffRear.captionPositionY = 0;

            m_aeroCoeffDrag       = dataLogger.NewChannel("SCx");
            m_aeroCoeffDrag.color = GColor.red;
            m_aeroCoeffDrag.SetOriginAndSpan(9.0f, 0.8f, 1.5f);
            m_aeroCoeffDrag.valueFormat      = "0.0";
            m_aeroCoeffDrag.captionPositionY = -1;

            m_aeroCoeffForceFront       = dataLogger.NewChannel("Downforce Front [N]");
            m_aeroCoeffForceFront.color = GColor.cyan;
            m_aeroCoeffForceFront.SetOriginAndSpan(7.2f, 10.0f, 80000.0f);
            m_aeroCoeffForceFront.valueFormat      = "0.00";
            m_aeroCoeffForceFront.captionPositionY = 1;

            m_aeroCoeffForceRear       = dataLogger.NewChannel("Downforce Rear [N]");
            m_aeroCoeffForceRear.color = GColor.yellow;
            m_aeroCoeffForceRear.SetOriginAndSpan(7.2f, 10.0f, 80000.0f);
            m_aeroCoeffForceRear.valueFormat      = "0.0";
            m_aeroCoeffForceRear.captionPositionY = 0;

            m_aeroCoeffForceDrag       = dataLogger.NewChannel("Drag force [N]");
            m_aeroCoeffForceDrag.color = GColor.pink;
            m_aeroCoeffForceDrag.SetOriginAndSpan(7.2f, 10.0f, 80000.0f);
            m_aeroCoeffForceDrag.valueFormat      = "0.0";
            m_aeroCoeffForceDrag.captionPositionY = -1;

            m_aeroYaw       = dataLogger.NewChannel("Yaw [deg]");
            m_aeroYaw.color = GColor.cyan;
            m_aeroYaw.SetOriginAndSpan(5.5f, 1.0f, 8.0f);
            m_aeroYaw.valueFormat      = "0.0";
            m_aeroYaw.captionPositionY = 1;

            m_aeroSteer       = dataLogger.NewChannel("Steer [deg]");
            m_aeroSteer.color = GColor.yellow;
            m_aeroSteer.SetOriginAndSpan(5.5f, 1.0f, 8.0f);
            m_aeroSteer.valueFormat      = "0.0";
            m_aeroSteer.captionPositionY = 0;

            m_aeroRoll       = dataLogger.NewChannel("Roll [deg]");
            m_aeroRoll.color = GColor.pink;
            m_aeroRoll.SetOriginAndSpan(5.5f, 1.0f, 8.0f);
            m_aeroRoll.valueFormat      = "0.00";
            m_aeroRoll.captionPositionY = -1;

            m_frontRideHeight       = dataLogger.NewChannel("Front Ride Height [mm]");
            m_frontRideHeight.color = GColor.blue;
            m_frontRideHeight.SetOriginAndSpan(4.0f, 1.0f, 100.0f);
            m_frontRideHeight.valueFormat      = "0.0";
            m_frontRideHeight.captionPositionY = 0;

            m_rearRideHeight       = dataLogger.NewChannel("Rear Ride Height [mm]");
            m_rearRideHeight.color = GColor.yellow;
            m_rearRideHeight.SetOriginAndSpan(4.0f, 1.0f, 100.0f);
            m_rearRideHeight.valueFormat      = "0.0";
            m_rearRideHeight.captionPositionY = -1;
        }
        public override void SetupChannels()
        {
            m_compressionDiff       = dataLogger.NewChannel("Compression Diff");
            m_compressionDiff.color = GColor.gray;
            m_compressionDiff.SetOriginAndSpan(4.5f, 1.0f, reference.maxSuspensionDistance * 1000.0f);
            m_compressionDiff.valueFormat      = "0 mm";
            m_compressionDiff.captionPositionY = 1;

            m_steerAngle       = dataLogger.NewChannel("Steer Angle (avg)");
            m_steerAngle.color = GColor.Alpha(Color.Lerp(GColor.teal, GColor.green, 0.75f), 0.7f);
            m_steerAngle.SetOriginAndSpan(4.5f, -1.0f, 35.0f);
            m_steerAngle.valueFormat      = "0.00 �";
            m_steerAngle.alphaBlend       = true;
            m_steerAngle.captionPositionY = 2;

            m_roll       = dataLogger.NewChannel("Roll");
            m_roll.color = GColor.Alpha(GColor.teal, 0.7f);
            m_roll.SetOriginAndSpan(4.5f, -1.0f, 10.0f);
            m_roll.valueFormat      = "0.00 �";
            m_roll.alphaBlend       = true;
            m_roll.captionPositionY = 0;

            m_yawRate       = dataLogger.NewChannel("Turn Rate");
            m_yawRate.color = GColor.Alpha(GColor.red, 0.6f);
            m_yawRate.SetOriginAndSpan(4.5f, -1.0f, 35.0f);
            m_yawRate.valueFormat = "0.0 �/s";
            // m_yawRate.alphaBlend = true;
            m_yawRate.captionPositionY = -1;

            m_yawRateVsSteer       = dataLogger.NewChannel("Turn Rate vs. Steering");
            m_yawRateVsSteer.color = GColor.gray;
            m_yawRateVsSteer.SetOriginAndSpan(2.0f, 1.0f, 15.0f);
            m_yawRateVsSteer.valueFormat = "0.00";

            // Channels will be drawn in the same order they're created

            m_leftCompression       = dataLogger.NewChannel("Left Contact Depth");
            m_leftCompression.color = GColor.Alpha(GColor.accentYellow, 0.7f);
            m_leftCompression.SetOriginAndSpan(1.0f, 1.0f, reference.maxSuspensionDistance * 1000.0f);
            m_leftCompression.alphaBlend       = true;
            m_leftCompression.valueFormat      = "0 mm";
            m_leftCompression.captionPositionY = 2;

            m_rightCompression       = dataLogger.NewChannel("Right Contact Depth");
            m_rightCompression.color = GColor.Alpha(GColor.accentLightBlue, 0.7f);
            m_rightCompression.SetOriginAndSpan(1.0f, 1.0f, reference.maxSuspensionDistance * 1000.0f);
            m_rightCompression.alphaBlend       = true;
            m_rightCompression.valueFormat      = "0 mm";
            m_rightCompression.captionPositionY = 1;

            m_leftSpring       = dataLogger.NewChannel("Effective Left Spring");
            m_leftSpring.color = GColor.Alpha(GColor.yellowA100, 0.7f);
            m_leftSpring.SetOriginAndSpan(0.0f, 0.9f, reference.maxSpringRate * 2.0f);
            m_leftSpring.alphaBlend       = true;
            m_leftSpring.valueFormat      = "0";
            m_leftSpring.captionPositionY = 2;

            m_rightSpring       = dataLogger.NewChannel("Effective Right Spring");
            m_rightSpring.color = GColor.Alpha(GColor.lightBlue200, 0.7f);
            m_rightSpring.SetOriginAndSpan(0.0f, 0.9f, reference.maxSpringRate * 2.0f);
            m_rightSpring.alphaBlend       = true;
            m_rightSpring.valueFormat      = "0";
            m_rightSpring.captionPositionY = 1;
        }