2
0
Эх сурвалжийг харах

Editor: More helpers refactoring.
The goal is to remove helpers userData dependency.

Mr.doob 12 жил өмнө
parent
commit
f053fe6edc

+ 21 - 36
editor/js/ui/Viewport.js

@@ -9,7 +9,9 @@ var Viewport = function ( signals ) {
 
 	// helpers
 
-	var helpers = {};
+	var helpersToObjects = {};
+	var objectsToHelpers = {};
+
 	var sceneHelpers = new THREE.Scene();
 
 	var size = 500, step = 25;
@@ -103,23 +105,15 @@ var Viewport = function ( signals ) {
 
 				controls.enabled = false;
 
-				picked = intersects[ 0 ].object;
-
-				var root;
-
-				if ( picked.userData.isGizmo ) {
-
-					root = picked.userData.gizmoRoot;
-					selected = picked.userData.gizmoSubject;
+				selected = intersects[ 0 ].object;
 
-				} else {
+				if ( helpersToObjects[ selected.id ] !== undefined ) {
 
-					root = picked;
-					selected = picked;
+					selected = helpersToObjects[ selected.id ];
 
 				}
 
-				intersectionPlane.position.copy( root.position );
+				intersectionPlane.position.copy( selected.position );
 				intersectionPlane.lookAt( camera.position );
 
 				signals.objectSelected.dispatch( selected );
@@ -160,18 +154,8 @@ var Viewport = function ( signals ) {
 
 			intersects[ 0 ].point.sub( offset );
 
-			if ( picked.userData.isGizmo ) {
-
-				picked.userData.gizmoRoot.position.copy( intersects[ 0 ].point );
-				picked.userData.gizmoSubject.position.copy( intersects[ 0 ].point );
-				signals.objectChanged.dispatch( picked.userData.gizmoSubject );
-
-			} else {
-
-				picked.position.copy( intersects[ 0 ].point );
-				signals.objectChanged.dispatch( picked );
-
-			}
+			selected.position.copy( intersects[ 0 ].point );
+			signals.objectChanged.dispatch( selected );
 
 			render();
 
@@ -205,22 +189,20 @@ var Viewport = function ( signals ) {
 
 				selected = intersects[ 0 ].object;
 
-			} else {
-
-				selected = camera;
-
-			}
+				if ( helpersToObjects[ selected.id ] !== undefined ) {
 
-			if ( selected.userData.isGizmo ) {
+					selected = helpersToObjects[ selected.id ];
 
-				signals.objectSelected.dispatch( selected.userData.gizmoSubject );
+				}
 
 			} else {
 
-				signals.objectSelected.dispatch( selected );
+				selected = camera;
 
 			}
 
+			signals.objectSelected.dispatch( selected );
+
 		}
 
 		controls.enabled = true;
@@ -276,12 +258,15 @@ var Viewport = function ( signals ) {
 
 		if ( object instanceof THREE.PointLight ) {
 
-			var helper = new THREE.PointLightHelper( object, 5 );
+			var helper = new THREE.PointLightHelper( object, 10 );
 
 			sceneHelpers.add( helper );
 			objects.push( helper );
 
-			helpers[ object.id ] = helper;
+			objectsToHelpers[ object.id ] = helper;
+			helpersToObjects[ helper.id ] = object;
+
+			console.lo
 
 		} else if ( object instanceof THREE.DirectionalLight ) {
 
@@ -385,7 +370,7 @@ var Viewport = function ( signals ) {
 
 		} else if ( object instanceof THREE.PointLight ) {
 
-			helpers[ object.id ].update();
+			objectsToHelpers[ object.id ].update();
 
 		} else if ( object instanceof THREE.DirectionalLight ||
 					object instanceof THREE.HemisphereLight ||

+ 1 - 2
src/extras/helpers/PointLightHelper.js

@@ -1,7 +1,6 @@
 /**
  * @author alteredq / http://alteredqualia.com/
- *
- *	- shows point light color, intensity, position and distance
+ * @author mrdoob / http://mrdoob.com/
  */
 
 THREE.PointLightHelper = function ( light, sphereSize ) {