define([ 'js/rendering/effects', 'js/rendering/renderer' ], function ( effects, renderer ) { return { type: 'light', lightCd: 0, lightO: {}, emitters: {}, range: 3, init: function (blueprint) { this.blueprint = this.blueprint || {}; let x = this.obj.x; let y = this.obj.y; let range = this.range; let halfRange = (range - 1) / 2; for (let i = 0; i < range; i++) { for (let j = 0; j < range; j++) { let n = i + '|' + j; let maxAlpha = (1 + ((halfRange * 2) - (Math.abs(halfRange - i) + Math.abs(halfRange - j)))) * 0.1; this.emitters[n] = renderer.buildEmitter({ obj: this.obj, pos: { x: ((x + i - halfRange) * scale) + (scale / 2), y: ((y + j - halfRange) * scale) + (scale / 2) }, scale: { start: { min: 24, max: 32 }, end: { min: 12, max: 22 } }, color: this.blueprint.color || { start: ['ffeb38'], end: ['ffeb38', 'ff6942', 'd43346'] }, alpha: { start: maxAlpha, end: 0 }, frequency: 0.9 + (~~(Math.random() * 10) / 10), blendMode: 'screen', lifetime: this.blueprint.lifetime || { min: 1, max: 4 }, speed: { start: { min: 0, max: 4 }, end: { min: 0, max: 2 } }, randomSpeed: true, randomColor: true, randomScale: true }); } } this.setVisible(this.obj.isVisible); }, update: function () { }, setVisible: function (visible) { let emitters = this.emitters; for (let p in emitters) emitters[p].emit = visible; }, destroy: function () { let keys = Object.keys(this.emitters); for (let i = 0; i < keys.length; i++) { let emitter = this.emitters[keys[i]]; delete this.emitters[keys[i]]; renderer.destroyEmitter(emitter); } } }; });