Browse Source

sprite.raycast refact&add comment

06wj 7 years ago
parent
commit
ec65c8f0fa
1 changed files with 6 additions and 5 deletions
  1. 6 5
      src/objects/Sprite.js

+ 6 - 5
src/objects/Sprite.js

@@ -44,8 +44,9 @@ Sprite.prototype = Object.assign( Object.create( Object3D.prototype ), {
 		function transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {
 		function transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {
 
 
 			// compute position in camera space
 			// compute position in camera space
-			alignedPosition.set( ( vertexPosition.x - center.x ) * scale.x, ( vertexPosition.y - center.y ) * scale.y );
+			alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );
 
 
+			// to check if rotation is not zero
 			if ( sin !== undefined ) {
 			if ( sin !== undefined ) {
 
 
 				rotatedPosition.x = ( cos * alignedPosition.x ) - ( sin * alignedPosition.y );
 				rotatedPosition.x = ( cos * alignedPosition.x ) - ( sin * alignedPosition.y );
@@ -84,9 +85,9 @@ Sprite.prototype = Object.assign( Object.create( Object3D.prototype ), {
 
 
 			var center = this.center;
 			var center = this.center;
 
 
-			transformVertex( vA.set( 0, 0, 1 ), mvPosition, center, worldScale, sin, cos );
-			transformVertex( vB.set( 0, 1, 1 ), mvPosition, center, worldScale, sin, cos );
-			transformVertex( vC.set( 1, 0, 1 ), mvPosition, center, worldScale, sin, cos );
+			transformVertex( vA.set( - 0.5, - 0.5, 0 ), mvPosition, center, worldScale, sin, cos );
+			transformVertex( vB.set( - 0.5, 0.5, 0 ), mvPosition, center, worldScale, sin, cos );
+			transformVertex( vC.set( 0.5, - 0.5, 0 ), mvPosition, center, worldScale, sin, cos );
 
 
 			// check first triangle
 			// check first triangle
 			var intersect = raycaster.ray.intersectTriangle( vA, vB, vC, false, intersectPoint );
 			var intersect = raycaster.ray.intersectTriangle( vA, vB, vC, false, intersectPoint );
@@ -94,7 +95,7 @@ Sprite.prototype = Object.assign( Object.create( Object3D.prototype ), {
 			if ( intersect === null ) {
 			if ( intersect === null ) {
 
 
 				// check second triangle
 				// check second triangle
-				transformVertex( vA.set( 1, 1, 1 ), mvPosition, center, worldScale, sin, cos );
+				transformVertex( vA.set( 0.5, 0.5, 0 ), mvPosition, center, worldScale, sin, cos );
 				intersect = raycaster.ray.intersectTriangle( vA, vB, vC, false, intersectPoint );
 				intersect = raycaster.ray.intersectTriangle( vA, vB, vC, false, intersectPoint );
 				if ( intersect === null ) {
 				if ( intersect === null ) {