Browse Source

Allow tube geometry to be serialized and loaded

Temdog007 6 years ago
parent
commit
f7253b08c1
3 changed files with 41 additions and 2 deletions
  1. 14 1
      src/core/BufferGeometry.js
  2. 14 1
      src/core/Geometry.js
  3. 13 0
      src/loaders/ObjectLoader.js

+ 14 - 1
src/core/BufferGeometry.js

@@ -960,7 +960,20 @@ BufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototy
 
 			for ( var key in parameters ) {
 
-				if ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];
+				var value = parameters[ key ];
+				if ( value !== undefined ) {
+
+					if ( value.toJSON ) {
+
+						data[ key ] = value.toJSON();
+
+					} else {
+
+						data[ key ] = value;
+
+					}
+
+				}
 
 			}
 

+ 14 - 1
src/core/Geometry.js

@@ -988,7 +988,20 @@ Geometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ),
 
 			for ( var key in parameters ) {
 
-				if ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];
+				var value = parameters[ key ];
+				if ( value !== undefined ) {
+
+					if ( value.toJSON ) {
+
+						data[ key ] = value.toJSON();
+
+					} else {
+
+						data[ key ] = value;
+
+					}
+
+				}
 
 			}
 

+ 13 - 0
src/loaders/ObjectLoader.js

@@ -327,6 +327,19 @@ Object.assign( ObjectLoader.prototype, {
 
 						break;
 
+					case 'TubeGeometry':
+					case 'TubeBufferGeometry':
+
+						geometry = new Geometries[ data.type ](
+							new Curves[ data.path.type ]().fromJSON( data.path ),
+							data.tubularSegments,
+							data.radius,
+							data.radialSegments,
+							data.closed
+						);
+
+						break;
+
 					case 'TorusKnotGeometry':
 					case 'TorusKnotBufferGeometry':