Browse Source

Merge pull request #3683 from TrevorDev/fixEnableDisableEffect

Fix enable disable effect
David Catuhe 7 years ago
parent
commit
bd848b40b1

+ 1 - 1
dist/preview release/what's new.md

@@ -71,6 +71,6 @@
 
 ## Breaking changes
 
-- Removed unused PostProcessRenderPass class and extended postProcessingRenderingEffect to support multiple PostProcesses ([trevordev](https://github.com/trevordev))
+- Removed the unused PostProcessRenderPass class and extended postProcessingRenderingEffect to support multiple PostProcesses ([trevordev](https://github.com/trevordev))
 - VertexData.merge no longer supports merging of data that do not have the same set of attributes. ([bghgary](https://github.com/bghgary)]
 - glTF 2.0 loader will now create a mesh for each primitive instead of merging the primitives together into one mesh. ([bghgary](https://github.com/bghgary)]

+ 10 - 7
src/PostProcess/RenderPipeline/babylon.postProcessRenderEffect.ts

@@ -5,7 +5,7 @@ module BABYLON {
      * @example https://doc.babylonjs.com/how_to/how_to_use_postprocessrenderpipeline
      */
     export class PostProcessRenderEffect {
-        private _postProcesses: any;
+        private _postProcesses: {[Key:string]:Array<PostProcess>};
         private _getPostProcesses: () => Nullable<PostProcess | Array<PostProcess>>;
 
         private _singleInstance: boolean;
@@ -166,7 +166,7 @@ module BABYLON {
          * @param cameras The camera to enable.
          */
         public _enable(cameras: any): void {
-            var cams = Tools.MakeArray(cameras || this._cameras);
+            var cams:Nullable<Array<Camera>> = Tools.MakeArray(cameras || this._cameras);
 
             if (!cams) {
                 return;
@@ -178,7 +178,9 @@ module BABYLON {
 
                 for (var j = 0; j < this._indicesForCamera[cameraName].length; j++) {
                     if (camera._postProcesses[this._indicesForCamera[cameraName][j]] === undefined) {
-                        cameras[i].attachPostProcess(this._postProcesses[this._singleInstance ? 0 : cameraName], this._indicesForCamera[cameraName][j]);
+                        this._postProcesses[this._singleInstance ? 0 : cameraName].forEach((postProcess)=>{
+                            cams![i].attachPostProcess(postProcess, this._indicesForCamera[cameraName][j]);
+                        });
                     }
                 }
             }
@@ -199,7 +201,7 @@ module BABYLON {
          * @param cameras The camera to disable.
          */
         public _disable(cameras: any): void {
-            var cams = Tools.MakeArray(cameras || this._cameras);
+            var cams:Nullable<Array<Camera>> = Tools.MakeArray(cameras || this._cameras);
 
             if (!cams) {
                 return;
@@ -207,9 +209,10 @@ module BABYLON {
 
             for (var i = 0; i < cams.length; i++) {
                 var camera = cams[i];
-                var cameraName = camera.Name;
-
-                camera.detachPostProcess(this._postProcesses[this._singleInstance ? 0 : cameraName]);
+                var cameraName = camera.name;
+                this._postProcesses[this._singleInstance ? 0 : cameraName].forEach((postProcess)=>{
+                    camera.detachPostProcess(postProcess);
+                });
             }
         }