浏览代码

Merge pull request #17739 from Mugen87/dev11

ParametricGeometry: Added serialization/deserialization support.
Michael Herzog 5 年之前
父节点
当前提交
d16f875bc4
共有 2 个文件被更改,包括 32 次插入0 次删除
  1. 19 0
      src/geometries/ParametricGeometry.js
  2. 13 0
      src/loaders/ObjectLoader.js

+ 19 - 0
src/geometries/ParametricGeometry.js

@@ -33,6 +33,16 @@ function ParametricGeometry( func, slices, stacks ) {
 ParametricGeometry.prototype = Object.create( Geometry.prototype );
 ParametricGeometry.prototype.constructor = ParametricGeometry;
 
+ParametricGeometry.prototype.toJSON = function () {
+
+	var data = Geometry.prototype.toJSON.call( this );
+
+	data.func = this.parameters.func.toString();
+
+	return data;
+
+};
+
 // ParametricBufferGeometry
 
 function ParametricBufferGeometry( func, slices, stacks ) {
@@ -159,5 +169,14 @@ function ParametricBufferGeometry( func, slices, stacks ) {
 ParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype );
 ParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry;
 
+ParametricBufferGeometry.prototype.toJSON = function () {
+
+	var data = BufferGeometry.prototype.toJSON.call( this );
+
+	data.func = this.parameters.func.toString();
+
+	return data;
+
+};
 
 export { ParametricGeometry, ParametricBufferGeometry };

+ 13 - 0
src/loaders/ObjectLoader.js

@@ -408,6 +408,19 @@ ObjectLoader.prototype = Object.assign( Object.create( Loader.prototype ), {
 
 						break;
 
+					case 'ParametricGeometry':
+					case 'ParametricBufferGeometry':
+
+						var func = new Function( 'return ' + data.func )();
+
+						geometry = new Geometries[ data.type ](
+							func,
+							data.slices,
+							data.stacks
+						);
+
+						break;
+
 					case 'BufferGeometry':
 					case 'InstancedBufferGeometry':