protected override YAMLMappingNode ExportYAMLRoot(IExportContainer container)
        {
            YAMLMappingNode node = base.ExportYAMLRoot(container);

            node.Add(ConnectedBodyName, ConnectedBody.ExportYAML(container));
            node.Add(AnchorName, Anchor.ExportYAML(container));
            node.Add(AxisName, Axis.ExportYAML(container));
            node.Add(AutoConfigureConnectedAnchorName, AutoConfigureConnectedAnchor);
            node.Add(ConnectedAnchorName, ConnectedAnchor.ExportYAML(container));

            node.AddSerializedVersion(GetSerializedVersion(container.ExportVersion));
            node.Add(SecondaryAxisName, SecondaryAxis.ExportYAML(container));
            node.Add(XMotionName, (int)XMotion);
            node.Add(YMotionName, (int)YMotion);
            node.Add(ZMotionName, (int)ZMotion);
            node.Add(AngularXMotionName, (int)AngularXMotion);
            node.Add(AngularYMotionName, (int)AngularYMotion);
            node.Add(AngularZMotionName, (int)AngularZMotion);
            node.Add(LinearLimitSpringName, LinearLimitSpring.ExportYAML(container));
            node.Add(LinearLimitName, LinearLimit.ExportYAML(container));
            node.Add(AngularXLimitSpringName, AngularXLimitSpring.ExportYAML(container));
            node.Add(LowAngularXLimitName, LowAngularXLimit.ExportYAML(container));
            node.Add(HighAngularXLimitName, HighAngularXLimit.ExportYAML(container));
            node.Add(AngularYZLimitSpringName, AngularYZLimitSpring.ExportYAML(container));
            node.Add(AngularYLimitName, AngularYLimit.ExportYAML(container));
            node.Add(AngularZLimitName, AngularZLimit.ExportYAML(container));
            node.Add(TargetPositionName, TargetPosition.ExportYAML(container));
            node.Add(TargetVelocityName, TargetVelocity.ExportYAML(container));
            node.Add(XDriveName, XDrive.ExportYAML(container));
            node.Add(YDriveName, YDrive.ExportYAML(container));
            node.Add(ZDriveName, ZDrive.ExportYAML(container));
            node.Add(TargetRotationName, TargetRotation.ExportYAML(container));
            node.Add(TargetAngularVelocityName, TargetAngularVelocity.ExportYAML(container));
            node.Add(RotationDriveModeName, (int)RotationDriveMode);
            node.Add(AngularXDriveName, AngularXDrive.ExportYAML(container));
            node.Add(AngularYZDriveName, AngularYZDrive.ExportYAML(container));
            node.Add(SlerpDriveName, SlerpDrive.ExportYAML(container));
            node.Add(ProjectionModeName, (int)ProjectionMode);
            node.Add(ProjectionDistanceName, ProjectionDistance);
            node.Add(ProjectionAngleName, ProjectionAngle);
            node.Add(ConfiguredInWorldSpaceName, ConfiguredInWorldSpace);
            node.Add(SwapBodiesName, SwapBodies);

            node.Add(BreakForceName, BreakForce);
            node.Add(BreakTorqueName, BreakTorque);
            node.Add(EnableCollisionName, EnableCollision);
            node.Add(EnablePreprocessingName, EnablePreprocessing);
            node.Add(MassScaleName, MassScale);
            node.Add(ConnectedMassScaleName, ConnectedMassScale);
            return(node);
        }