Shaft is DriveTrain.Shaft:
	inertia.inertia: 0.01

DriveTrain is Physics3D.System:
    .doc: """
        An arbitrary working drivetrain for the Beach Buggy.
    """
	front_left_hinge is Physics3D.Interactions.Hinge
	front_right_hinge is Physics3D.Interactions.Hinge
	rear_left_hinge is Physics3D.Interactions.Hinge
	rear_right_hinge is Physics3D.Interactions.Hinge

	engine_shaft is Shaft
	gearbox_output_shaft is Shaft
	engine_output_shaft is Shaft
	diff_front_shaft is Shaft
	diff_rear_shaft is Shaft
	diff_front_left_shaft is Shaft
	diff_front_right_shaft is Shaft
	diff_rear_left_shaft is Shaft
	diff_rear_right_shaft is Shaft
	front_left_reverse_shaft is Shaft
	front_right_reverse_shaft is Shaft
	rear_right_reverse_shaft is Shaft
	rear_left_reverse_shaft is Shaft
	front_left_brake_shaft is Shaft
	front_right_brake_shaft is Shaft
	rear_left_brake_shaft is Shaft
	rear_right_brake_shaft is Shaft

	engine is DriveTrain.EmpiricalEngine or DriveTrain.MeanValueEngine:
		connectors: [engine_shaft.input]

	gear_box is DriveTrain.GearBox:
		forward_gears: [8.0/0.1, 2.5/0.1, 1.6/0.1, 1.2/0.1, 1.0/0.1]
		reverse_gears: [3.5/0.1]
		initial_gear: 0
		connectors: [engine_shaft.output, gearbox_output_shaft.input]

	motor_reverse_gear is DriveTrain.Gear:
		ratio: -1.0
		connectors: [gearbox_output_shaft.output, engine_output_shaft.input]		

	differential_center is DriveTrain.Differential:
		drive_shaft: engine_output_shaft
		left_axle_shaft: diff_front_shaft
		right_axle_shaft: diff_rear_shaft
		locked_up: true

	differential_front is DriveTrain.Differential:
		drive_shaft: diff_front_shaft
		left_axle_shaft: diff_front_left_shaft
		right_axle_shaft: diff_front_right_shaft		

	differential_rear is DriveTrain.Differential:
		drive_shaft: diff_rear_shaft
		left_axle_shaft: diff_rear_left_shaft
		right_axle_shaft: diff_rear_right_shaft

	front_left_reverse_gear is DriveTrain.Gear:
		ratio: -1.0
		connectors: [diff_front_left_shaft.output, front_left_reverse_shaft.input]

	rear_right_reverse_gear is DriveTrain.Gear:
		ratio: 1.0
		connectors: [diff_rear_right_shaft.output, rear_right_reverse_shaft.input]

	front_right_reverse_gear is DriveTrain.Gear:
		ratio: -1.0
		connectors: [diff_front_right_shaft.output, front_right_reverse_shaft.input]

	rear_left_reverse_gear is DriveTrain.Gear:
		ratio: 1.0
		connectors: [diff_rear_left_shaft.output, rear_left_reverse_shaft.input]

	front_left_brake is DriveTrain.ManualBrake:
		initial_engagement_fraction: 0.0
		torque_capacity: 6000.0
		min_relative_slip_ratio: 0.001
		connectors: [front_left_reverse_shaft.output, front_left_brake_shaft.input]

	front_right_brake is DriveTrain.ManualBrake:
		initial_engagement_fraction: 0.0
		torque_capacity: 6000.0
		min_relative_slip_ratio: 0.001
		connectors: [front_right_reverse_shaft.output, front_right_brake_shaft.input]

	rear_left_brake is DriveTrain.ManualBrake:
		initial_engagement_fraction: 0.0
		torque_capacity: 6000.0
		min_relative_slip_ratio: 0.001
		connectors: [rear_left_reverse_shaft.output, rear_left_brake_shaft.input]

	rear_right_brake is DriveTrain.ManualBrake:
		initial_engagement_fraction: 0.0
		torque_capacity: 6000.0
		min_relative_slip_ratio: 0.001
		connectors: [rear_right_reverse_shaft.output, rear_right_brake_shaft.input]

	front_left_actuator is DriveTrain.HingeActuator:
		mate_3d: front_left_hinge
		connector_1d: front_left_brake_shaft.output

	front_right_actuator is DriveTrain.HingeActuator:
		mate_3d: front_right_hinge
		connector_1d: front_right_brake_shaft.output

	rear_left_actuator is DriveTrain.HingeActuator:
		mate_3d: rear_left_hinge
		connector_1d: rear_left_brake_shaft.output

	rear_right_actuator is DriveTrain.HingeActuator:
		mate_3d: rear_right_hinge
		connector_1d: rear_right_brake_shaft.output
