public override bool Equals(object other) { if (!(other is INTBOUNDS3)) { return(false); } INTBOUNDS3 bounds = (INTBOUNDS3)other; return(this.min.Equals(bounds.min) && (this.max + INTVECTOR3.one * this.close_max).Equals(bounds.max + INTVECTOR3.one * bounds.close_max)); }
public static INTBOUNDS3 operator *(INTBOUNDS3 lhs, int rhs) { if (lhs.close_max == 0) { return(new INTBOUNDS3(lhs.min * rhs, lhs.max * rhs)); } INTVECTOR3 ofs = new INTVECTOR3(lhs.close_max, lhs.close_max, lhs.close_max); INTBOUNDS3 retval = new INTBOUNDS3(lhs.min * rhs, (lhs.max + ofs) * rhs - ofs); retval.close_max = lhs.close_max; return(retval); }
public static INTBOUNDS3 operator |(INTBOUNDS3 lhs, INTBOUNDS3 rhs) { INTBOUNDS3 retval = new INTBOUNDS3(); int delta = rhs.close_max - lhs.close_max; rhs.close_max = lhs.close_max; rhs.max = rhs.max + INTVECTOR3.one * delta; retval.min.x = lhs.min.x < rhs.min.x ? lhs.min.x : rhs.min.x; retval.min.y = lhs.min.y < rhs.min.y ? lhs.min.y : rhs.min.y; retval.min.z = lhs.min.z < rhs.min.z ? lhs.min.z : rhs.min.z; retval.max.x = lhs.max.x > rhs.max.x ? lhs.max.x : rhs.max.x; retval.max.y = lhs.max.y > rhs.max.y ? lhs.max.y : rhs.max.y; retval.max.z = lhs.max.z > rhs.max.z ? lhs.max.z : rhs.max.z; retval.close_max = lhs.close_max; return(retval); }