public override object Clone() { LineMask mask = new LineMask(_p0, _w, _h); mask._pos = _pos; return mask; }
public static bool TestOverlapEdge(PointMask ptMask, LineMask lnMask) { VectorFP p1 = (VectorFP)ptMask._pos + ptMask._point; return TestOverlapEdge(lnMask, p1.X, p1.Y); }
public static bool TestOverlapEdge(LineMask lnMask, FPInt x, FPInt y) { PointFP cp = lnMask.ClosestPoint(new PointFP(x, y)); return x == cp.X && y == cp.Y; }
public static bool TestOverlap(TriangleMask triMask, LineMask lnMask) { return TestOverlap(lnMask, triMask); }
public static bool TestOverlap(PointMask ptMask, LineMask lnMask) { return false; }
public static bool TestOverlap(AABBMask rMask, LineMask lnMask) { return TestOverlap(lnMask, rMask); }
public static bool TestOverlap(LineMask lnMask, TriangleMask triMask) { VectorFP a = (VectorFP)triMask._pos + triMask._p0; VectorFP b = (VectorFP)triMask._pos + triMask._p1; VectorFP c = (VectorFP)triMask._pos + triMask._p2; //TestResult t = lnMask.LineIntersect(a, b); if (lnMask.IntersectsLine(a, b) || lnMask.IntersectsLine(b, c) || lnMask.IntersectsLine(a, c)) { return true; } // Check for containment VectorFP r = triMask.Barycentric((VectorFP)lnMask._pos + lnMask._p0); return (r.X >= 0 && r.Y >= 0 && (r.X + r.Y) <= 1); }
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); }
public static bool TestOverlap(LineMask lnMask1, LineMask lnMask2) { VectorFP a = (VectorFP)lnMask1._pos + lnMask1._p0; VectorFP b = a + new VectorFP(lnMask1._w, lnMask1._h); return lnMask2.IntersectsLine(a, b); }
public static bool TestOverlap(LineMask lnMask, AYLine ylMask) { return TestOverlap(ylMask, lnMask); }
public static bool TestOverlap(LineMask lnMask, AXLine xlMask) { return TestOverlap(xlMask, lnMask); }
public static bool TestOverlap(LineMask lnMask, CircleMask cMask) { return TestOverlap(cMask, lnMask); }
// Line -- [____] Collision Tests public static bool TestOverlap(LineMask lnMask, PointMask ptMask) { return TestOverlap(ptMask, lnMask); }
public static bool TestOverlap(AYLine ylMask, LineMask lnMask) { VectorFP c = (VectorFP)lnMask._pos + lnMask._p0; VectorFP d = c + new VectorFP(lnMask._w, lnMask._h); return ylMask.IntersectsLine(c, d); }
public static bool TestOverlap(CircleMask cMask, LineMask lnMask) { VectorFP c = (VectorFP)cMask._pos + cMask._p; VectorFP p = lnMask.ClosestPoint(c); p = p - c; FPInt p2 = p.LengthSquared(); FPInt r2 = cMask._radius * cMask._radius; return (p2 < r2); }