@@ -173,6 +173,9 @@ import { CameraFrameOptions, RenderPassCameraFrame } from './render-pass-camera-
173
173
* @category Render Pass
174
174
*/
175
175
class CameraFrame {
176
+ /** @private */
177
+ _enabled = true ;
178
+
176
179
/**
177
180
* Rendering settings.
178
181
*
@@ -303,7 +306,7 @@ class CameraFrame {
303
306
Debug . assert ( cameraComponent , 'CameraFrame: cameraComponent must be defined' ) ;
304
307
305
308
this . updateOptions ( ) ;
306
- this . enabled = true ;
309
+ this . enable ( ) ;
307
310
}
308
311
309
312
/**
@@ -314,40 +317,44 @@ class CameraFrame {
314
317
}
315
318
316
319
enable ( ) {
317
- if ( ! this . renderPassCamera ) {
318
- const cameraComponent = this . cameraComponent ;
319
- this . renderPassCamera = new RenderPassCameraFrame ( this . app , cameraComponent , this . options ) ;
320
- cameraComponent . renderPasses = [ this . renderPassCamera ] ;
321
- }
320
+ Debug . assert ( ! this . renderPassCamera ) ;
321
+
322
+ const cameraComponent = this . cameraComponent ;
323
+ this . renderPassCamera = new RenderPassCameraFrame ( this . app , cameraComponent , this . options ) ;
324
+ cameraComponent . renderPasses = [ this . renderPassCamera ] ;
322
325
}
323
326
324
327
disable ( ) {
325
- if ( this . renderPassCamera ) {
326
- const cameraComponent = this . cameraComponent ;
327
- cameraComponent . renderPasses ?. forEach ( ( renderPass ) => {
328
- renderPass . destroy ( ) ;
329
- } ) ;
330
- cameraComponent . renderPasses = [ ] ;
331
- cameraComponent . rendering = null ;
332
-
333
- cameraComponent . jitter = 0 ;
334
-
335
- // no longer HDR rendering
336
- cameraComponent . gammaCorrection = GAMMA_SRGB ;
337
- }
328
+ Debug . assert ( this . renderPassCamera ) ;
329
+
330
+ const cameraComponent = this . cameraComponent ;
331
+ cameraComponent . renderPasses ?. forEach ( ( renderPass ) => {
332
+ renderPass . destroy ( ) ;
333
+ } ) ;
334
+ cameraComponent . renderPasses = [ ] ;
335
+ cameraComponent . rendering = null ;
336
+
337
+ cameraComponent . jitter = 0 ;
338
+
339
+ // no longer HDR rendering
340
+ cameraComponent . gammaCorrection = GAMMA_SRGB ;
341
+
342
+ this . renderPassCamera = null ;
338
343
}
339
344
340
345
/**
341
- * Sets the enabled state of the camera frame. This disabled the render passes, and releases
342
- * any resources.
346
+ * Sets the enabled state of the camera frame. Passing false will release associated resources.
343
347
*
344
348
* @type {boolean }
345
349
*/
346
350
set enabled ( value ) {
347
- if ( value ) {
348
- this . enable ( ) ;
349
- } else {
350
- this . disable ( ) ;
351
+ if ( this . _enabled !== value ) {
352
+ if ( value ) {
353
+ this . enable ( ) ;
354
+ } else {
355
+ this . disable ( ) ;
356
+ }
357
+ this . _enabled = value ;
351
358
}
352
359
}
353
360
@@ -357,7 +364,7 @@ class CameraFrame {
357
364
* @type {boolean }
358
365
*/
359
366
get enabled ( ) {
360
- return this . renderPassCamera !== null ;
367
+ return this . _enabled ;
361
368
}
362
369
363
370
updateOptions ( ) {
@@ -382,7 +389,7 @@ class CameraFrame {
382
389
*/
383
390
update ( ) {
384
391
385
- if ( ! this . enabled ) return ;
392
+ if ( ! this . _enabled ) return ;
386
393
387
394
const cameraComponent = this . cameraComponent ;
388
395
const { options, renderPassCamera, rendering, bloom, grading, vignette, fringing, taa, ssao } = this ;
0 commit comments