public void CopyTo()
        {
            ContactSetCollection csc = new ContactSetCollection();

            csc.Add(ContactSet.Create(_a, _b));
            csc.Add(ContactSet.Create(_a, _c));
            csc.Add(ContactSet.Create(_d, _a));
            csc.Add(ContactSet.Create(_b, _c));
            csc.Add(ContactSet.Create(_c, _d));

            var array = new ContactSet[5];

            csc.CopyTo(array, 0);
            Assert.IsNotNull(array[0]);
            Assert.IsNotNull(array[1]);
            Assert.IsNotNull(array[2]);
            Assert.IsNotNull(array[3]);
            Assert.IsNotNull(array[4]);

            array = new ContactSet[6];
            csc.CopyTo(array, 1);
            Assert.IsNull(array[0]);
            Assert.IsNotNull(array[1]);
            Assert.IsNotNull(array[2]);
            Assert.IsNotNull(array[3]);
            Assert.IsNotNull(array[4]);
            Assert.IsNotNull(array[5]);
        }
        public void Remove()
        {
            // Remove with null.
            Assert.IsFalse(new ContactSetCollection().Remove((ContactSet)null));
            Assert.IsFalse(new ContactSetCollection().Remove((CollisionObject)null));
            Assert.IsNull(new ContactSetCollection().Remove(null, _a));
            Assert.IsNull(new ContactSetCollection().Remove(_a, (CollisionObject)null));

            ContactSetCollection csc = new ContactSetCollection();

            csc.Add(ContactSet.Create(_a, _b));
            csc.Add(ContactSet.Create(_a, _c));
            csc.Add(ContactSet.Create(_d, _a));
            csc.Add(ContactSet.Create(_b, _c));
            csc.Add(ContactSet.Create(_c, _d));
            Assert.AreEqual(5, csc.Count);
            Assert.IsNotNull(csc.Remove(_a, _d));
            Assert.IsFalse(csc.Contains(_a, _d));
            Assert.AreEqual(4, csc.Count);
            Assert.IsNull(csc.Remove(_a, _d));
            Assert.AreEqual(4, csc.Count);
            Assert.IsTrue(csc.Remove(csc.GetContacts(_c, _b)));
            Assert.IsFalse(csc.Contains(_b, _c));
            Assert.AreEqual(3, csc.Count);
            Assert.IsFalse(csc.Remove(ContactSet.Create(_a, _e)));
            Assert.AreEqual(3, csc.Count);
            Assert.IsTrue(csc.Remove(_a));
            Assert.AreEqual(1, csc.Count);
            Assert.IsFalse(csc.Remove(_b));
            Assert.AreEqual(1, csc.Count);
        }
        public void AddException4()
        {
            ContactSetCollection csc = new ContactSetCollection();

            csc.Add(ContactSet.Create(_a, _b));
            csc.Add(ContactSet.Create(_b, _a));
        }
示例#4
0
 public void Add()
 {
     ContactSetCollection csc = new ContactSetCollection();
       Assert.AreEqual(0, csc.Count);
       csc.Add(ContactSet.Create(_a, _b));
       Assert.AreEqual(1, csc.Count);
       csc.Add(ContactSet.Create(_a, _c));
       Assert.AreEqual(2, csc.Count);
       csc.Add(ContactSet.Create(_d, _a));
       Assert.AreEqual(3, csc.Count);
 }
示例#5
0
        /// <summary>
        /// Creates a <see cref="ContactSetCollection"/> from an <see cref="IEnumerable{ContactSet}"/>.
        /// </summary>
        /// <param name="contactSets">The contact sets.</param>
        /// <returns>
        /// A <see cref="ContactSetCollection"/> that contains the elements from the input sequence.
        /// </returns>
        public static ContactSetCollection ToContactSetCollection(this IEnumerable <ContactSet> contactSets)
        {
            ContactSetCollection collection = contactSets as ContactSetCollection;

            if (collection != null)
            {
                return(collection);
            }

            return(new ContactSetCollection(contactSets));
        }
示例#6
0
        public void Clear()
        {
            ContactSetCollection csc = new ContactSetCollection();
              csc.Add(ContactSet.Create(_a, _b));
              csc.Add(ContactSet.Create(_a, _c));
              csc.Add(ContactSet.Create(_d, _a));

              Assert.AreEqual(3, csc.Count);
              csc.Clear();
              Assert.AreEqual(0, csc.Count);
              Assert.IsFalse(csc.Contains(_a, _b));
        }
        public void Add()
        {
            ContactSetCollection csc = new ContactSetCollection();

            Assert.AreEqual(0, csc.Count);
            csc.Add(ContactSet.Create(_a, _b));
            Assert.AreEqual(1, csc.Count);
            csc.Add(ContactSet.Create(_a, _c));
            Assert.AreEqual(2, csc.Count);
            csc.Add(ContactSet.Create(_d, _a));
            Assert.AreEqual(3, csc.Count);
        }
示例#8
0
        //--------------------------------------------------------------
        #region Creation and Cleanup
        //--------------------------------------------------------------

        /// <summary>
        /// Initializes a new instance of the <see cref="CollisionDetectionBroadPhase"/> class.
        /// </summary>
        public CollisionDetectionBroadPhase(CollisionDomain collisionDomain)
        {
            _collisionDomain = collisionDomain;

            // Register event handler.
            _collisionDomain.CollisionObjects.CollectionChanged += OnCollisionObjectsChanged;

            // Per default we use Sweep and Prune.
            SpatialPartition = new SweepAndPruneSpace <CollisionObject>();

            CandidatePairs = new ContactSetCollection();
        }
        public void Clear()
        {
            ContactSetCollection csc = new ContactSetCollection();

            csc.Add(ContactSet.Create(_a, _b));
            csc.Add(ContactSet.Create(_a, _c));
            csc.Add(ContactSet.Create(_d, _a));

            Assert.AreEqual(3, csc.Count);
            csc.Clear();
            Assert.AreEqual(0, csc.Count);
            Assert.IsFalse(csc.Contains(_a, _b));
        }
        public void ToStringTest()
        {
            Assert.AreEqual("ContactSetCollection { Count = 0 }", new ContactSetCollection().ToString());

            ContactSetCollection csc = new ContactSetCollection();

            csc.Add(ContactSet.Create(_a, _b));
            csc.Add(ContactSet.Create(_a, _c));
            csc.Add(ContactSet.Create(_d, _a));
            csc.Add(ContactSet.Create(_b, _c));
            csc.Add(ContactSet.Create(_c, _d));

            Assert.AreEqual("ContactSetCollection { Count = 5 }", csc.ToString());
        }
        public void GetContactSet()
        {
            ContactSetCollection csc = new ContactSetCollection();

            csc.Add(ContactSet.Create(_a, _b));
            csc.Add(ContactSet.Create(_a, _c));
            csc.Add(ContactSet.Create(_d, _a));
            csc.Add(ContactSet.Create(_b, _c));
            csc.Add(ContactSet.Create(_c, _d));

            Assert.AreEqual(_a, csc.GetContacts(_a, _b).ObjectA);
            Assert.AreEqual(_b, csc.GetContacts(_b, _a).ObjectB);
            Assert.AreEqual(_a, csc.GetContacts(_a, _d).ObjectB);
            Assert.AreEqual(null, csc.GetContacts(_b, _e));
        }
        public void GetContactSets()
        {
            ContactSetCollection csc = new ContactSetCollection();

            csc.Add(ContactSet.Create(_a, _b));
            csc.Add(ContactSet.Create(_a, _c));
            csc.Add(ContactSet.Create(_d, _a));
            csc.Add(ContactSet.Create(_b, _c));
            csc.Add(ContactSet.Create(_c, _d));

            Assert.AreEqual(0, csc.GetContacts(_e).Count());
            Assert.AreEqual(3, csc.GetContacts(_a).Count());
            Assert.AreEqual(2, csc.GetContacts(_b).Count());
            Assert.AreEqual(true, csc.GetContacts(_b).ToContactSetCollection().Contains(_b, _c));
            Assert.AreEqual(true, csc.GetContacts(_b).ToContactSetCollection().Contains(_b, _a));
        }
        public void Contains()
        {
            ContactSetCollection csc = new ContactSetCollection();

            csc.Add(ContactSet.Create(_a, _b));
            csc.Add(ContactSet.Create(_a, _c));
            csc.Add(ContactSet.Create(_d, _a));

            Assert.AreEqual(3, csc.Count);
            Assert.IsTrue(csc.Contains(_a, _b));
            Assert.IsTrue(csc.Contains(_b, _a));
            Assert.IsTrue(csc.Contains(_a, _d));
            Assert.IsFalse(csc.Contains(_a, _a));
            Assert.IsFalse(csc.Contains(_b, _c));
            Assert.IsFalse(csc.Contains(null, null));
            Assert.IsFalse(csc.Contains(_a, null));
            Assert.IsFalse(csc.Contains(null, _a));

            // Same object but other contact set instances.
            Assert.IsFalse(csc.Contains(ContactSet.Create(_a, _b)));
            Assert.IsFalse(csc.Contains(ContactSet.Create(_b, _c)));
        }
        public void TestEnumerator()
        {
            ContactSetCollection csc = new ContactSetCollection();

            csc.Add(ContactSet.Create(_a, _b));
            csc.Add(ContactSet.Create(_a, _c));
            csc.Add(ContactSet.Create(_d, _a));
            csc.Add(ContactSet.Create(_b, _c));
            csc.Add(ContactSet.Create(_c, _d));

            IEnumerator enumerator = ((IEnumerable)csc).GetEnumerator();
            IEnumerator <ContactSet> genericEnumerator = csc.GetEnumerator();

            for (int i = 0; i < csc.Count; i++)
            {
                Assert.IsTrue(enumerator.MoveNext());
                Assert.IsTrue(genericEnumerator.MoveNext());
            }

            Assert.IsFalse(enumerator.MoveNext());
            Assert.IsFalse(genericEnumerator.MoveNext());
        }
示例#15
0
        /// <summary>
        /// Draws contacts.
        /// </summary>
        /// <param name="contactSets">The contact sets.</param>
        /// <param name="normalLength">The length of the normal vector in world space.</param>
        /// <param name="color">
        /// The color. If this parameter is <see langword="null"/>, each contact is drawn with a unique 
        /// color.
        /// </param>
        /// <param name="drawOverScene">
        /// If set to <see langword="true"/> the object is drawn over the graphics scene (depth-test 
        /// disabled).
        /// </param>
        /// <remarks>
        /// The penetration depth is visualized with a dark red line.
        /// </remarks>
        public void DrawContacts(ContactSetCollection contactSets, float normalLength, Color? color, bool drawOverScene)
        {
            if (!Enabled || contactSets == null)
            return;

              foreach (var contactSet in contactSets)
            DrawContacts(contactSet, normalLength, color, drawOverScene);
        }
示例#16
0
        public void GetContactSet()
        {
            ContactSetCollection csc = new ContactSetCollection();
              csc.Add(ContactSet.Create(_a, _b));
              csc.Add(ContactSet.Create(_a, _c));
              csc.Add(ContactSet.Create(_d, _a));
              csc.Add(ContactSet.Create(_b, _c));
              csc.Add(ContactSet.Create(_c, _d));

              Assert.AreEqual(_a, csc.GetContacts(_a, _b).ObjectA);
              Assert.AreEqual(_b, csc.GetContacts(_b, _a).ObjectB);
              Assert.AreEqual(_a, csc.GetContacts(_a, _d).ObjectB);
              Assert.AreEqual(null, csc.GetContacts(_b, _e));
        }
示例#17
0
        public void GetContactSets()
        {
            ContactSetCollection csc = new ContactSetCollection();
              csc.Add(ContactSet.Create(_a, _b));
              csc.Add(ContactSet.Create(_a, _c));
              csc.Add(ContactSet.Create(_d, _a));
              csc.Add(ContactSet.Create(_b, _c));
              csc.Add(ContactSet.Create(_c, _d));

              Assert.AreEqual(0, csc.GetContacts(_e).Count());
              Assert.AreEqual(3, csc.GetContacts(_a).Count());
              Assert.AreEqual(2, csc.GetContacts(_b).Count());
              Assert.AreEqual(true, csc.GetContacts(_b).ToContactSetCollection().Contains(_b, _c));
              Assert.AreEqual(true, csc.GetContacts(_b).ToContactSetCollection().Contains(_b, _a));
        }
        public void AddException3()
        {
            ContactSetCollection csc = new ContactSetCollection();

            csc.Add(null);
        }
示例#19
0
        public void Remove()
        {
            // Remove with null.
              Assert.IsFalse(new ContactSetCollection().Remove((ContactSet) null));
              Assert.IsFalse(new ContactSetCollection().Remove((CollisionObject) null));
              Assert.IsNull(new ContactSetCollection().Remove(null, _a));
              Assert.IsNull(new ContactSetCollection().Remove(_a, (CollisionObject)null));

              ContactSetCollection csc = new ContactSetCollection();
              csc.Add(ContactSet.Create(_a, _b));
              csc.Add(ContactSet.Create(_a, _c));
              csc.Add(ContactSet.Create(_d, _a));
              csc.Add(ContactSet.Create(_b, _c));
              csc.Add(ContactSet.Create(_c, _d));
              Assert.AreEqual(5, csc.Count);
              Assert.IsNotNull(csc.Remove(_a, _d));
              Assert.IsFalse(csc.Contains(_a, _d));
              Assert.AreEqual(4, csc.Count);
              Assert.IsNull(csc.Remove(_a, _d));
              Assert.AreEqual(4, csc.Count);
              Assert.IsTrue(csc.Remove(csc.GetContacts(_c, _b)));
              Assert.IsFalse(csc.Contains(_b, _c));
              Assert.AreEqual(3, csc.Count);
              Assert.IsFalse(csc.Remove(ContactSet.Create(_a, _e)));
              Assert.AreEqual(3, csc.Count);
              Assert.IsTrue(csc.Remove(_a));
              Assert.AreEqual(1, csc.Count);
              Assert.IsFalse(csc.Remove(_b));
              Assert.AreEqual(1, csc.Count);
        }
示例#20
0
        public void TestEnumerator()
        {
            ContactSetCollection csc = new ContactSetCollection();
              csc.Add(ContactSet.Create(_a, _b));
              csc.Add(ContactSet.Create(_a, _c));
              csc.Add(ContactSet.Create(_d, _a));
              csc.Add(ContactSet.Create(_b, _c));
              csc.Add(ContactSet.Create(_c, _d));

              IEnumerator enumerator = ((IEnumerable)csc).GetEnumerator();
              IEnumerator<ContactSet> genericEnumerator = csc.GetEnumerator();
              for (int i = 0; i < csc.Count; i++)
              {
            Assert.IsTrue(enumerator.MoveNext());
            Assert.IsTrue(genericEnumerator.MoveNext());
              }

              Assert.IsFalse(enumerator.MoveNext());
              Assert.IsFalse(genericEnumerator.MoveNext());
        }
示例#21
0
        public void ToStringTest()
        {
            Assert.AreEqual("ContactSetCollection { Count = 0 }", new ContactSetCollection().ToString());

              ContactSetCollection csc = new ContactSetCollection();
              csc.Add(ContactSet.Create(_a, _b));
              csc.Add(ContactSet.Create(_a, _c));
              csc.Add(ContactSet.Create(_d, _a));
              csc.Add(ContactSet.Create(_b, _c));
              csc.Add(ContactSet.Create(_c, _d));

              Assert.AreEqual("ContactSetCollection { Count = 5 }", csc.ToString());
        }
示例#22
0
 public void AddException3()
 {
     ContactSetCollection csc = new ContactSetCollection();
       csc.Add(null);
 }
示例#23
0
 public void AddException4()
 {
     ContactSetCollection csc = new ContactSetCollection();
       csc.Add(ContactSet.Create(_a, _b));
       csc.Add(ContactSet.Create(_b, _a));
 }
示例#24
0
        public void Contains()
        {
            ContactSetCollection csc = new ContactSetCollection();
              csc.Add(ContactSet.Create(_a, _b));
              csc.Add(ContactSet.Create(_a, _c));
              csc.Add(ContactSet.Create(_d, _a));

              Assert.AreEqual(3, csc.Count);
              Assert.IsTrue(csc.Contains(_a, _b));
              Assert.IsTrue(csc.Contains(_b, _a));
              Assert.IsTrue(csc.Contains(_a, _d));
              Assert.IsFalse(csc.Contains(_a, _a));
              Assert.IsFalse(csc.Contains(_b, _c));
              Assert.IsFalse(csc.Contains(null, null));
              Assert.IsFalse(csc.Contains(_a, null));
              Assert.IsFalse(csc.Contains(null, _a));

              // Same object but other contact set instances.
              Assert.IsFalse(csc.Contains(ContactSet.Create(_a, _b)));
              Assert.IsFalse(csc.Contains(ContactSet.Create(_b, _c)));
        }
示例#25
0
        public void CopyTo()
        {
            ContactSetCollection csc = new ContactSetCollection();
              csc.Add(ContactSet.Create(_a, _b));
              csc.Add(ContactSet.Create(_a, _c));
              csc.Add(ContactSet.Create(_d, _a));
              csc.Add(ContactSet.Create(_b, _c));
              csc.Add(ContactSet.Create(_c, _d));

              var array = new ContactSet[5];
              csc.CopyTo(array, 0);
              Assert.IsNotNull(array[0]);
              Assert.IsNotNull(array[1]);
              Assert.IsNotNull(array[2]);
              Assert.IsNotNull(array[3]);
              Assert.IsNotNull(array[4]);

              array = new ContactSet[6];
              csc.CopyTo(array, 1);
              Assert.IsNull(array[0]);
              Assert.IsNotNull(array[1]);
              Assert.IsNotNull(array[2]);
              Assert.IsNotNull(array[3]);
              Assert.IsNotNull(array[4]);
              Assert.IsNotNull(array[5]);
        }