trait CylinderBearingSeparation:
    barrel_separation: 0.1
    rod_separation: 0.15
trait ChassisBearingSeparation:
    separation: 0.2

trait CylinderAxles:
    barrel_axle:
        diameter: 0.08
        length: 0.4
    rod_axle:
        diameter: 0.1
        length: 0.45

ChassisBearingPair is MachineModeling.Components.Composite.BearingPair:
    with ChassisBearingSeparation

trait RipperDualCylindersAxle:
    chassis:
        left_mid_ripper_bearings is ChassisBearingPair with MachineModeling.Components.Composite.Traits.BearingsFromConnector:
            connector: chassis.left_mid_ripper_connector
            body: chassis.body
        left_upper_ripper_bearings is ChassisBearingPair with MachineModeling.Components.Composite.Traits.BearingsFromConnector:
            connector: chassis.left_upper_ripper_connector
            body: chassis.body
        right_mid_ripper_bearings is ChassisBearingPair with MachineModeling.Components.Composite.Traits.BearingsFromConnector:
            connector: chassis.right_mid_ripper_connector
            body: chassis.body
        right_upper_ripper_bearings is ChassisBearingPair with MachineModeling.Components.Composite.Traits.BearingsFromConnector:
            connector: chassis.right_upper_ripper_connector
            body: chassis.body

    ripper_connection:

        left_lift_actuator becomes MachineModeling.Actuators.Linear.CylinderBearings with CAT_D10.Assets.Components.Traits.RipperLiftCylinder, CylinderBearingSeparation
        right_lift_actuator becomes MachineModeling.Actuators.Linear.CylinderBearings with CAT_D10.Assets.Components.Traits.RipperLiftCylinder, CylinderBearingSeparation
        left_tilt_actuator becomes MachineModeling.Actuators.Linear.CylinderBearings with CAT_D10.Assets.Components.Traits.RipperTiltCylinder, CylinderBearingSeparation
        right_tilt_actuator becomes MachineModeling.Actuators.Linear.CylinderBearings with CAT_D10.Assets.Components.Traits.RipperTiltCylinder, CylinderBearingSeparation

        left_lift_actuator_connection becomes MachineModeling.Actuators.Linear.Connections.CylinderAxleBearings with CylinderAxles:
            actuator: ripper_connection.left_lift_actuator
            from_bearings: chassis.left_mid_ripper_bearings
            to_bearings: ripper_connection.left_lift_actuator.rod.bearings
        right_lift_actuator_connection becomes MachineModeling.Actuators.Linear.Connections.CylinderAxleBearings with CylinderAxles:
            actuator: ripper_connection.right_lift_actuator
            from_bearings: chassis.right_mid_ripper_bearings
            to_bearings: ripper_connection.right_lift_actuator.rod.bearings
        left_tilt_actuator_connection becomes MachineModeling.Actuators.Linear.Connections.CylinderAxleBearings with CylinderAxles:
            actuator: ripper_connection.left_tilt_actuator
            from_bearings: chassis.left_upper_ripper_bearings
            to_bearings: ripper_connection.left_tilt_actuator.rod.bearings
        right_tilt_actuator_connection becomes MachineModeling.Actuators.Linear.Connections.CylinderAxleBearings with CylinderAxles:
            actuator: ripper_connection.right_tilt_actuator
            from_bearings: chassis.right_upper_ripper_bearings
            to_bearings: ripper_connection.right_tilt_actuator.rod.bearings
