UNPKG

mdx-m3-viewer

Version:

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

86 lines (75 loc) 2.12 kB
import GenericObject from './genericobject'; /** * An MDX ribbon emitter. */ export default class RibbonEmitter extends GenericObject { /** * @param {MdxModel} model * @param {MdxParserParticleEmitter} emitter * @param {number} index */ constructor(model, emitter, index) { super(model, emitter, index); this.layer = model.materials[emitter.materialId][0]; this.texture = model.textures[this.layer.textureId]; this.heightAbove = emitter.heightAbove; this.heightBelow = emitter.heightBelow; this.alpha = emitter.alpha; this.color = emitter.color; this.lifeSpan = emitter.lifeSpan; this.textureSlot = emitter.textureSlot; this.emissionRate = emitter.emissionRate; this.gravity = emitter.gravity; this.dimensions = [emitter.columns, emitter.rows]; this.cellWidth = 1 / emitter.columns; this.cellHeight = 1 / emitter.rows; } /** * @param {Float32Array} out * @param {ModelInstance} instance * @return {number} */ getHeightBelow(out, instance) { return this.getFloatValue(out, 'KRHB', instance, this.heightBelow); } /** * @param {Float32Array} out * @param {ModelInstance} instance * @return {number} */ getHeightAbove(out, instance) { return this.getFloatValue(out, 'KRHA', instance, this.heightAbove); } /** * @param {Uint32Array} out * @param {ModelInstance} instance * @return {number} */ getTextureSlot(out, instance) { return this.getUintValue(out, 'KRTX', instance, 0); } /** * @param {vec3} out * @param {ModelInstance} instance * @return {number} */ getColor(out, instance) { return this.getVector3Value(out, 'KRCO', instance, this.color); } /** * @param {Float32Array} out * @param {ModelInstance} instance * @return {number} */ getAlpha(out, instance) { return this.getFloatValue(out, 'KRAL', instance, this.alpha); } /** * @param {Float32Array} out * @param {ModelInstance} instance * @return {number} */ getVisibility(out, instance) { return this.getFloatValue(out, 'KRVS', instance, 1); } }