You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

104 lines
1.9 KiB

  1. define([
  2. 'js/rendering/effects',
  3. 'js/rendering/renderer'
  4. ], function (
  5. effects,
  6. renderer
  7. ) {
  8. return {
  9. type: 'light',
  10. lightCd: 0,
  11. lightO: {},
  12. emitters: {},
  13. range: 3,
  14. init: function (blueprint) {
  15. this.blueprint = this.blueprint || {};
  16. let x = this.obj.x;
  17. let y = this.obj.y;
  18. let range = this.range;
  19. let halfRange = (range - 1) / 2;
  20. for (let i = 0; i < range; i++) {
  21. for (let j = 0; j < range; j++) {
  22. let n = i + '|' + j;
  23. let maxAlpha = (1 + ((halfRange * 2) - (Math.abs(halfRange - i) + Math.abs(halfRange - j)))) * 0.1;
  24. this.emitters[n] = renderer.buildEmitter({
  25. obj: this.obj,
  26. pos: {
  27. x: ((x + i - halfRange) * scale) + (scale / 2),
  28. y: ((y + j - halfRange) * scale) + (scale / 2)
  29. },
  30. scale: {
  31. start: {
  32. min: 24,
  33. max: 32
  34. },
  35. end: {
  36. min: 12,
  37. max: 22
  38. }
  39. },
  40. color: this.blueprint.color || {
  41. start: ['ffeb38'],
  42. end: ['ffeb38', 'ff6942', 'd43346']
  43. },
  44. alpha: {
  45. start: maxAlpha,
  46. end: 0
  47. },
  48. frequency: 0.9 + (~~(Math.random() * 10) / 10),
  49. blendMode: 'screen',
  50. lifetime: this.blueprint.lifetime || {
  51. min: 1,
  52. max: 4
  53. },
  54. speed: {
  55. start: {
  56. min: 0,
  57. max: 4
  58. },
  59. end: {
  60. min: 0,
  61. max: 2
  62. }
  63. },
  64. randomSpeed: true,
  65. randomColor: true,
  66. randomScale: true
  67. });
  68. }
  69. }
  70. this.setVisible(this.obj.isVisible);
  71. },
  72. update: function () {
  73. },
  74. setVisible: function (visible) {
  75. let emitters = this.emitters;
  76. for (let p in emitters)
  77. emitters[p].emit = visible;
  78. },
  79. destroy: function () {
  80. let keys = Object.keys(this.emitters);
  81. for (let i = 0; i < keys.length; i++) {
  82. let emitter = this.emitters[keys[i]];
  83. delete this.emitters[keys[i]];
  84. renderer.destroyEmitter(emitter);
  85. }
  86. }
  87. };
  88. });