UNPKG

mdx-m3-viewer

Version:

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

57 lines (44 loc) 1.52 kB
import ParticleEmitter2Object from './particleemitter2object'; import MdxModelInstance from './modelinstance'; import MdxNode from './node'; import MdxEmitter from './emitter'; import Particle2 from './particle2'; const emissionRateHeap = new Float32Array(1); /** * An MDX particle emitter type 2. */ export default class ParticleEmitter2 extends MdxEmitter { node: MdxNode; lastEmissionKey: number = -1; constructor(instance: MdxModelInstance, emitterObject: ParticleEmitter2Object) { super(instance, emitterObject); this.node = instance.nodes[emitterObject.index]; } updateEmission(dt: number) { let instance = <MdxModelInstance>this.instance; if (instance.allowParticleSpawn) { let emitterObject = <ParticleEmitter2Object>this.emitterObject; let keyframe = emitterObject.getEmissionRate(emissionRateHeap, instance.sequence, instance.frame, instance.counter); if (emitterObject.squirt) { if (keyframe !== this.lastEmissionKey) { this.currentEmission += emissionRateHeap[0]; } this.lastEmissionKey = keyframe; } else { this.currentEmission += emissionRateHeap[0] * dt; } } } emit() { let emitterObject = <ParticleEmitter2Object>this.emitterObject; if (emitterObject.head) { this.emitObject(0); } if (emitterObject.tail) { this.emitObject(1); } } createObject(): Particle2 { return new Particle2(this); } }