UNPKG

mdx-m3-viewer

Version:

A browser WebGL model viewer. Mainly focused on models of the games Warcraft 3 and Starcraft 2.

69 lines (53 loc) 1.46 kB
import RibbonEmitterObject from './ribbonemitterobject'; import MdxModelInstance from './modelinstance'; import MdxEmitter from './emitter'; import Ribbon from './ribbon'; /** * A ribbon emitter. */ export default class RibbonEmitter extends MdxEmitter { first: Ribbon | null = null; last: Ribbon | null = null; updateEmission(dt: number) { let instance = <MdxModelInstance>this.instance; if (instance.allowParticleSpawn) { let emitterObject = <RibbonEmitterObject>this.emitterObject; // It doesn't make sense to emit more than 1 ribbon at the same time. this.currentEmission = Math.min(this.currentEmission + emitterObject.emissionRate * dt, 1); } } emit() { let ribbon = <Ribbon>this.emitObject(); let last = this.last; if (last) { last.next = ribbon; ribbon.prev = last; } else { this.first = ribbon; } this.last = ribbon; } kill(object: Ribbon) { super.kill(object); let prev = object.prev; let next = object.next; if (object === this.first) { this.first = next; } if (object === this.last) { this.first = null; this.last = null; } if (prev) { prev.next = next; } if (next) { next.prev = prev; } object.prev = null; object.next = null; } createObject(): Ribbon { return new Ribbon(this); } }