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;
};