UNPKG

mdx-m3-viewer

Version:

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

65 lines (53 loc) 2.34 kB
import ParticleEmitter from '../../../parsers/mdlx/particleemitter'; import MdxModel from './model'; import GenericObject from './genericobject'; /** * An MDX particle emitter. */ export default class ParticleEmitterObject extends GenericObject { internalModel: MdxModel | null = null; speed: number; latitude: number; longitude: number; lifeSpan: number; gravity: number; emissionRate: number; ok: boolean = false; constructor(model: MdxModel, emitter: ParticleEmitter, index: number) { super(model, emitter, index); this.speed = emitter.speed; this.latitude = emitter.latitude; this.longitude = emitter.longitude; this.lifeSpan = emitter.lifeSpan; this.gravity = emitter.gravity; this.emissionRate = emitter.emissionRate; model.viewer.load(emitter.path.replace(/\\/g, '/').toLowerCase().replace('.mdl', '.mdx'), model.pathSolver, model.solverParams) .then((model) => { if (model) { this.internalModel = <MdxModel>model; this.ok = true; } }); } getSpeed(out: Float32Array, sequence: number, frame: number, counter: number) { return this.getScalarValue(out, 'KPES', sequence, frame, counter, this.speed); } getLatitude(out: Float32Array, sequence: number, frame: number, counter: number) { return this.getScalarValue(out, 'KPLTV', sequence, frame, counter, this.latitude); } getLongitude(out: Float32Array, sequence: number, frame: number, counter: number) { return this.getScalarValue(out, 'KPLN', sequence, frame, counter, this.longitude); } getLifeSpan(out: Float32Array, sequence: number, frame: number, counter: number) { return this.getScalarValue(out, 'KPEL', sequence, frame, counter, this.lifeSpan); } getGravity(out: Float32Array, sequence: number, frame: number, counter: number) { return this.getScalarValue(out, 'KPEG', sequence, frame, counter, this.gravity); } getEmissionRate(out: Float32Array, sequence: number, frame: number, counter: number) { return this.getScalarValue(out, 'KPEE', sequence, frame, counter, this.emissionRate); } getVisibility(out: Float32Array, sequence: number, frame: number, counter: number) { return this.getScalarValue(out, 'KPEV', sequence, frame, counter, 1); } }