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.
 
 
 

105 regels
1.9 KiB

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