CVEffects.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. var registeredEffects = {};
  2. function CVEffects(elem) {
  3. var i;
  4. var len = elem.data.ef ? elem.data.ef.length : 0;
  5. this.filters = [];
  6. var filterManager;
  7. for (i = 0; i < len; i += 1) {
  8. filterManager = null;
  9. var type = elem.data.ef[i].ty;
  10. if (registeredEffects[type]) {
  11. var Effect = registeredEffects[type].effect;
  12. filterManager = new Effect(elem.effectsManager.effectElements[i], elem);
  13. }
  14. if (filterManager) {
  15. this.filters.push(filterManager);
  16. }
  17. }
  18. if (this.filters.length) {
  19. elem.addRenderableComponent(this);
  20. }
  21. }
  22. CVEffects.prototype.renderFrame = function (_isFirstFrame) {
  23. var i;
  24. var len = this.filters.length;
  25. for (i = 0; i < len; i += 1) {
  26. this.filters[i].renderFrame(_isFirstFrame);
  27. }
  28. };
  29. CVEffects.prototype.getEffects = function (type) {
  30. var i;
  31. var len = this.filters.length;
  32. var effects = [];
  33. for (i = 0; i < len; i += 1) {
  34. if (this.filters[i].type === type) {
  35. effects.push(this.filters[i]);
  36. }
  37. }
  38. return effects;
  39. };
  40. export function registerEffect(id, effect) {
  41. registeredEffects[id] = {
  42. effect,
  43. };
  44. }
  45. export default CVEffects;