From 7a6fb8dade0ffec3fc6ee4d53d8d270ca8d4446d Mon Sep 17 00:00:00 2001 From: liteng <930372551@qq.com> Date: Thu, 23 Aug 2018 20:18:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=BA=E6=99=AF=E5=8A=A0=E8=BD=BD=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E4=BB=A3=E7=A0=81=E7=AE=80=E5=8C=96=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/serialization/core/ServerObject.js | 136 ++---------------- 1 file changed, 9 insertions(+), 127 deletions(-) diff --git a/ShadowEditor.Web/src/serialization/core/ServerObject.js b/ShadowEditor.Web/src/serialization/core/ServerObject.js index cfba9264..8afb8a40 100644 --- a/ShadowEditor.Web/src/serialization/core/ServerObject.js +++ b/ShadowEditor.Web/src/serialization/core/ServerObject.js @@ -1,5 +1,6 @@ import BaseSerializer from '../BaseSerializer'; import Object3DSerializer from './Object3DSerializer'; +import ModelLoader from '../../loader/ModelLoader'; /** * ServerObject @@ -20,136 +21,17 @@ ServerObject.prototype.toJSON = function (obj) { ServerObject.prototype.fromJSON = function (json) { var type = json.userData.Type; - return new Promise((resolve, reject) => { - if (type === 'amf') { - var loader = new THREE.AMFLoader(); - loader.load(this.app.options.server + json.userData.Url, (group) => { - Object3DSerializer.prototype.fromJSON.call(this, json, group); - resolve(group); - }); - } else if (type === 'binary') { - var loader = new THREE.BinaryLoader(); - - loader.load(this.app.options.server + json.userData.Url, (geometry, materials) => { - var mesh = new THREE.Mesh(geometry, materials); - - Object3DSerializer.prototype.fromJSON.call(this, json, mesh); - resolve(mesh); - }); - } else if (type === 'awd') { - var loader = new THREE.AWDLoader(); - - loader.load(this.app.options.server + json.userData.Url, (obj3d) => { - Object3DSerializer.prototype.fromJSON.call(this, json, obj3d); - resolve(obj3d); - }); - } else if (type === 'babylon') { - var loader = new THREE.BabylonLoader(); - - loader.load(this.app.options.server + json.userData.Url, (scene) => { - var obj3d = new THREE.Object3D(); - Object3DSerializer.prototype.fromJSON.call(this, json, obj3d); - obj3d.children = scene.children; - resolve(obj3d); - }); - } else if (type === 'ctm') { - var loader = new THREE.CTMLoader(); - - loader.load(this.app.options.server + json.userData.Url, (geometry) => { - var material = new THREE.MeshStandardMaterial(); - var mesh = new THREE.Mesh(geometry, material); - Object3DSerializer.prototype.fromJSON.call(this, json, mesh); - resolve(mesh); - }); - } else if (type === 'dae') { - var loader = new THREE.ColladaLoader(); - - loader.load(this.app.options.server + json.userData.Url, (collada) => { - var obj3d = collada.scene; - Object3DSerializer.prototype.fromJSON.call(this, json, obj3d); - resolve(obj3d); - }); - } else if (type === 'fbx') { - var loader = new THREE.FBXLoader(); - - loader.load(this.app.options.server + json.userData.Url, (obj3d) => { - Object3DSerializer.prototype.fromJSON.call(this, json, obj3d); - resolve(obj3d); - }); - } else if (type === 'glb' || type === 'gltf') { - var loader = new THREE.GLTFLoader(); - - loader.load(this.app.options.server + json.userData.Url, (result) => { - var obj3d = result.scene; - Object3DSerializer.prototype.fromJSON.call(this, json, obj3d); - resolve(obj3d); - }); - } else if (type === 'kmz') { - var loader = new THREE.KMZLoader(); - - loader.load(this.app.options.server + json.userData.Url, (collada) => { - var obj3d = collada.scene; - Object3DSerializer.prototype.fromJSON.call(this, json, obj3d); - resolve(obj3d); - }); - } else if (type === 'ply') { - var loader = new THREE.PLYLoader(); - - loader.load(this.app.options.server + json.userData.Url, (geometry) => { - var material = new THREE.MeshStandardMaterial(); - var mesh = new THREE.Mesh(geometry, material); - Object3DSerializer.prototype.fromJSON.call(this, json, mesh); - resolve(mesh); - }); - } else if (type === 'obj') { - var loader = new THREE.OBJLoader(); - - loader.load(this.app.options.server + json.userData.Url, (obj) => { + return new Promise(resolve => { + var loader = new ModelLoader(this.app); + loader.load(this.app.options.server + json.userData.Url).then(obj => { + if (obj) { Object3DSerializer.prototype.fromJSON.call(this, json, obj); resolve(obj); - }); - } else if (type === 'md2') { - var loader = new THREE.MD2Loader(); - - loader.load(this.app.options.server + json.userData.Url, (geometry) => { - var material = new THREE.MeshStandardMaterial({ - morphTargets: true, - morphNormals: true - }); - - var mesh = new THREE.Mesh(geometry, material); - mesh.mixer = new THREE.AnimationMixer(mesh); - - Object3DSerializer.prototype.fromJSON.call(this, json, mesh); - resolve(mesh); - }); - } else if (type === 'stl') { - var loader = new THREE.STLLoader(); - - loader.load(this.app.options.server + json.userData.Url, (geometry) => { - var material = new THREE.MeshStandardMaterial(); - var mesh = new THREE.Mesh(geometry, material); - Object3DSerializer.prototype.fromJSON.call(this, json, mesh); - resolve(mesh); - }); - } else if (type === 'vtk') { - var loader = new THREE.VTKLoader(); - - loader.load(this.app.options.server + json.userData.Url, (geometry) => { - var material = new THREE.MeshStandardMaterial(); - var mesh = new THREE.Mesh(geometry, material); - Object3DSerializer.prototype.fromJSON.call(this, json, mesh); - resolve(mesh); - }); - } else { - console.warn(`MeshSerializer: 未知模型类型${type}。`); - resolve(null); - } + } else { + resolve(null); + } + }); }); - - Object3DSerializer.prototype.fromJSON.call(this, json, obj); - - return obj; }; export default ServerObject; \ No newline at end of file