/// <summary>
        /// Determines whether two collision objects are in contact.
        /// </summary>
        /// <param name="objectA">The collision object A.</param>
        /// <param name="objectB">The collision object B.</param>
        /// <returns>
        /// <see langword="true"/> if the objects are touching (or penetrating); otherwise
        /// <see langword="false"/>.
        /// </returns>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="objectA"/> is <see langword="null"/>.
        /// </exception>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="objectB"/> is <see langword="null"/>.
        /// </exception>
        public bool HaveContact(CollisionObject objectA, CollisionObject objectB)
        {
            if (objectA == null)
            {
                throw new ArgumentNullException("objectA");
            }
            if (objectB == null)
            {
                throw new ArgumentNullException("objectB");
            }

            ContactSet contactSet = ContactSet.Create(objectA, objectB);

            ComputeCollision(contactSet, CollisionQueryType.Boolean);
            CheckResult(contactSet, false);

            bool haveContact = contactSet.HaveContact;

            contactSet.Recycle();
            return(haveContact);
        }