Browse Source

Merge pull request #10364 from unconed/gltf-userdata-extras

GLTF extras as Object3D::userData
Mr.doob 8 years ago
parent
commit
d2bdb0427b
1 changed files with 15 additions and 0 deletions
  1. 15 0
      examples/js/loaders/GLTFLoader.js

+ 15 - 0
examples/js/loaders/GLTFLoader.js

@@ -1154,6 +1154,8 @@ THREE.GLTFLoader = ( function () {
 				var group = new THREE.Object3D();
 				group.name = mesh.name;
 
+				if ( mesh.extras ) group.userData = mesh.extras;
+
 				var primitives = mesh.primitives;
 
 				for ( var name in primitives ) {
@@ -1226,6 +1228,8 @@ THREE.GLTFLoader = ( function () {
 						var meshNode = new THREE.Mesh( geometry, material );
 						meshNode.castShadow = true;
 
+						if ( primitive.extras ) meshNode.userData = primitive.extras;
+
 						group.add( meshNode );
 
 					} else {
@@ -1267,6 +1271,8 @@ THREE.GLTFLoader = ( function () {
 				var _camera = new THREE.PerspectiveCamera( THREE.Math.radToDeg( xfov ), aspect_ratio, camera.perspective.znear || 1, camera.perspective.zfar || 2e6 );
 				_camera.name = camera.name;
 
+				if ( camera.extras ) _camera.userData = camera.extras;
+
 				return _camera;
 
 			} else if ( camera.type == "orthographic" && camera.orthographic ) {
@@ -1274,6 +1280,8 @@ THREE.GLTFLoader = ( function () {
 				var _camera = new THREE.OrthographicCamera( window.innerWidth / - 2, window.innerWidth / 2, window.innerHeight / 2, window.innerHeight / - 2, camera.orthographic.znear, camera.orthographic.zfar );
 				_camera.name = camera.name;
 
+				if ( camera.extras ) _camera.userData = camera.extras;
+
 				return _camera;
 
 			}
@@ -1390,6 +1398,8 @@ THREE.GLTFLoader = ( function () {
 
 			_node.name = node.name;
 
+			if ( node.extras ) _node.userData = node.extras;
+
 			_node.matrixAutoUpdate = false;
 
 			if ( node.matrix !== undefined ) {
@@ -1451,6 +1461,7 @@ THREE.GLTFLoader = ( function () {
 
 								var originalMaterial = child.material;
 								var originalGeometry = child.geometry;
+								var originalUserData = child.userData;
 
 								var material;
 
@@ -1466,6 +1477,7 @@ THREE.GLTFLoader = ( function () {
 
 								child = new THREE.Mesh( originalGeometry, material );
 								child.castShadow = true;
+								child.userData = originalUserData;
 
 								var skinEntry;
 
@@ -1484,6 +1496,7 @@ THREE.GLTFLoader = ( function () {
 
 									child = new THREE.SkinnedMesh( geometry, material, false );
 									child.castShadow = true;
+									child.userData = originalUserData;
 
 									var bones = [];
 									var boneInverses = [];
@@ -1667,6 +1680,8 @@ THREE.GLTFLoader = ( function () {
 				var _scene = new THREE.Scene();
 				_scene.name = scene.name;
 
+				if ( scene.extras ) _scene.userData = scene.extras;
+
 				var nodes = scene.nodes;
 
 				for ( var i = 0, l = nodes.length; i < l; i ++ ) {