SIMDPrototyping.Trees.BoundingBoxWide.Intersects C# (CSharp) Method

Intersects() private method

private Intersects ( BoundingBoxWide &a, BoundingBoxWide &b, Vector &intersectionMask ) : void
a BoundingBoxWide
b BoundingBoxWide
intersectionMask Vector
return void
        public static unsafe void Intersects(ref BoundingBoxWide a, ref BoundingBoxWide b, out Vector<int> intersectionMask)
        {
            //If any minimum exceeds the other maximum, there can be no collision.
            //On the flipside, if the all minimums are less than the opposing maximums, then they must be colliding.
            var c1X = Vector.LessThanOrEqual(a.Min.X, b.Max.X);
            var c1Y = Vector.LessThanOrEqual(a.Min.Y, b.Max.Y);
            var c1Z = Vector.LessThanOrEqual(a.Min.Z, b.Max.Z);
            var c2X = Vector.LessThanOrEqual(b.Min.X, a.Max.X);
            var c2Y = Vector.LessThanOrEqual(b.Min.Y, a.Max.Y);
            var c2Z = Vector.LessThanOrEqual(b.Min.Z, a.Max.Z);
            var or1 = Vector.BitwiseAnd(c1X, c1Y);
            var or2 = Vector.BitwiseAnd(c1Z, c2X);
            var or3 = Vector.BitwiseAnd(c2Y, c2Z);
            var or4 = Vector.BitwiseAnd(or1, or2);
            intersectionMask = Vector.BitwiseAnd(or3, or4);
        }