|
@@ -164,6 +164,7 @@ class ObjectLoader extends Loader {
|
|
|
const skeletons = this.parseSkeletons( json.skeletons, object );
|
|
|
|
|
|
this.bindSkeletons( object, skeletons );
|
|
|
+ this.bindLightTargets( object );
|
|
|
|
|
|
//
|
|
|
|
|
@@ -834,6 +835,7 @@ class ObjectLoader extends Loader {
|
|
|
case 'DirectionalLight':
|
|
|
|
|
|
object = new DirectionalLight( data.color, data.intensity );
|
|
|
+ object.target = data.target || '';
|
|
|
|
|
|
break;
|
|
|
|
|
@@ -852,6 +854,7 @@ class ObjectLoader extends Loader {
|
|
|
case 'SpotLight':
|
|
|
|
|
|
object = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );
|
|
|
+ object.target = data.target || '';
|
|
|
|
|
|
break;
|
|
|
|
|
@@ -1124,6 +1127,32 @@ class ObjectLoader extends Loader {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ bindLightTargets( object ) {
|
|
|
+
|
|
|
+ object.traverse( function ( child ) {
|
|
|
+
|
|
|
+ if ( child.isDirectionalLight || child.isSpotLight ) {
|
|
|
+
|
|
|
+ const uuid = child.target;
|
|
|
+
|
|
|
+ const target = object.getObjectByProperty( 'uuid', uuid );
|
|
|
+
|
|
|
+ if ( target !== undefined ) {
|
|
|
+
|
|
|
+ child.target = target;
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+ child.target = new Object3D();
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ } );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
const TEXTURE_MAPPING = {
|