Pārlūkot izejas kodu

Merge pull request #6719 from julien-moreau/master

Fixed StandardRenderingPipeline and serialization/parsing CubeTexture
David Catuhe 6 gadi atpakaļ
vecāks
revīzija
205be9c2f0

+ 3 - 1
src/Materials/Textures/cubeTexture.ts

@@ -81,6 +81,8 @@ export class CubeTexture extends BaseTexture {
     }
 
     private _noMipmap: boolean;
+
+    @serialize("files")
     private _files: string[];
     private _extensions: string[];
 
@@ -317,7 +319,7 @@ export class CubeTexture extends BaseTexture {
             if (parsedTexture.prefiltered) {
                 prefiltered = parsedTexture.prefiltered;
             }
-            return new CubeTexture(rootUrl + parsedTexture.name, scene, parsedTexture.extensions, false, null, null, null, undefined, prefiltered);
+            return new CubeTexture(rootUrl + parsedTexture.name, scene, parsedTexture.extensions, false, parsedTexture.files || null, null, null, undefined, prefiltered);
         }, parsedTexture, scene);
 
         // Local Cubemaps

+ 10 - 1
src/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.ts

@@ -335,6 +335,8 @@ export class StandardRenderingPipeline extends PostProcessRenderPipeline impleme
 
     private _floatTextureType: number;
 
+    private _camerasToBeAttached: Array<Camera> = [];
+
     @serialize()
     private _ratio: number;
 
@@ -550,7 +552,9 @@ export class StandardRenderingPipeline extends PostProcessRenderPipeline impleme
      */
     constructor(name: string, scene: Scene, ratio: number, originalPostProcess: Nullable<PostProcess> = null, cameras?: Camera[]) {
         super(scene.getEngine(), name);
-        this._cameras = cameras || [];
+        this._cameras = cameras || scene.cameras;
+        this._cameras = this._cameras.slice();
+        this._camerasToBeAttached = this._cameras.slice();
 
         // Initialize
         this._scene = scene;
@@ -570,6 +574,11 @@ export class StandardRenderingPipeline extends PostProcessRenderPipeline impleme
         var scene = this._scene;
 
         this._disposePostProcesses();
+        if (this._cameras !== null) {
+            this._scene.postProcessRenderPipelineManager.detachCamerasFromRenderPipeline(this._name, this._cameras);
+            // get back cameras to be used to reattach pipeline
+            this._cameras = this._camerasToBeAttached.slice();
+        }
         this._reset();
 
         // Create pass post-process