Home Reference Source

src/components/Container.js

import Sprite from './Sprite';
import { RenderTargetWrapper } from '../systems/RenderSystem';

export default class Container extends Sprite {

  static factory() {
    return new Container();
  }

  get renderTargetId() {
    return this._renderTarget.id;
  }

  constructor() {
    super();

    const rt = this._renderTarget = new RenderTargetWrapper();
    rt.pushPopMode = true;
    this.overrideBaseTexture = rt.id;
  }

  dispose() {
    super.dispose();

    const { _renderTarget } = this;
    if (!!_renderTarget) {
      _renderTarget.dipose();
    }

    this._renderTarget = null;
  }

  onRender(gl, renderer, deltaTime, layer = null) {
    const { _renderTarget, width, height } = this;
    if (!_renderTarget) {
      return;
    }

    if (_renderTarget.width !== width || _renderTarget.height !== height) {
      _renderTarget.width = width;
      _renderTarget.height = height;
    }
    _renderTarget.enable(renderer);
    // TODO: build projection and perform view action on children.
    _renderTarget.disable();
    super.onRender(gl, renderer, deltaTime, layer);
  }

}