/// <summary>
 /// Add a constraint to the physics world. A constraint may affect one or two bodies.
 /// </summary>
 /// <param name="constraint">The constraint to add.</param>
 public void Add(Constraint constraint)
 {
     if (constraint.Manager != null)
         throw new ArgumentException("Constraint is already managed by a physics implementation.");
     if (constraint.BodyA != null) constraint.BodyA.Constraints.Add(constraint);
     if (constraint.BodyB != null) constraint.BodyB.Constraints.Add(constraint);
     constraint.Manager = this;
 }
 /// <summary>
 /// Removes a constraint from the physics world.
 /// </summary>
 /// <param name="constraint">The constraint to remove.</param>
 /// <returns>Returns a value indicating whether the constraint was successfully removed.</returns>
 public bool Remove(Constraint constraint)
 {
     bool removed = false;
     if (constraint.BodyA != null) removed |= constraint.BodyA.Constraints.Remove(constraint);
     if (constraint.BodyB != null) removed |= constraint.BodyB.Constraints.Remove(constraint);
     constraint.Manager = null;
     return removed;
 }
 public void Add(Constraint constraint)
 {
     physics.Add(constraint);
 }