Browse Source

adds Vector3 support to CurvePath bounding box as discussed in #2157

zz85 13 years ago
parent
commit
25e8b7d87b
1 changed files with 27 additions and 6 deletions
  1. 27 6
      src/extras/core/CurvePath.js

+ 27 - 6
src/extras/core/CurvePath.js

@@ -140,15 +140,17 @@ THREE.CurvePath.prototype.getBoundingBox = function () {
 
 	var points = this.getPoints();
 
-	var maxX, maxY;
-	var minX, minY;
+	var maxX, maxY, maxZ;
+	var minX, minY, minZ;
 
 	maxX = maxY = Number.NEGATIVE_INFINITY;
 	minX = minY = Number.POSITIVE_INFINITY;
 
 	var p, i, il, sum;
 
-	sum = new THREE.Vector2();
+	var v3 = points[0] instanceof THREE.Vector3;
+
+	sum = v3 ? new THREE.Vector3() : new THREE.Vector2();
 
 	for ( i = 0, il = points.length; i < il; i ++ ) {
 
@@ -160,20 +162,39 @@ THREE.CurvePath.prototype.getBoundingBox = function () {
 		if ( p.y > maxY ) maxY = p.y;
 		else if ( p.y < minY ) minY = p.y;
 
-		sum.addSelf( p.x, p.y );
+		if (v3) {
+
+			if ( p.z > maxZ ) maxZ = p.z;
+			else if ( p.z < minZ ) minZ = p.z;
+
+			sum.addSelf( p.x, p.y, p.z );
+
+		} else {
 
+			sum.addSelf( p.x, p.y );
+
+		}
 	}
 
-	return {
+	var ret = {
 
 		minX: minX,
 		minY: minY,
 		maxX: maxX,
 		maxY: maxY,
 		centroid: sum.divideScalar( il )
-
+	
 	};
 
+	if (v3) {
+
+		ret.maxZ = maxZ;
+		ret.minZ = minZ;
+	
+	}
+
+	return ret;
+
 };
 
 /**************************************************************