File

projects/atft/src/lib/effect/compose/abstract-compose-effect.ts

Implements

AfterViewInit OnDestroy OnChanges

Index

Properties
Methods

Constructor

constructor(rendererService: RendererService, composer: EffectComposerComponent)
Parameters :
Name Type Optional
rendererService RendererService No
composer EffectComposerComponent No

Methods

Abstract applyChanges
applyChanges(changes: SimpleChanges)
Parameters :
Name Type Optional
changes SimpleChanges No
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 :
Name Type Optional
changes SimpleChanges No
Returns : void
ngOnDestroy
ngOnDestroy()
Returns : void

Properties

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;


}

results matching ""

    No results matching ""