public void NaNWithValidation() { GlobalSettings.ValidationLevel = 0xff; var partition = new AdaptiveAabbTree <int>(); partition.EnableSelfOverlaps = true; partition.GetAabbForItem = GetAabbForItem; partition.Add(1); partition.Add(4); partition.Add(2); partition.Add(3); // Full rebuild. Assert.Throws <GeometryException>(() => partition.Update(true)); partition = new AdaptiveAabbTree <int>(); partition.EnableSelfOverlaps = true; partition.GetAabbForItem = GetAabbForItem; partition.Add(1); partition.Add(2); partition.Add(3); partition.Update(true); partition.Add(4); // Partial rebuild. Assert.Throws <GeometryException>(() => partition.Update(false)); }
public void Infinite() { GlobalSettings.ValidationLevel = 0xff; var partition = new AdaptiveAabbTree <int> { EnableSelfOverlaps = true, GetAabbForItem = GetAabbForItem }; partition.Add(1); partition.Add(0); partition.Add(2); partition.Add(3); Assert.AreEqual(new Aabb(new Vector3(float.NegativeInfinity), new Vector3(float.PositiveInfinity)), partition.Aabb); var overlaps = partition.GetOverlaps().ToArray(); Assert.AreEqual(4, overlaps.Length); Assert.IsTrue(overlaps.Contains(new Pair <int>(0, 1))); Assert.IsTrue(overlaps.Contains(new Pair <int>(0, 2))); Assert.IsTrue(overlaps.Contains(new Pair <int>(0, 3))); Assert.IsTrue(overlaps.Contains(new Pair <int>(1, 2))); }
public void NaN() { GlobalSettings.ValidationLevel = 0x00; var partition = new AdaptiveAabbTree <int> { EnableSelfOverlaps = true, GetAabbForItem = GetAabbForItem }; partition.Add(1); partition.Add(4); partition.Add(2); partition.Add(3); // Aabb builder throws exception. Assert.Throws <GeometryException>(() => partition.Update(false)); }
public void NaN() { GlobalSettings.ValidationLevel = 0x00; var partition = new AdaptiveAabbTree<int> { EnableSelfOverlaps = true, GetAabbForItem = GetAabbForItem }; partition.Add(1); partition.Add(4); partition.Add(2); partition.Add(3); // Aabb builder throws exception. Assert.Throws<GeometryException>(() => partition.Update(false)); }
public void Clone() { AdaptiveAabbTree<int> partition = new AdaptiveAabbTree<int>(); partition.GetAabbForItem = i => new Aabb(); partition.EnableSelfOverlaps = true; partition.Filter = new DelegatePairFilter<int>(pair => true); partition.Add(0); partition.Add(1); partition.Add(2); partition.Add(3); var clone = partition.Clone(); Assert.NotNull(clone); Assert.AreNotSame(clone, partition); Assert.AreEqual(clone.EnableSelfOverlaps, partition.EnableSelfOverlaps); Assert.AreEqual(clone.Filter, partition.Filter); Assert.AreEqual(0, clone.Count); clone.Add(0); Assert.AreEqual(4, partition.Count); Assert.AreEqual(1, clone.Count); }
public void Clone() { AdaptiveAabbTree <int> partition = new AdaptiveAabbTree <int>(); partition.GetAabbForItem = i => new Aabb(); partition.EnableSelfOverlaps = true; partition.Filter = new DelegatePairFilter <int>(pair => true); partition.Add(0); partition.Add(1); partition.Add(2); partition.Add(3); var clone = partition.Clone(); Assert.NotNull(clone); Assert.AreNotSame(clone, partition); Assert.AreEqual(clone.EnableSelfOverlaps, partition.EnableSelfOverlaps); Assert.AreEqual(clone.Filter, partition.Filter); Assert.AreEqual(0, clone.Count); clone.Add(0); Assert.AreEqual(4, partition.Count); Assert.AreEqual(1, clone.Count); }
public void Infinite() { GlobalSettings.ValidationLevel = 0xff; var partition = new AdaptiveAabbTree<int> { EnableSelfOverlaps = true, GetAabbForItem = GetAabbForItem }; partition.Add(1); partition.Add(0); partition.Add(2); partition.Add(3); Assert.AreEqual(new Aabb(new Vector3F(float.NegativeInfinity), new Vector3F(float.PositiveInfinity)), partition.Aabb); var overlaps = partition.GetOverlaps().ToArray(); Assert.AreEqual(4, overlaps.Length); Assert.IsTrue(overlaps.Contains(new Pair<int>(0, 1))); Assert.IsTrue(overlaps.Contains(new Pair<int>(0, 2))); Assert.IsTrue(overlaps.Contains(new Pair<int>(0, 3))); Assert.IsTrue(overlaps.Contains(new Pair<int>(1, 2))); }
public void NaNWithValidation() { GlobalSettings.ValidationLevel = 0xff; var partition = new AdaptiveAabbTree<int>(); partition.EnableSelfOverlaps = true; partition.GetAabbForItem = GetAabbForItem; partition.Add(1); partition.Add(4); partition.Add(2); partition.Add(3); // Full rebuild. Assert.Throws<GeometryException>(() => partition.Update(true)); partition = new AdaptiveAabbTree<int>(); partition.EnableSelfOverlaps = true; partition.GetAabbForItem = GetAabbForItem; partition.Add(1); partition.Add(2); partition.Add(3); partition.Update(true); partition.Add(4); // Partial rebuild. Assert.Throws<GeometryException>(() => partition.Update(false)); }