diff --git a/ShadowEditor.Web/assets/js/three.js b/ShadowEditor.Web/assets/js/three.js index 79f72980..81156a20 100644 --- a/ShadowEditor.Web/assets/js/three.js +++ b/ShadowEditor.Web/assets/js/three.js @@ -8720,8 +8720,12 @@ if ( this.normalMap && this.normalMap.isTexture ) { data.normalMap = this.normalMap.toJSON( meta ).uuid; - data.normalMapType = this.normalMapType; - data.normalScale = this.normalScale.toArray(); + if(this.normalMapType) { + data.normalMapType = this.normalMapType; + } + if(this.normalScale) { + data.normalScale = this.normalScale.toArray(); + } } diff --git a/ShadowEditor.Web/src/editor/component/MaterialComponent.jsx b/ShadowEditor.Web/src/editor/component/MaterialComponent.jsx index 210061a0..966ef8e5 100644 --- a/ShadowEditor.Web/src/editor/component/MaterialComponent.jsx +++ b/ShadowEditor.Web/src/editor/component/MaterialComponent.jsx @@ -224,7 +224,7 @@ class MaterialComponent extends React.Component { - + @@ -319,7 +319,7 @@ class MaterialComponent extends React.Component { if (material.specular !== undefined) { state.showSpecular = true; - state.specular = `#${material.specular.getHexString()}`; + state.specular = `#${material.specular}`; } else { state.showSpecular = false; } @@ -547,8 +547,8 @@ class MaterialComponent extends React.Component { editor.execute(new SetMaterialColorCommand(object, 'emissive', emissive)); } - if (material.specular !== undefined && `#${material.specular.getHexString()}` !== specular) { - editor.execute(new SetMaterialColorCommand(object, 'specular', specular)); + if (material.specular !== undefined && `#${material.specular}` !== specular) { + editor.execute(new SetMaterialValueCommand(object, 'specular', specular)); } if (material.shininess !== undefined && Math.abs(material.shininess - shininess) >= 0.01) { diff --git a/ShadowEditor.Web/src/serialization/material/MaterialSerializer.js b/ShadowEditor.Web/src/serialization/material/MaterialSerializer.js index f24134fc..3b8e34d4 100644 --- a/ShadowEditor.Web/src/serialization/material/MaterialSerializer.js +++ b/ShadowEditor.Web/src/serialization/material/MaterialSerializer.js @@ -44,6 +44,14 @@ MaterialSerializer.prototype.toJSON = function (obj) { json.emissive = obj.emissive; json.emissiveIntensity = obj.emissiveIntensity; json.emissiveMap = obj.emissiveMap == null ? null : (new TexturesSerializer()).toJSON(obj.emissiveMap); + + if (obj.specular !== undefined) { + json.specular = obj.specular; + } + if (obj.specularMap !== undefined) { + json.specularMap = (new TexturesSerializer()).toJSON(obj.specularMap); + } + json.envMap = obj.envMap == null ? null : (new TexturesSerializer()).toJSON(obj.envMap); json.envMapIntensity = obj.envMapIntensity; json.flatShading = obj.flatShading; @@ -117,6 +125,14 @@ MaterialSerializer.prototype.fromJSON = function (json, parent, server) { obj.emissive = json.emissive === undefined ? undefined : new THREE.Color(json.emissive); obj.emissiveIntensity = json.emissiveIntensity; obj.emissiveMap = json.emissiveMap == null ? null : (new TexturesSerializer()).fromJSON(json.emissiveMap, undefined, server); + + if (json.specular !== undefined) { + obj.specular = json.specular; + } + if (json.specularMap !== undefined) { + obj.specularMap = (new TexturesSerializer()).toJSON(json.specularMap); + } + obj.envMap = json.envMap == null ? null : (new TexturesSerializer()).fromJSON(json.envMap, undefined, server); obj.envMapIntensity = json.envMapIntensity; obj.flatShading = json.flatShading; diff --git a/ShadowEditor.Web/src/serialization/material/ShaderMaterialSerializer.js b/ShadowEditor.Web/src/serialization/material/ShaderMaterialSerializer.js index 283a5471..3f597ff4 100644 --- a/ShadowEditor.Web/src/serialization/material/ShaderMaterialSerializer.js +++ b/ShadowEditor.Web/src/serialization/material/ShaderMaterialSerializer.js @@ -36,6 +36,8 @@ ShaderMaterialSerializer.prototype.toJSON = function (obj) { json.vertexShader = obj.vertexShader; json.fragmentShader = obj.fragmentShader; + json.extensions = obj.extensions; + return json; }; @@ -64,6 +66,8 @@ ShaderMaterialSerializer.prototype.fromJSON = function (json, parent, server) { obj.vertexShader = json.vertexShader; obj.fragmentShader = json.fragmentShader; + obj.extensions = json.extensions; + return obj; };