public bool _intersectWith(Rect2I nRect) { Point2I lt0_ = this._getPoint(); Point2I lb0_ = this._getLBPoint(); Point2I rt0_ = this._getRTPoint(); Point2I rb0_ = this._getRBPoint(); if (nRect._contain(lt0_)) { return true; } if (nRect._contain(lb0_)) { return true; } if (nRect._contain(rt0_)) { return true; } if (nRect._contain(rb0_)) { return true; } Point2I lt1_ = nRect._getPoint(); Point2I lb1_ = nRect._getLBPoint(); Point2I rt1_ = nRect._getRTPoint(); Point2I rb1_ = nRect._getRBPoint(); if (this._contain(lt1_)) { return true; } if (this._contain(lb1_)) { return true; } if (this._contain(rt1_)) { return true; } if (this._contain(rb1_)) { return true; } int x00_ = this._getX(); int y00_ = this._getY(); int x01_ = this._getRTX(); int y01_ = this._getLBY(); int x10_ = nRect._getX(); int y10_ = nRect._getY(); int x11_ = nRect._getRTX(); int y11_ = nRect._getLBY(); if (x00_ < x10_ && x01_ > x11_ && y00_ > y10_ && y01_ < y11_) { return true; } if (x00_ > x10_ && x01_ < x11_ && y00_ < y10_ && y01_ > y11_) { return true; } return false; }