Ver Fonte

Add rayIntersection to h2d.Bounds

Leonardo Jeanteur há 2 anos atrás
pai
commit
4d74ec822c
1 ficheiros alterados com 19 adições e 0 exclusões
  1. 19 0
      h2d/col/Bounds.hx

+ 19 - 0
h2d/col/Bounds.hx

@@ -66,6 +66,25 @@ class Bounds implements Collider {
 		return p.x >= xMin && p.x < xMax && p.y >= yMin && p.y < yMax;
 	}
 
+	public function rayIntersection( r : Ray ) : Float {
+		var minTx = (xMin - r.px) / r.lx;
+		var minTy = (yMin - r.py) / r.ly;
+		var maxTx = (xMax - r.px) / r.lx;
+		var maxTy = (yMax - r.py) / r.ly;
+
+		var realMinTx = Math.min(minTx, maxTx);
+		var realMinTy = Math.min(minTy, maxTy);
+		var realMaxTx = Math.max(minTx, maxTx);
+		var realMaxTy = Math.max(minTy, maxTy);
+
+		var minmax = Math.min(realMaxTx, realMaxTy);
+		var maxmin = Math.max(realMinTx, realMinTy);
+
+		if(minmax < maxmin)	return -1;
+
+		return maxmin;
+	}
+
 	/**
 	 * Same as distance but does not perform sqrt
 	 */