Ejemplo n.º 1
0
	double MaxMoveOnYclip(const AABB& boxA, const AABB& boxB, double movedist){
		//用boxA去撞boxB,别搞反了 (这好像是句废话)
		if (!(inXclip(boxA, boxB) && inZclip(boxA, boxB))) return movedist;
		else if (boxA.ymin >= boxB.ymax && movedist < 0.0) return max(boxB.ymax - boxA.ymin, movedist);
		else if (boxA.ymax <= boxB.ymin && movedist > 0.0) return min(boxB.ymin - boxA.ymax, movedist);
		//assert(false);
		return !stuck ? movedist : 0.0;
	}
Ejemplo n.º 2
0
	double MaxMoveOnYclip(AABB boxA, AABB boxB, double movedist){
		//用boxA去撞boxB,别搞反了 (这好像是句废话)
		double ret = 0.0;
		if (!(inXclip(boxA, boxB) && inZclip(boxA, boxB))){
			ret = movedist;
		}
		else if (boxA.ymin >= boxB.ymax && movedist < 0.00) {
			ret = boxB.ymax - boxA.ymin;
			if (ret<movedist) ret = movedist;
		}
		else if (boxA.ymax <= boxB.ymin && movedist > 0.0) {
			ret = boxB.ymin - boxA.ymax;
			if (ret > movedist) ret = movedist;
		}
		else{
			if (!stuck) ret = movedist;
			else ret = 0.0;
		}
		return ret;
	}
Ejemplo n.º 3
0
	double MaxMoveOnXclip(const AABB& boxA, const AABB& boxB, double movedist){
		//用boxA去撞boxB,别搞反了
		double ret = 0.0;
		if (!(inYclip(boxA, boxB) && inZclip(boxA, boxB))){
			ret = movedist;
		}
		else if (boxA.xmin >= boxB.xmax && movedist < 0.00) {
			ret = boxB.xmax - boxA.xmin;
			if (ret<movedist) ret = movedist;
		}
		else if (boxA.xmax <= boxB.xmin && movedist > 0.0) {
			ret = boxB.xmin - boxA.xmax;
			if (ret > movedist) ret = movedist;
		}
		else{
			if (!stuck) ret = movedist;
			else ret = 0.0;
		}
		return ret;
	}
Ejemplo n.º 4
0
	bool Hit(AABB boxA, AABB boxB){
		return inXclip(boxA, boxB) && inYclip(boxA, boxB) && inZclip(boxA, boxB);
	}
Ejemplo n.º 5
0
	bool Hit(const AABB& boxA, const AABB& boxB){
		return inXclip(boxA, boxB) && inYclip(boxA, boxB) && inZclip(boxA, boxB);
	}