Parcourir la source

Fix bug in DirectionalLightHelper

If light.target.properties.targetInverse is false, no targetLine and
targetSphere is created, we can't update their values on update()!
Oliver Sand il y a 12 ans
Parent
commit
82dd6c5a23
1 fichiers modifiés avec 17 ajouts et 7 suppressions
  1. 17 7
      src/extras/helpers/DirectionalLightHelper.js

+ 17 - 7
src/extras/helpers/DirectionalLightHelper.js

@@ -72,6 +72,11 @@ THREE.DirectionalLightHelper = function ( light, sphereSize ) {
 		this.targetLine = new THREE.Line( lineGeometry, lineMaterial );
 		this.targetLine.properties.isGizmo = true;
 
+	}
+	else {
+
+		this.targetSphere = null;
+
 	}
 
 	//
@@ -99,16 +104,21 @@ THREE.DirectionalLightHelper.prototype.update = function () {
 	this.lightSphere.material.color.copy( this.color );
 	this.lightRays.material.color.copy( this.color );
 
-	this.targetSphere.material.color.copy( this.color );
-	this.targetLine.material.color.copy( this.color );
+	// Only update targetSphere and targetLine if available
+	if ( this.targetSphere ) {
 
-	// update target line vertices
+		this.targetSphere.material.color.copy( this.color );
+		this.targetLine.material.color.copy( this.color );
 
-	this.targetLine.geometry.vertices[ 0 ].copy( this.light.position );
-	this.targetLine.geometry.vertices[ 1 ].copy( this.light.target.position );
+		// update target line vertices
 
-	this.targetLine.geometry.computeLineDistances();
-	this.targetLine.geometry.verticesNeedUpdate = true;
+		this.targetLine.geometry.vertices[ 0 ].copy( this.light.position );
+		this.targetLine.geometry.vertices[ 1 ].copy( this.light.target.position );
+
+		this.targetLine.geometry.computeLineDistances();
+		this.targetLine.geometry.verticesNeedUpdate = true;
+
+	}
 
 }