From 82192219f28096d8367ece4828304a58c83b70b0 Mon Sep 17 00:00:00 2001 From: liteng <930372551@qq.com> Date: Mon, 6 Aug 2018 12:12:15 +0800 Subject: [PATCH] BufferGeometrySerializer --- .../geometry/BufferGeometrySerializer.js | 48 ++++++++++--------- .../geometry/GeometrySerializer.js | 44 +++++++++++++---- 2 files changed, 62 insertions(+), 30 deletions(-) diff --git a/ShadowEditor.Web/src/serialization/geometry/BufferGeometrySerializer.js b/ShadowEditor.Web/src/serialization/geometry/BufferGeometrySerializer.js index 72cfad26..6d32f040 100644 --- a/ShadowEditor.Web/src/serialization/geometry/BufferGeometrySerializer.js +++ b/ShadowEditor.Web/src/serialization/geometry/BufferGeometrySerializer.js @@ -13,37 +13,41 @@ BufferGeometrySerializer.prototype.constructor = BufferGeometrySerializer; BufferGeometrySerializer.prototype.toJSON = function (obj) { var json = BaseSerializer.prototype.toJSON.call(this, obj); + json.attributes = obj.attributes; json.boundingBox = obj.boundingBox; json.boundingSphere = obj.boundingSphere; - json.colors = obj.colors; - json.faces = obj.faces; - json.faceVertexUvs = obj.faceVertexUvs; - json.id = obj.id; - json.isGeometry = obj.isGeometry; - json.lineDistances = obj.lineDistances; - json.morphTargets = obj.morphTargets; - json.morphNormals = obj.morphNormals; - json.name = geometry.name; - json.skinWeights = obj.skinWeights; - json.skinIndices = obj.skinIndices; + json.drawRange = obj.drawRange; + json.groups = obj.groups; + json.index = obj.index; + json.morphAttributes = obj.morphAttributes; + json.name = obj.name; + json.parameters = obj.parameters; + json.type = obj.type; + json.userData = obj.userData; json.uuid = obj.uuid; - json.vertices = obj.vertices; - json.verticesNeedUpdate = obj.verticesNeedUpdate; - json.elementsNeedUpdate = obj.elementsNeedUpdate; - json.uvsNeedUpdate = obj.uvsNeedUpdate; - json.normalsNeedUpdate = obj.normalsNeedUpdate; - json.colorsNeedUpdate = obj.colorsNeedUpdate; - json.groupsNeedUpdate = obj.groupsNeedUpdate; - json.lineDistancesNeedUpdate = obj.lineDistancesNeedUpdate; - - json.type = geometry.type; - json.userData = geometry.userData; return json; }; BufferGeometrySerializer.prototype.fromJSON = function (json, parent) { + var obj = parent === undefined ? new THREE.BufferGeometry() : parent; + BaseSerializer.prototype.fromJSON.call(this, obj); + + obj.attributes = json.attributes; + obj.boundingBox = json.boundingBox; + obj.boundingSphere = json.boundingSphere; + obj.drawRange = json.drawRange; + obj.groups = json.groups; + obj.index = json.index; + obj.morphAttributes = json.morphAttributes; + obj.name = json.name; + obj.parameters = json.parameters; + obj.type = json.type; + obj.userData = json.userData; + obj.uuid = json.uuid; + + return obj; }; export default BufferGeometrySerializer; \ No newline at end of file diff --git a/ShadowEditor.Web/src/serialization/geometry/GeometrySerializer.js b/ShadowEditor.Web/src/serialization/geometry/GeometrySerializer.js index 8eba393b..8460b5e6 100644 --- a/ShadowEditor.Web/src/serialization/geometry/GeometrySerializer.js +++ b/ShadowEditor.Web/src/serialization/geometry/GeometrySerializer.js @@ -13,17 +13,22 @@ GeometrySerializer.prototype.constructor = GeometrySerializer; GeometrySerializer.prototype.toJSON = function (obj) { var json = BaseSerializer.prototype.toJSON.call(this, obj); + json.type = obj.type; json.boundingBox = obj.boundingBox; json.boundingSphere = obj.boundingSphere; json.colors = obj.colors; + json.colorsNeedUpdate = obj.colorsNeedUpdate; json.faces = obj.faces; json.faceVertexUvs = obj.faceVertexUvs; - json.id = obj.id; + json.groupsNeedUpdate = obj.groupsNeedUpdate; json.isGeometry = obj.isGeometry; json.lineDistances = obj.lineDistances; + json.lineDistancesNeedUpdate = obj.lineDistancesNeedUpdate; json.morphTargets = obj.morphTargets; json.morphNormals = obj.morphNormals; - json.name = geometry.name; + json.name = obj.name; + json.normalsNeedUpdate = obj.normalsNeedUpdate; + json.parameters = obj.parameters; json.skinWeights = obj.skinWeights; json.skinIndices = obj.skinIndices; json.uuid = obj.uuid; @@ -32,18 +37,41 @@ GeometrySerializer.prototype.toJSON = function (obj) { json.elementsNeedUpdate = obj.elementsNeedUpdate; json.uvsNeedUpdate = obj.uvsNeedUpdate; json.normalsNeedUpdate = obj.normalsNeedUpdate; - json.colorsNeedUpdate = obj.colorsNeedUpdate; - json.groupsNeedUpdate = obj.groupsNeedUpdate; - json.lineDistancesNeedUpdate = obj.lineDistancesNeedUpdate; - - json.type = geometry.type; - json.userData = geometry.userData; return json; }; GeometrySerializer.prototype.fromJSON = function (json, parent) { + var obj = parent === undefined ? new THREE.Geometry() : parent; + BaseSerializer.prototype.fromJSON.call(this, obj); + + obj.type = json.type; + obj.boundingBox = json.boundingBox; + obj.boundingSphere = json.boundingSphere; + obj.colors = json.colors; + obj.colorsNeedUpdate = json.colorsNeedUpdate; + obj.faces = json.faces; + obj.faceVertexUvs = json.faceVertexUvs; + obj.groupsNeedUpdate = json.groupsNeedUpdate; + obj.isGeometry = json.isGeometry; + obj.lineDistances = json.lineDistances; + obj.lineDistancesNeedUpdate = json.lineDistancesNeedUpdate; + obj.morphTargets = json.morphTargets; + obj.morphNormals = json.morphNormals; + obj.name = json.name; + obj.normalsNeedUpdate = json.normalsNeedUpdate; + obj.parameters = json.parameters; + obj.skinWeights = json.skinWeights; + obj.skinIndices = json.skinIndices; + obj.uuid = json.uuid; + obj.vertices = json.vertices; + obj.verticesNeedUpdate = json.verticesNeedUpdate; + obj.elementsNeedUpdate = json.elementsNeedUpdate; + obj.uvsNeedUpdate = json.uvsNeedUpdate; + obj.normalsNeedUpdate = json.normalsNeedUpdate; + + return obj; }; export default GeometrySerializer; \ No newline at end of file