Пример #1
0
        public void CollisionFilterTest_CreateUnion()
        {
            //Union: GroupIndex will only be not 0 if both operands have the same GroupIndex

            var filter0 = new CollisionFilter
            {
                GroupIndex = 1
            };

            var filter1 = new CollisionFilter
            {
                BelongsTo    = 1,
                CollidesWith = 1,
                GroupIndex   = -1
            };

            var filter2 = new CollisionFilter
            {
                BelongsTo    = 1,
                CollidesWith = 1,
                GroupIndex   = 1
            };

            var filter3 = new CollisionFilter
            {
                BelongsTo    = 0,
                CollidesWith = 0,
                GroupIndex   = -1
            };

            var filter4 = new CollisionFilter
            {
                BelongsTo    = 1,
                CollidesWith = 1,
                GroupIndex   = 0
            };

            Assert.IsTrue(CollisionFilter.CreateUnion(CollisionFilter.Zero, CollisionFilter.Default)
                          .Equals(CollisionFilter.Default));

            Assert.IsTrue(CollisionFilter.CreateUnion(filter0, CollisionFilter.Zero).Equals(CollisionFilter.Zero));
            Assert.IsTrue(CollisionFilter.CreateUnion(filter1, CollisionFilter.Zero).Equals(filter4));
            Assert.IsTrue(CollisionFilter.CreateUnion(filter2, CollisionFilter.Zero).Equals(filter4));
            Assert.IsTrue(CollisionFilter.CreateUnion(filter3, CollisionFilter.Zero).Equals(CollisionFilter.Zero));
            Assert.IsTrue(CollisionFilter.CreateUnion(filter4, CollisionFilter.Zero).Equals(filter4));

            Assert.IsTrue(CollisionFilter.CreateUnion(filter0, filter1).Equals(filter4));
            Assert.IsTrue(CollisionFilter.CreateUnion(filter1, filter3).Equals(filter1));
            Assert.IsTrue(CollisionFilter.CreateUnion(filter1, filter2).Equals(filter4));
            Assert.IsTrue(CollisionFilter.CreateUnion(filter2, filter3).Equals(filter4));
            Assert.IsTrue(CollisionFilter.CreateUnion(filter3, filter4).Equals(filter4));
        }