projects/atft/src/lib/effect/compose/abstract-compose-effect.ts
AfterViewInit
OnDestroy
OnChanges
Properties |
|
Methods |
|
constructor(rendererService: RendererService, composer: EffectComposerComponent)
|
|||||||||
Parameters :
|
Abstract applyChanges | ||||||
applyChanges(changes: SimpleChanges)
|
||||||
Parameters :
Returns :
boolean
|
Protected disable |
disable()
|
Returns :
void
|
Protected enable |
enable()
|
Returns :
void
|
Abstract initPasses |
initPasses()
|
Returns :
void
|
Public ngAfterViewInit |
ngAfterViewInit()
|
Returns :
void
|
Public ngOnChanges | ||||||
ngOnChanges(changes: SimpleChanges)
|
||||||
Parameters :
Returns :
void
|
ngOnDestroy |
ngOnDestroy()
|
Returns :
void
|
Protected pass |
Type : T[]
|
Default value : []
|
import {AfterViewInit, Directive, OnChanges, OnDestroy, Optional, SimpleChanges, SkipSelf} from '@angular/core';
import {RendererService} from '../../renderer/renderer.service';
import {EffectComposerComponent} from './effect-composer.component';
import {Pass} from 'three/examples/jsm/postprocessing/Pass';
@Directive()
export abstract class AbstractComposeEffect<T extends Pass> implements AfterViewInit, OnDestroy, OnChanges {
protected pass: T[] = [];
constructor(
protected rendererService: RendererService,
@SkipSelf() @Optional() protected composer: EffectComposerComponent
) {
// console.log('AbstractComposeEffect.constructor', parentScene);
}
protected enable() {
if (this.composer) {
// console.log('AbstractComposeEffect.enable', this.rendererService);
this.initPasses();
this.pass.forEach(pass => this.composer.addPass(pass));
this.rendererService.render();
}
}
protected disable() {
if (this.composer) {
// console.log('AbstractComposeEffect.disable');
this.pass.forEach(pass => this.composer.removePass(pass));
this.rendererService.render();
}
}
public ngAfterViewInit() {
this.enable();
}
ngOnDestroy(): void {
this.disable();
}
public ngOnChanges(changes: SimpleChanges) {
if (!this.pass) {
return;
}
if (this.applyChanges(changes)) {
this.rendererService.render();
}
}
abstract initPasses() : void;
abstract applyChanges(changes: SimpleChanges): boolean;
}