define([ 'js/rendering/renderer' ], function ( renderer ) { return { type: 'particles', emitter: null, init: function (blueprint) { this.blueprint = this.blueprint || {}; this.blueprint.pos = { x: (this.obj.x * scale) + (scale / 2), y: (this.obj.y * scale) + (scale / 2) }; this.ttl = blueprint.ttl; this.blueprint.obj = this.obj; this.emitter = renderer.buildEmitter(this.blueprint); this.setVisible(this.obj.isVisible); }, setVisible: function (visible) { //Sometimes, we make emitters stop emitting for a reason // for example, when an explosion stops if (!this.emitter.disabled) this.emitter.emit = visible; }, update: function () { const { ttl, destroyObject, emitter, obj } = this; if (ttl !== null) { this.ttl--; if (this.ttl <= 0) { if (destroyObject) this.obj.destroyed = true; else this.destroyed = true; return; } } if (!emitter.emit) return; emitter.spawnPos.x = (obj.x * scale) + (scale / 2) + obj.offsetX; emitter.spawnPos.y = (obj.y * scale) + (scale / 2) + obj.offsetY; }, destroy: function () { renderer.destroyEmitter(this.emitter); } }; });