Base is Vehicles.FourWheels.FrontWheelDrive:
    chassis:
        up_vector: up_vector
        forward_vector: forward_vector
        front_left_connector becomes VehicleWithSteering.Assets.ChassisConnector:
            position: {-0.923879, 2.00055, 0.439071}
            up_vector: up_vector
            forward_vector: forward_vector
            redirected_parent: chassis.body

        rear_left_connector becomes VehicleWithSteering.Assets.ChassisConnector:
            position: {-0.923879, -1.96483, 0.439071}
            up_vector: up_vector
            forward_vector: forward_vector
            redirected_parent: chassis.body

        front_right_connector becomes VehicleWithSteering.Assets.ChassisConnector:
            position: {0.923879, 2.00055, 0.439071}
            up_vector: up_vector
            forward_vector: forward_vector
            redirected_parent: chassis.body

        rear_right_connector becomes VehicleWithSteering.Assets.ChassisConnector:
            position: {0.923879, -1.96483, 0.439071}
            up_vector: up_vector
            forward_vector: forward_vector
            redirected_parent: chassis.body

        body becomes VehicleWithSteering.Assets.ChassisBody

    up_vector: {0, 0, 1}
    forward_vector: {0, 1, 0}

    front_left_wheel becomes VehicleWithSteering.Assets.CarWheel:
        visual_rotation: 3*Math.PI / 2
    front_right_wheel becomes VehicleWithSteering.Assets.CarWheel:
        visual_rotation: -3*Math.PI / 2
    rear_left_wheel becomes VehicleWithSteering.Assets.CarWheel:
        visual_rotation: 3*Math.PI / 2
    rear_right_wheel becomes VehicleWithSteering.Assets.CarWheel:
        visual_rotation: -3*Math.PI / 2

    steering becomes Vehicles.Steering.Kinematic.RackAndPinion:
        left_suspension: front_left_suspension
        right_suspension: front_right_suspension
        interaction.steering_angle_output:
            enabled: true

    drive is VehicleWithSteering.Assets.DriveTrain:
        front_left_suspension: front_left_suspension
        front_right_suspension: front_right_suspension

    chassis_wheels_collision_group is Simulation.CollisionGroup:
        bodies: [chassis.body, front_left_wheel.rim, front_left_wheel.tire, front_right_wheel.rim, front_right_wheel.tire,
         rear_left_wheel.rim, rear_left_wheel.tire, rear_right_wheel.rim, rear_right_wheel.tire]

    disable_wheel_chassis_collisions is Simulation.DisableCollisionPair:
        group1: chassis_wheels_collision_group
        group2: chassis_wheels_collision_group

    signal_interface is Physics.Signals.SignalInterface:
        enable: true

        throttle is Physics.Signals.Input: drive.engine.throttle_input
        clutch is Physics.Signals.Input: drive.clutch.engagement_fraction_input
        gear is Physics.Signals.Input: drive.gear_box.gear_selection_input
        steering_angle is Physics.Signals.Input: steering.interaction.steering_angle_input

        brake_left is Physics.Signals.Input: drive.left_brake.engagement_fraction_input
        brake_right is Physics.Signals.Input: drive.right_brake.engagement_fraction_input


Scene is Physics3D.System:
    vehicle is Base:
        local_transform.position: {0,0,1.1}
    ground is VehicleWithSteering.Assets.GroundPlane
    wheel_ground_friction is VehicleWithSteering.Properties.WheelGroundFrictionModel
