spritejs/spritejs

View on GitHub
src/utils/render_event.js

Summary

Maintainability
B
5 hrs
Test Coverage
D
69%
export default function applyRenderEvent(target, mesh) {
  if(!mesh) return;
  const beforeRenderHandlers = target.getListeners('beforerender');
  const afterRenderHandlers = target.getListeners('afterrender');

  if(beforeRenderHandlers.length && !mesh.beforeRender) {
    mesh.beforeRender = (context) => {
      target.dispatchEvent({
        type: 'beforerender',
        detail: {context},
      });
    };
  } else if(!beforeRenderHandlers.length) {
    mesh.beforeRender = null;
  }

  if(afterRenderHandlers.length && !mesh.afterRender) {
    mesh.afterRender = (context) => {
      target.dispatchEvent({
        type: 'afterrender',
        detail: {context},
      });
    };
  } else if(!afterRenderHandlers.length) {
    mesh.afterRender = null;
  }
}