Pārlūkot izejas kodu

Add serialization of properties

Popov72 5 gadi atpakaļ
vecāks
revīzija
dc5af26e25

+ 15 - 0
src/Materials/Node/Blocks/Fragment/PBR/ambientOcclusionBlock.ts

@@ -9,6 +9,7 @@ import { editableInPropertyPage, PropertyTypeForEdition } from "../../../nodeMat
 import { _TypeStore } from '../../../../../Misc/typeStore';
 import { AbstractMesh } from '../../../../../Meshes/abstractMesh';
 import { NodeMaterialConnectionPointCustomObject } from "../../../nodeMaterialConnectionPointCustomObject";
+import { Scene } from '../../../../../scene';
 
 export class AmbientOcclusionBlock extends NodeMaterialBlock {
 
@@ -90,6 +91,20 @@ export class AmbientOcclusionBlock extends NodeMaterialBlock {
 
         return this;
     }
+
+    public serialize(): any {
+        let serializationObject = super.serialize();
+
+        serializationObject.useAmbientInGrayScale = this.useAmbientInGrayScale;
+
+        return serializationObject;
+    }
+
+    public _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {
+        super._deserialize(serializationObject, scene, rootUrl);
+
+        this.useAmbientInGrayScale = serializationObject.useAmbientInGrayScale;
+    }
 }
 
 _TypeStore.RegisteredTypes["BABYLON.ambientOcclusionBlock"] = AmbientOcclusionBlock;

+ 30 - 11
src/Materials/Node/Blocks/Fragment/PBR/pbrMetallicRoughnessBlock.ts

@@ -779,9 +779,21 @@ export class PBRMetallicRoughnessBlock extends NodeMaterialBlock {
             serializationObject.lightId = this.light.id;
         }
 
-        /*if (this.texture) {
-            serializationObject.texture = this.texture.serialize();
-        }*/
+        serializationObject.useAlphaFromAlbedoTexture = this.useAlphaFromAlbedoTexture;
+        serializationObject.useAlphaTest = this.useAlphaTest;
+        serializationObject.alphaTestCutoff = this.alphaTestCutoff;
+        serializationObject.useAlphaBlending = this.useAlphaBlending;
+        serializationObject.opacityRGB = this.opacityRGB;
+        serializationObject.useRadianceOverAlpha = this.useRadianceOverAlpha;
+        serializationObject.useSpecularOverAlpha = this.useSpecularOverAlpha;
+        serializationObject.enableSpecularAntiAliasing = this.enableSpecularAntiAliasing;
+        serializationObject.useEnergyConservation = this.useEnergyConservation;
+        serializationObject.useRadianceOcclusion = this.useRadianceOcclusion;
+        serializationObject.useHorizonOcclusion = this.useHorizonOcclusion;
+        serializationObject.unlit = this.unlit;
+        serializationObject.debugMode = this.debugMode;
+        serializationObject.debugLimit = this.debugLimit;
+        serializationObject.debugFactor = this.debugFactor;
 
         return serializationObject;
     }
@@ -793,14 +805,21 @@ export class PBRMetallicRoughnessBlock extends NodeMaterialBlock {
             this.light = scene.getLightByID(serializationObject.lightId);
         }
 
-        /*if (serializationObject.texture) {
-            rootUrl = serializationObject.texture.url.indexOf("data:") === 0 ? "" : rootUrl;
-            if (serializationObject.texture.isCube) {
-                this.texture = CubeTexture.Parse(serializationObject.texture, scene, rootUrl);
-            } else {
-                this.texture = Texture.Parse(serializationObject.texture, scene, rootUrl);
-            }
-        }*/
+        this.useAlphaFromAlbedoTexture = serializationObject.useAlphaFromAlbedoTexture;
+        this.useAlphaTest = serializationObject.useAlphaTest;
+        this.alphaTestCutoff = serializationObject.alphaTestCutoff;
+        this.useAlphaBlending = serializationObject.useAlphaBlending;
+        this.opacityRGB = serializationObject.opacityRGB;
+        this.useRadianceOverAlpha = serializationObject.useRadianceOverAlpha;
+        this.useSpecularOverAlpha = serializationObject.useSpecularOverAlpha;
+        this.enableSpecularAntiAliasing = serializationObject.enableSpecularAntiAliasing;
+        this.useEnergyConservation = serializationObject.useEnergyConservation;
+        this.useRadianceOcclusion = serializationObject.useRadianceOcclusion;
+        this.useHorizonOcclusion = serializationObject.useHorizonOcclusion;
+        this.unlit = serializationObject.unlit;
+        this.debugMode = serializationObject.debugMode;
+        this.debugLimit = serializationObject.debugLimit;
+        this.debugFactor = serializationObject.debugFactor;
     }
 }
 

+ 23 - 0
src/Materials/Node/Blocks/Fragment/PBR/reflectivityBlock.ts

@@ -8,6 +8,7 @@ import { NodeMaterialBlockConnectionPointTypes } from '../../../Enums/nodeMateri
 import { NodeMaterialBlockTargets } from '../../../Enums/nodeMaterialBlockTargets';
 import { NodeMaterialConnectionPointCustomObject } from "../../../nodeMaterialConnectionPointCustomObject";
 import { NodeMaterialConnectionPoint, NodeMaterialConnectionPointDirection } from '../../../nodeMaterialBlockConnectionPoint';
+import { Scene } from '../../../../../scene';
 
 export class ReflectivityBlock extends NodeMaterialBlock {
 
@@ -134,6 +135,28 @@ export class ReflectivityBlock extends NodeMaterialBlock {
 
         return this;
     }
+
+    public serialize(): any {
+        let serializationObject = super.serialize();
+
+        serializationObject.useAmbientOcclusionFromMetallicTextureRed = this.useAmbientOcclusionFromMetallicTextureRed;
+        serializationObject.useMetallnessFromMetallicTextureBlue = this.useMetallnessFromMetallicTextureBlue;
+        serializationObject.useRoughnessFromMetallicTextureAlpha = this.useRoughnessFromMetallicTextureAlpha;
+        serializationObject.useRoughnessFromMetallicTextureGreen = this.useRoughnessFromMetallicTextureGreen;
+        serializationObject.useMetallicF0FactorFromMetallicTexture = this.useMetallicF0FactorFromMetallicTexture;
+
+        return serializationObject;
+    }
+
+    public _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {
+        super._deserialize(serializationObject, scene, rootUrl);
+
+        this.useAmbientOcclusionFromMetallicTextureRed = serializationObject.useAmbientOcclusionFromMetallicTextureRed;
+        this.useMetallnessFromMetallicTextureBlue = serializationObject.useMetallnessFromMetallicTextureBlue;
+        this.useRoughnessFromMetallicTextureAlpha = serializationObject.useRoughnessFromMetallicTextureAlpha;
+        this.useRoughnessFromMetallicTextureGreen = serializationObject.useRoughnessFromMetallicTextureGreen;
+        this.useMetallicF0FactorFromMetallicTexture = serializationObject.useMetallicF0FactorFromMetallicTexture;
+    }
 }
 
 _TypeStore.RegisteredTypes["BABYLON.ReflectivityBlock"] = ReflectivityBlock;