From aefb2efe4e2f9d2dcbc36db9a43505435ac5b29a Mon Sep 17 00:00:00 2001 From: tengge1 <930372551@qq.com> Date: Thu, 5 Dec 2019 22:10:50 +0800 Subject: [PATCH] =?UTF-8?q?=E7=82=B9=E6=A0=87=E6=B3=A8=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E8=BD=BD=E5=85=A5=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- .../src/serialization/Converter.js | 7 +++++ .../objects/mark/PointMarkerSerializer.js | 28 +++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 ShadowEditor.Web/src/serialization/objects/mark/PointMarkerSerializer.js diff --git a/README.md b/README.md index e6e1f48f..8997a766 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Supported Languages: 中文 / [繁體中文](README-tw.md) / [English](README-en 3. 修复浏览器窗口缩放后,文件大小发生改变bug。 4. 修复物体平移旋转缩放后,鼠标放到物体上,高亮不准的bug。 5. 移除`d3.js`,不再使用`d3`开发可视化功能,使用`d3-dispatch`代替完整版`d3.js`。 -6. 点标注改为不会缩放的三角形标注。 +6. 点标注改为不会缩放的三角形标注,可以正常保存载入了。 ## v0.3.8更新【[更新日志](docs-dev/update/UpdateLog.md)】 diff --git a/ShadowEditor.Web/src/serialization/Converter.js b/ShadowEditor.Web/src/serialization/Converter.js index 13d8ac6f..7e28a550 100644 --- a/ShadowEditor.Web/src/serialization/Converter.js +++ b/ShadowEditor.Web/src/serialization/Converter.js @@ -47,6 +47,9 @@ import QuadraticBezierCurveSerializer from './line/QuadraticBezierCurveSerialize import CubicBezierCurveSerializer from './line/CubicBezierCurveSerializer'; import EllipseCurveSerializer from './line/EllipseCurveSerializer'; +// mark +import PointMarkerSerializer from './objects/mark/PointMarkerSerializer'; + // gis import GlobeSerializer from './gis/GlobeSerializer'; @@ -175,6 +178,8 @@ Converter.prototype.traverse = function (obj, children, list) { json = new CubicBezierCurveSerializer().toJSON(obj); } else if (obj.userData.type === 'EllipseCurve') { json = new EllipseCurveSerializer().toJSON(obj); + } else if (obj.userData.type === 'PointMarkerSerializer') { + json = new PointMarkerSerializer().toJSON(); } else if (obj.userData.type === 'Globe') { json = new GlobeSerializer().toJSON(obj); } else if (obj instanceof THREE.Scene) { @@ -424,6 +429,8 @@ Converter.prototype.parse = function (jsons, options) { parts.push(new EllipseCurveSerializer().fromJSON(n)); } else if (generator === 'Object3DSerializer') { parts.push(new Object3DSerializer().fromJSON(n)); + } else if (generator === 'PointMarkerSerializer') { + parts.push(new PointMarkerSerializer.fromJSON(n)); } else { console.warn(`Converter: No Deserializer with ${generator}.`); } diff --git a/ShadowEditor.Web/src/serialization/objects/mark/PointMarkerSerializer.js b/ShadowEditor.Web/src/serialization/objects/mark/PointMarkerSerializer.js new file mode 100644 index 00000000..1d785466 --- /dev/null +++ b/ShadowEditor.Web/src/serialization/objects/mark/PointMarkerSerializer.js @@ -0,0 +1,28 @@ +import BaseSerializer from '../../BaseSerializer'; +import Object3DSerializer from '../../core/Object3DSerializer'; +import PointMarker from '../../../object/mark/PointMarker'; + +/** + * PointMarkerSerializer + * @author tengge / https://github.com/tengge1 + */ +function PointMarkerSerializer() { + BaseSerializer.call(this); +} + +PointMarkerSerializer.prototype = Object.create(BaseSerializer.prototype); +PointMarkerSerializer.prototype.constructor = PointMarkerSerializer; + +PointMarkerSerializer.prototype.toJSON = function (obj) { + return Object3DSerializer.prototype.toJSON.call(this, obj); +}; + +PointMarkerSerializer.prototype.fromJSON = function (json, parent) { + var obj = new PointMarker(json.userData.text); + + Object3DSerializer.prototype.fromJSON.call(this, json, obj); + + return obj; +}; + +export default PointMarkerSerializer; \ No newline at end of file