Example #1
0
        public override object Clone()
        {
            AABBMask mask = new AABBMask(_point, _w, _h);
            mask._pos = _pos;

            return mask;
        }
Example #2
0
        public static bool TestOverlapEdge(AXLine xlMask, AABBMask rMask)
        {
            VectorFP r1 = (VectorFP)rMask._pos + rMask._point;
            VectorFP r2 = r1 + new VectorFP(rMask._w, rMask._h);

            return !(xlMask.Y > r2.Y || xlMask.Y < r1.Y || xlMask.Left > r2.X || xlMask.Right < r1.X);
        }
Example #3
0
        // AXLine -- [____] Collision + Edge Tests
        public static bool TestOverlapEdge(AXLineMask xlMask, AABBMask rMask)
        {
            FPInt py = xlMask._pos.Y + xlMask._p.Y;
            FPInt px1 = xlMask._pos.X + xlMask._p.X;
            FPInt px2 = px1 + xlMask._w;

            VectorFP r1 = (VectorFP)rMask._pos + rMask._point;
            VectorFP r2 = r1 + new VectorFP(rMask._w, rMask._h);

            return !(py > r2.Y || py < r1.Y || px1 > r2.X || px2 < r1.X);
        }
Example #4
0
        public static bool TestOverlapEdge(PointMask ptMask, AABBMask rMask)
        {
            VectorFP p0 = (VectorFP)ptMask._pos + ptMask._point;

            return TestOverlapEdge(rMask, p0.X, p0.Y);
        }
Example #5
0
        public static bool TestOverlapEdge(AABBMask rMask, FPInt x, FPInt y)
        {
            VectorFP p1 = (VectorFP)rMask._pos + rMask._point;

            return (x >= p1.X && x <= p1.X + rMask._w && y >= p1.Y && y <= p1.Y + rMask._h);
        }
Example #6
0
 public static bool TestOverlap(TriangleMask triMask, AABBMask rMask)
 {
     return TestOverlap(rMask, triMask);
 }
Example #7
0
        public static bool TestOverlap(AYLineMask ylMask, AABBMask rMask)
        {
            FPInt px = ylMask._pos.X + ylMask._p.X;
            FPInt py1 = ylMask._pos.Y + ylMask._p.Y;
            FPInt py2 = py1 + ylMask._h;

            VectorFP r1 = (VectorFP)rMask._pos + rMask._point;
            VectorFP r2 = r1 + new VectorFP(rMask._w, rMask._h);

            return !(px >= r2.X || px <= r1.X || py1 >= r2.Y || py2 <= r1.Y);
        }
Example #8
0
 public static bool TestOverlapEdge(AABBMask rMask, AYLine ylMask)
 {
     return TestOverlapEdge(ylMask, rMask);
 }
Example #9
0
 public static bool TestOverlap(AABBMask rMask, LineMask lnMask)
 {
     return TestOverlap(lnMask, rMask);
 }
Example #10
0
 public static bool TestOverlap(AABBMask rMask, AYLineMask ylMask)
 {
     return TestOverlap(ylMask, rMask);
 }
Example #11
0
 public static bool TestOverlap(AABBMask rMask, AXLineMask xlMask)
 {
     return TestOverlap(xlMask, rMask);
 }
Example #12
0
 public static bool TestOverlap(AABBMask rMask, CircleMask cMask)
 {
     return TestOverlap(cMask, rMask);
 }
Example #13
0
 // AABB -- [____] Collision Tests
 public static bool TestOverlap(AABBMask rMask, PointMask ptMask)
 {
     return TestOverlap(ptMask, rMask);
 }
Example #14
0
        public static bool TestOverlap(LineMask lnMask, AABBMask rMask)
        {
            VectorFP p0 = (VectorFP)lnMask._pos + lnMask._p0;
            VectorFP p1 = new VectorFP(p0.X + lnMask._w, p0.Y + lnMask._h);

            return rMask.IntersectsLine(p0, p1);
        }
Example #15
0
        // AYLine -- [____] Collision + Edge Tests
        public static bool TestOverlapEdge(AYLine ylMask, AABBMask rMask)
        {
            VectorFP r1 = (VectorFP)rMask._pos + rMask._point;
            VectorFP r2 = r1 + new VectorFP(rMask._w, rMask._h);

            return !(ylMask.Top > r2.Y || ylMask.Bottom < r1.Y || ylMask.X > r2.X || ylMask.X < r1.X);
        }
Example #16
0
 public static bool TestOverlapEdge(AABBMask rMask, AXLine xlMask)
 {
     return TestOverlapEdge(xlMask, rMask);
 }
Example #17
0
        public static bool TestOverlap(AABBMask rMask1, AABBMask rMask2)
        {
            VectorFP p0 = (VectorFP)rMask1._pos + rMask1._point;
            VectorFP p1 = (VectorFP)rMask2._pos + rMask2._point;

            FPInt x1 = p0.X + rMask1._w;
            FPInt x2 = p1.X + rMask2._w;
            FPInt y1 = p0.Y + rMask1._h;
            FPInt y2 = p1.Y + rMask2._h;

            return !(x1 <= p1.X || p0.X >= x2 || y1 <= p1.Y || p0.Y >= y2);
        }
Example #18
0
        public static bool TestOverlap(AABBMask rMask, TriangleMask triMask)
        {
            VectorFP a = (VectorFP)triMask._pos + triMask._p0;
            VectorFP b = (VectorFP)triMask._pos + triMask._p1;
            VectorFP c = (VectorFP)triMask._pos + triMask._p2;

            if (rMask.IntersectsLine(a, b) || rMask.IntersectsLine(b, c) || rMask.IntersectsLine(a, c)) {
                return true;
            }

            VectorFP r = rMask._pos + new VectorFP(rMask._point.X + (rMask._w >> 1), rMask._point.Y + (rMask._h >> 1));
            VectorFP q = triMask.Barycentric(r);

            return (q.X >= 0 && q.Y >= 0 && (q.X + q.Y) <= 1);
        }
Example #19
0
        public static bool TestOverlap(CircleMask cMask, AABBMask rMask)
        {
            VectorFP p0 = (VectorFP)cMask._pos + cMask._p;
            VectorFP p1 = rMask.ClosestPoint(p0);

            FPInt dx = p1.X - p0.X;
            FPInt dy = p1.Y - p0.Y;
            FPInt d2 = dx * dx + dy * dy;
            FPInt r2 = cMask._radius * cMask._radius;

            return (d2 < r2);
        }